From 49e1534b33623d54286e5ae56f7a1dbcd1c6267a Mon Sep 17 00:00:00 2001 From: saucepoint Date: Fri, 15 Nov 2024 14:35:33 +0700 Subject: [PATCH] posm hack --- .../DeployPosm.s.sol/11155111/run-latest.json | 44 ++++++++++++ .../DeployPosm.s.sol/11155420/run-latest.json | 67 +++++++++++++++++++ .../DeployPosm.s.sol/1301/run-latest.json | 67 +++++++++++++++++++ .../DeployPosm.s.sol/84532/run-latest.json | 56 +++++++++------- deploy.sh | 12 ++++ script/DeployPosm.s.sol | 11 ++- 6 files changed, 226 insertions(+), 31 deletions(-) create mode 100644 broadcast/DeployPosm.s.sol/11155111/run-latest.json create mode 100644 broadcast/DeployPosm.s.sol/11155420/run-latest.json create mode 100644 broadcast/DeployPosm.s.sol/1301/run-latest.json create mode 100755 deploy.sh diff --git a/broadcast/DeployPosm.s.sol/11155111/run-latest.json b/broadcast/DeployPosm.s.sol/11155111/run-latest.json new file mode 100644 index 00000000..78f2623a --- /dev/null +++ b/broadcast/DeployPosm.s.sol/11155111/run-latest.json @@ -0,0 +1,44 @@ +{ + "transactions": [ + { + "hash": null, + "transactionType": "CREATE", + "contractName": "PositionManager", + "contractAddress": "0x03a27bad61a57c3d1f5922a8cfc87768de6fc741", + "function": null, + "arguments": [ + "0xbAc21cdee1C59CCBda4547FC531803bD0D038251", + "0x000000000022D473030F116dDEE9F6B43aC78BA3", + "200000", + "0x0000000000000000000000000000000000000000", + "0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14" + ], + "transaction": { + "from": "0x7024cc7e60d6560f0b5877da2bb921fcbf1f4375", + "gas": "0x68a858", + "value": "0x0", + "input": "0x61018080604052346105285760a0816162ea8038038091610020828561052c565b8339810103126105285780516001600160a01b03811681036105285760208201516001600160a01b03811681036105285760408301516060840151936001600160a01b03851685036105285760800151926001600160a01b03841684036105285760405161008f60408261052c565b6018815260208101907f556e697377617020763420506f736974696f6e73204e4654000000000000000082526040516100c960408261052c565b600b81526a554e492d56342d504f534d60a81b602082015281516001600160401b03811161043c575f54600181811c9116801561051e575b602082101461041e57601f81116104bc575b50806020601f821160011461045b575f91610450575b508160011b915f199060031b1c1916175f555b8051906001600160401b03821161043c5760015490600182811c92168015610432575b602083101461041e5781601f8493116103b0575b50602090601f831160011461034a575f9261033f575b50508160011b915f199060031b1c1916176001555b5190208060c0524660a05260405160208101917f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86683526040820152466060820152306080820152608081526101f460a08261052c565b51902060805260e052610100526101205261014052600160085561016052604051615d9a9081610550823960805181612dba015260a05181612d94015260c05181612e09015260e051818181610d0b015281816111a2015281816114d101528181611e4a0152818161223e015281816122f101528181612785015281816128b401528181612b1c0152818161325c015281816137c0015281816146f2015281816147eb0152818161488301528181614a0701528181614a68015281816153fa015281816155c6015281816156df01528181615789015261593701526101005181818161180b01526140ea0152610120518181816103e501528181610bbc0152818161107e015261571d015261014051818181611878015281816131ed015281816143da0152818161443b0152818161456001526145f6015261016051818181611aac01526126390152f35b015190505f80610189565b60015f9081528281209350601f198516905b8181106103985750908460019594939210610380575b505050811b0160015561019e565b01515f1960f88460031b161c191690555f8080610372565b9293602060018192878601518155019501930161035c565b60015f529091507fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6601f840160051c81019160208510610414575b90601f859493920160051c01905b8181106104065750610173565b5f81558493506001016103f9565b90915081906103eb565b634e487b7160e01b5f52602260045260245ffd5b91607f169161015f565b634e487b7160e01b5f52604160045260245ffd5b90508301515f610129565b5f8080528181209250601f198416905b8181106104a45750908360019493921061048c575b5050811b015f5561013c565b8501515f1960f88460031b161c191690555f80610480565b9192602060018192868a01518155019401920161046b565b5f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563601f830160051c81019160208410610514575b601f0160051c01905b8181106105095750610113565b5f81556001016104fc565b90915081906104f3565b90607f1690610101565b5f80fd5b601f909101601f19168101906001600160401b0382119082101761043c5760405256fe60806040526004361015610022575b3615610018575f80fd5b6100206131d6565b005b5f3560e01c80622a3e3a1461029057806301ffc9a71461028b57806305c1ee201461028657806306fdde0314610281578063081812fc1461027c578063095ea7b3146102775780630f5730f11461027257806312261ee71461026d57806316a24131146102685780631efeed331461026357806323b872dd1461025e5780632b67b570146102595780632b9261de146102545780633644e5151461024f5780633aea60f01461024a57806342842e0e146102455780634767565f146102405780634aa4a4fc1461023b5780634afe393c14610236578063502e1a16146102315780635a9d7a681461022c5780636352211e1461022757806370a082311461022257806375794a3c1461021d5780637ba03aad1461021857806386b6be7d1461021357806389097a6a1461020e57806391dd73461461020957806395d89b4114610204578063a22cb465146101ff578063ac9650d8146101fa578063ad0b27fb146101f5578063b88d4fde146101f0578063c87b56dd146101eb578063d737d0c7146101e6578063dc4c90d3146101e1578063dd46508f146101dc578063e985e9c5146101d75763f70204050361000e57612a02565b612964565b6127a9565b61273b565b6126cb565b6125b9565b61227e565b61220c565b6120f1565b612023565b611f50565b611de3565b611d9b565b611cd4565b611c3a565b611bff565b611b2a565b611ad0565b611a62565b6119ed565b6118cd565b61182e565b6117d6565b6114be565b6113ba565b61136b565b611141565b610fe2565b610cf7565b610c3e565b610be0565b610b72565b610a2b565b61094c565b6108ee565b6107b9565b6106ea565b6105fa565b610349565b73ffffffffffffffffffffffffffffffffffffffff8116036102b357565b5f80fd5b35906102c282610295565b565b9181601f840112156102b35782359167ffffffffffffffff83116102b357602083818601950101116102b357565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b9060206103469281815201906102f2565b90565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760043561037f81610295565b6024359067ffffffffffffffff82116102b3578136039160607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8401126102b35760443567ffffffffffffffff81116102b3576103e09036906004016102c4565b6060947f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1693909290843b156102b35773ffffffffffffffffffffffffffffffffffffffff604051967f2a2d80d10000000000000000000000000000000000000000000000000000000088521660048701526060602487015260c48601937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd826004013591018112156102b35781016024600482013591019467ffffffffffffffff82116102b3578160071b360386136102b35760606064890152819052869460e48601949392915f5b8181106105a8575050506105595f96948694889460448561052361050660248b99016102b7565b73ffffffffffffffffffffffffffffffffffffffff166084890152565b013560a48601527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc858403016044860152612ca5565b03925af1908161058e575b506105855750610581610575612d4b565b60405191829182610335565b0390f35b61058190610575565b8061059c5f6105a293610778565b80610720565b5f610564565b91965091929394608080826105bf6001948b612c2c565b0197019101918896959493926104df565b7fffffffff000000000000000000000000000000000000000000000000000000008116036102b357565b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760207fffffffff00000000000000000000000000000000000000000000000000000000600435610658816105d0565b167f01ffc9a70000000000000000000000000000000000000000000000000000000081149081156106c0575b8115610696575b506040519015158152f35b7f5b5e139f000000000000000000000000000000000000000000000000000000009150145f61068b565b7f80ac58cd0000000000000000000000000000000000000000000000000000000081149150610684565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35761002060043533613284565b5f9103126102b357565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60a0810190811067ffffffffffffffff82111761077357604052565b61072a565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761077357604052565b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576040515f80548060011c90600181169081156108e4575b6020831082146108b75782855260208501919081156108805750600114610830575b6105818461057581860382610778565b5f8080529250907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b81841061086c5750500161057582610820565b805484840152602090930192600101610859565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682525090151560051b01905061057582610820565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916107fe565b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576004355f526004602052602073ffffffffffffffffffffffffffffffffffffffff60405f205416604051908152f35b346102b35760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760043561098781610295565b602435805f52600260205273ffffffffffffffffffffffffffffffffffffffff60405f2054169182331415806109ed575b6109c557610020926132f2565b7f82b42900000000000000000000000000000000000000000000000000000000005f5260045ffd5b50825f52600560205260ff610a233360405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b5416156109b8565b60a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b357600435610a6181610295565b602435604435916064359260843567ffffffffffffffff81116102b357610a8c9036906004016102c4565b94824211610b4a57610b3f85610b459361002098610b39885f80998682526002602052818973ffffffffffffffffffffffffffffffffffffffff6040832054169c8d9981604051977f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad895273ffffffffffffffffffffffffffffffffffffffff60208a01911681526040890192835260608901948552608089019687528160a08a20995252525252613383565b9161343c565b82613284565b6132f2565b7f5a9165ff000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b357602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576004355f526007602052602073ffffffffffffffffffffffffffffffffffffffff60405f205416604051908152f35b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576020610c93600435610c7e81612f5b565b919082851c60020b9260081c60020b916136e6565b6fffffffffffffffffffffffffffffffff60405191168152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60609101126102b357600435610ce381610295565b90602435610cf081610295565b9060443590565b346102b357610d0536610cad565b91610d2f7f0000000000000000000000000000000000000000000000000000000000000000613841565b610fba5782610d7f610d66610d4c835f52600260205260405f2090565b5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b610da173ffffffffffffffffffffffffffffffffffffffff84169182146138e1565b73ffffffffffffffffffffffffffffffffffffffff841690610dc4821515613946565b8033148015610f62575b8015610f3d575b610dde906139ab565b610e068473ffffffffffffffffffffffffffffffffffffffff165f52600360205260405f2090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610e548573ffffffffffffffffffffffffffffffffffffffff165f52600360205260405f2090565b80546001019055610eb185610e71855f52600260205260405f2090565b9073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b610eee610ec6845f52600460205260405f2090565b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4610f2e610f27845f52600960205260405f2090565b5460ff1690565b610f3457005b61002092613a10565b50610dde610f59610d66610d4c865f52600460205260405f2090565b33149050610dd5565b50610fb5610f2733610f928773ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b9073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b610dce565b7fd4b05fe0000000000000000000000000000000000000000000000000000000005f5260045ffd5b6101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760043561101981610295565b60c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126102b35760e43567ffffffffffffffff81116102b3576110639036906004016102c4565b9160609273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b156102b35773ffffffffffffffffffffffffffffffffffffffff5f8094610559604051978896879586947f2b67b5700000000000000000000000000000000000000000000000000000000086521660048501526110ff60248501612ba7565b73ffffffffffffffffffffffffffffffffffffffff60a43561112081610295565b1660a485015260c43560c485015261010060e4850152610104840191612ca5565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760243560043561117a82610295565b60443567ffffffffffffffff81116102b35761119a9036906004016102c4565b6111c69391937f0000000000000000000000000000000000000000000000000000000000000000613841565b610fba576111d48333613b73565b1561133f5773ffffffffffffffffffffffffffffffffffffffff611203610d4c855f52600760205260405f2090565b16806112f657505f838152600960205260409020805460011790556112c6906112c2906112bc73ffffffffffffffffffffffffffffffffffffffff85169661125788610e71895f52600760205260405f2090565b6112906040519384927f8d57f6b20000000000000000000000000000000000000000000000000000000060208501528960248501612d7a565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610778565b83613c49565b1590565b6112f157507f9709492381f90bdc5938bb4e3b8e35b7e0eac8af058619e27191c5a40ce79fa95f80a3005b613c8a565b7f25fbd8be000000000000000000000000000000000000000000000000000000005f52600484905273ffffffffffffffffffffffffffffffffffffffff1660245260445ffd5b5ffd5b7f0ca968d8000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760206113a3612d91565b604051908152f35b6044359081151582036102b357565b60c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576004356113f081610295565b6024356113fc81610295565b6114046113ab565b906064359260843560a43567ffffffffffffffff81116102b35761142c9036906004016102c4565b869291924211610b4a57836114b993610b3f92610b39885f6100209c8189818f81604051977f6673cb397ee2a50b6b8401653d3638b4ac8b3db9c28aa6870ffceb7574ec2f76895273ffffffffffffffffffffffffffffffffffffffff60208a0191168152600160408a019316835260608901948552608089019687528160a08a20995252525252613383565b613f0a565b346102b3576114cc36610cad565b6114f57f0000000000000000000000000000000000000000000000000000000000000000613841565b610fba57611511610d66610d4c835f52600260205260405f2090565b9161153473ffffffffffffffffffffffffffffffffffffffff85169384146138e1565b8173ffffffffffffffffffffffffffffffffffffffff82168094611559821515613946565b80331480156117a1575b801561177c575b611573906139ab565b61159b8773ffffffffffffffffffffffffffffffffffffffff165f52600360205260405f2090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190556115e98473ffffffffffffffffffffffffffffffffffffffff165f52600360205260405f2090565b8054600101905561160684610e71855f52600260205260405f2090565b61161b610ec6845f52600460205260405f2090565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4611654610f27835f52600960205260405f2090565b61176c575b3b1591821561166c575b61002083612e63565b6040517f150b7a0200000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9490941660248501526044840191909152608060648401525f6084840181905260209250839160a49183915af18015611767577fffffffff000000000000000000000000000000000000000000000000000000007f150b7a020000000000000000000000000000000000000000000000000000000091610020935f91611738575b5016145f80611663565b61175a915060203d602011611760575b6117528183610778565b810190612e4e565b5f61172e565b503d611748565b612ce3565b611777818584613a10565b611659565b50611573611798610d66610d4c865f52600460205260405f2090565b3314905061156a565b506117d1610f2733610f928a73ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b611563565b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b357602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b9181601f840112156102b35782359167ffffffffffffffff83116102b3576020808501948460051b0101116102b357565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760043567ffffffffffffffff81116102b3576119179036906004016102c4565b60243567ffffffffffffffff81116102b35761193790369060040161189c565b9173ffffffffffffffffffffffffffffffffffffffff7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c166119c5576119a093337f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d613fd7565b5f7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d005b7f6f5ffb7e000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102b35760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b357600435611a2881610295565b73ffffffffffffffffffffffffffffffffffffffff60243591165f52600660205260405f20905f52602052602060405f2054604051908152f35b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b357602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576020611b0c600435612f2d565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35773ffffffffffffffffffffffffffffffffffffffff600435611b7a81610295565b168015611ba1575f52600360205261058160405f2054604051918291829190602083019252565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152fd5b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576020600854604051908152f35b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760c0611c76600435612f5b565b611ccd604051809373ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60a0820152f35b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576004357fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000081168091036102b3575f908152600a602090815260409182902080546001820154600292830154855173ffffffffffffffffffffffffffffffffffffffff93841681528383169581019590955260a082811c62ffffff169686019690965260b89190911c90920b6060840152166080820152f35b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576004355f526009602052602060405f2054604051908152f35b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760043567ffffffffffffffff81116102b357611e329036906004016102c4565b9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303611f285760408135189063ffffffff60408201351663ffffffe0601f8201169260608401602084013518179282019260608401359483641fffffffe08760051b16805f905b88818310611ef95790506080929150010191011017611eec576060608063ffffffff611ee1961694019201613fd7565b610581610575612d37565b633b99b53d5f526004601cfd5b8294509263ffffffe0601f60808060209687969801013599848b1817998d010135011601019201869291611eb1565b7fae18210a000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576040515f6001548060011c9060018116908115612019575b6020831082146108b75782855260208501919081156108805750600114611fc7576105818461057581860382610778565b60015f9081529250907fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b8184106120055750500161057582610820565b805484840152602090930192600101611ff2565b91607f1691611f96565b346102b35760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760043561205e81610295565b60243580151581036102b3576100209133613f0a565b602081016020825282518091526040820191602060408360051b8301019401925f915b8383106120a657505050505090565b90919293946020806120e2837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0866001960301875289516102f2565b97019301930191939290612097565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760043567ffffffffffffffff81116102b35761213b90369060040161189c565b906121458261306d565b916121536040519384610778565b8083527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06121808261306d565b015f5b8181106121fb5750505f5b8181106121a357604051806105818682612074565b5f806121b08385876130b2565b906121c060405180938193613117565b0390305af46121cd612d4b565b90156121f357906001916121e18287613124565b526121ec8186613124565b500161218e565b602081519101fd5b806060602080938801015201612183565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576004356122627f0000000000000000000000000000000000000000000000000000000000000000613841565b610fba576122708133613b73565b1561133f5761002090614040565b346102b35760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576004356122b981610295565b602435906122c682610295565b60443560643567ffffffffffffffff81116102b3576122e99036906004016102c4565b9390916123157f0000000000000000000000000000000000000000000000000000000000000000613841565b610fba57612331610d66610d4c835f52600260205260405f2090565b9161235473ffffffffffffffffffffffffffffffffffffffff86169384146138e1565b8173ffffffffffffffffffffffffffffffffffffffff82168094612379821515613946565b8033148015612584575b801561255f575b612393906139ab565b6123bb8873ffffffffffffffffffffffffffffffffffffffff165f52600360205260405f2090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190556124098473ffffffffffffffffffffffffffffffffffffffff165f52600360205260405f2090565b8054600101905561242684610e71855f52600260205260405f2090565b61243b610ec6845f52600460205260405f2090565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4612474610f27835f52600960205260405f2090565b61254f575b3b1593841561248c575b61002085612e63565b602094505f906124cc604051978896879586947f150b7a020000000000000000000000000000000000000000000000000000000086523360048701613138565b03925af18015611767577fffffffff000000000000000000000000000000000000000000000000000000007f150b7a020000000000000000000000000000000000000000000000000000000091610020935f91612530575b5016145f808080612483565b612549915060203d602011611760576117528183610778565b5f612524565b61255a818684613a10565b612479565b5061239361257b610d66610d4c865f52600460205260405f2090565b3314905061238a565b506125b4610f2733610f928b73ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b612383565b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b357600435604051907fe9dc637500000000000000000000000000000000000000000000000000000000825230600483015260248201525f8160448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa8015611767575f90612678575b6105819060405191829182610335565b503d805f833e6126888183610778565b8101906020818303126102b35780519067ffffffffffffffff82116102b3570181601f820112156102b357610581918160206126c693519101613173565b612668565b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760207f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b357602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760043567ffffffffffffffff81116102b3576127f39036906004016102c4565b60243573ffffffffffffffffffffffffffffffffffffffff7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c166119c557337f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d804211612939576040517f48c89491000000000000000000000000000000000000000000000000000000008152602060048201525f818061289a602482018789612ca5565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af18015611767576128e9575b610020613fb2565b3d805f833e6128f88183610778565b8101906020818303126102b35780519067ffffffffffffffff82116102b357019080601f830112156102b357815161293292602001613173565b50806128e1565b7fbfb22adf000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b346102b35760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b357602060ff6129f66004356129a681610295565b73ffffffffffffffffffffffffffffffffffffffff602435916129c883610295565b165f526005845260405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b54166040519015158152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360160c081126102b35760a0136102b35760a435612a4081610295565b73ffffffffffffffffffffffffffffffffffffffff604051917f6276cbbe00000000000000000000000000000000000000000000000000000000835281600435612a8981610295565b16600484015281602435612a9c81610295565b16602484015262ffffff604435612ab2816131c9565b166044840152606435612ac4816131a9565b60020b6064840152612af8608435612adb81610295565b73ffffffffffffffffffffffffffffffffffffffff166084850152565b1660a482015260208160c4815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1801561176757610581915f91612b65575b5060405160029190910b81529081906020820190565b612b87915060203d602011612b8d575b612b7f8183610778565b8101906131b4565b5f612b4f565b503d612b75565b359065ffffffffffff821682036102b357565b73ffffffffffffffffffffffffffffffffffffffff602435612bc881610295565b16815273ffffffffffffffffffffffffffffffffffffffff604435612bec81610295565b16602082015260643565ffffffffffff81168091036102b357604082015260843565ffffffffffff811681036102b35765ffffffffffff60609116910152565b65ffffffffffff612c9f6060809373ffffffffffffffffffffffffffffffffffffffff8135612c5a81610295565b16865273ffffffffffffffffffffffffffffffffffffffff6020820135612c8081610295565b16602087015283612c9360408301612b94565b16604087015201612b94565b16910152565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b6040513d5f823e3d90fd5b604051906102c2608083610778565b67ffffffffffffffff811161077357601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60405190612d46602083610778565b5f8252565b3d15612d75573d90612d5c82612cfd565b91612d6a6040519384610778565b82523d5f602084013e565b606090565b604090610346949281528160208201520191612ca5565b467f000000000000000000000000000000000000000000000000000000000000000003612ddc577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f0000000000000000000000000000000000000000000000000000000000000000604082015246606082015230608082015260808152612e4860a082610778565b51902090565b908160209103126102b35751610346816105d0565b15612e6a57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152fd5b15612ecf57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152fd5b5f52600260205273ffffffffffffffffffffffffffffffffffffffff60405f205416906102c2821515612ec8565b5f6080604051612f6a81610757565b82815282602082015282604082015282606082015201525f52600960205260405f2054807fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000165f52600a60205260405f2061306a61304d600260405193612fd085610757565b73ffffffffffffffffffffffffffffffffffffffff8154168552613032613028600183015473ffffffffffffffffffffffffffffffffffffffff8116602089015262ffffff8160a01c16604089015260b81c60020b90565b60020b6060870152565b015473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff166080830152565b91565b67ffffffffffffffff81116107735760051b60200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b91908110156131125760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102b357019081359167ffffffffffffffff83116102b35760200182360381136102b3579190565b613085565b908092918237015f815290565b80518210156131125760209160051b010190565b909273ffffffffffffffffffffffffffffffffffffffff60809381610346989616845216602083015260408201528160608201520191612ca5565b92919261317f82612cfd565b9161318d6040519384610778565b8294818452818301116102b3578281602093845f96015e010152565b8060020b036102b357565b908160209103126102b35751610346816131a9565b62ffffff8116036102b357565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633141580613244575b61321c57565b7f38bbd576000000000000000000000000000000000000000000000000000000005f5260045ffd5b5073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016331415613216565b9073ffffffffffffffffffffffffffffffffffffffff600160ff83161b92165f52600660205260405f209060081c5f5260205260405f208181541880915516156132ca57565b7f1fb09b80000000000000000000000000000000000000000000000000000000005f5260045ffd5b9073ffffffffffffffffffffffffffffffffffffffff8091845f52600460205261335a8160405f209073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b1691167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a4565b9061338c612d91565b91604051927f19010000000000000000000000000000000000000000000000000000000000008452600284015260228301525f604060428420938281528260208201520152565b91908260409103126102b3576020823592013590565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b60ff601b9116019060ff821161342857565b6133e9565b90604010156131125760400190565b90833b6135eb576041810361355f57906020926134c58361349d6134976134716134695f988801886133d3565b94909761342d565b357fff000000000000000000000000000000000000000000000000000000000000001690565b60f81c90565b935b604051948594859094939260ff6060936080840197845216602083015260408201520152565b838052039060015afa156117675773ffffffffffffffffffffffffffffffffffffffff5f51169081156135375773ffffffffffffffffffffffffffffffffffffffff160361350f57565b7f815e1d64000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f8baa579f000000000000000000000000000000000000000000000000000000005f5260045ffd5b90604082036135c35760209261357c825f946134c59401906133d3565b9290926135bd6135b86135b27f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c90565b60ff1690565b613416565b9361349f565b7f4be6321b000000000000000000000000000000000000000000000000000000005f5260045ffd5b909261363f9373ffffffffffffffffffffffffffffffffffffffff602094604051968795869485937f1626ba7e00000000000000000000000000000000000000000000000000000000855260048501612d7a565b0392165afa908115611767577f1626ba7e00000000000000000000000000000000000000000000000000000000917fffffffff00000000000000000000000000000000000000000000000000000000915f916136c7575b50160361369f57565b7fb0669cbc000000000000000000000000000000000000000000000000000000005f5260045ffd5b6136e0915060203d602011611760576117528183610778565b5f613696565b929160a092604051946026860152600685015260038401523083525f603a600c850120938160408201528160208201525220604051602081019182526006604082015260408152613738606082610778565b5190206006810180911161342857604080516020818101948552918101929092526137a792909161376c8160608101611290565b519020604051809381927f1e2eaeaf000000000000000000000000000000000000000000000000000000008352600483019190602083019252565b038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa8015611767576fffffffffffffffffffffffffffffffff915f9161380557501690565b613827915060203d60201161382b575b61381f8183610778565b810190613832565b1690565b503d613815565b908160209103126102b3575190565b602073ffffffffffffffffffffffffffffffffffffffff916024604051809481937ff135baaa0000000000000000000000000000000000000000000000000000000083527fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab236004840152165afa908115611767575f916138c2575b50151590565b6138db915060203d60201161382b5761381f8183610778565b5f6138bc565b156138e857565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152fd5b1561394d57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152fd5b156139b257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152fd5b73ffffffffffffffffffffffffffffffffffffffff613a8b9293825f526007602052818060405f20541695604051947f876fda07000000000000000000000000000000000000000000000000000000006020870152602486015216604484015216606482015260648152613a85608482610778565b82613c49565b15613a935750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011673ffffffffffffffffffffffffffffffffffffffff604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301527f876fda07000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7f8b6bc10d0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b73ffffffffffffffffffffffffffffffffffffffff613b9183612f2d565b169173ffffffffffffffffffffffffffffffffffffffff8216928314928315613c1b575b508215613bc157505090565b60ff92509073ffffffffffffffffffffffffffffffffffffffff613be7613c1693612f2d565b165f52600560205260405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b541690565b908093505f52600460205273ffffffffffffffffffffffffffffffffffffffff60405f20541614915f613bb5565b803b15613c6257815f92918360208194519301915af190565b7f7c402b21000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011673ffffffffffffffffffffffffffffffffffffffff604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301527f8d57f6b2000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7f81ea5e9e0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011673ffffffffffffffffffffffffffffffffffffffff604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301527fa9059cbb000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff27f64e40000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011673ffffffffffffffffffffffffffffffffffffffff604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301525f6024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff4b3b1bc0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b602073ffffffffffffffffffffffffffffffffffffffff807f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31931693845f5260058352613f788160405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b951515957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff88161790556040519586521693a3565b5f7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d565b90929193828403614018575f5b848110156140105760019061400a81850161400083888b6130b2565b913560f81c6141cd565b01613fe4565b509350505050565b7faaad13f7000000000000000000000000000000000000000000000000000000005f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff61406a610d4c835f52600760205260405f2090565b1690811561417d575f81815260096020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556140ba610ec6825f52600760205260405f2090565b813b6140e7575b7fa0ebb1de82db929a9153472f37d3a66dbede4436258311ad0f52a35a2c91d1505f80a3565b5a7f000000000000000000000000000000000000000000000000000000000000000080911061417857823b156102b3575f60405180927faf45dd140000000000000000000000000000000000000000000000000000000082528183878261415689600483019190602083019252565b0393f1614164575b506140c1565b8061059c5f61417293610778565b5f61415e565b6141a5565b7f237e6c28000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fed43c3a6000000000000000000000000000000000000000000000000000000005f5260045ffd5b909190600981101561429d57806141f857506141ec906102c292615251565b949390939291926152f8565b6001810361421a575061420e906102c292615251565b94939093929192615293565b600281036142495750614233614243916102c293614da3565b989097969195929594939461465a565b95614fe8565b916003831461428557505061133c91505b7f5cda29d7000000000000000000000000000000000000000000000000000000005f52600452602490565b6102c292509061429491614b9f565b93929092614bdb565b9050601181036142b857506102c29060208101359035614b61565b601581036142ea57506142e46142db6102c2928035916040602083013592013590565b9290919261465a565b91614b46565b60098103614328575061431c6143226143106102c2938035916040602083013592013590565b9382949392919361492c565b9261495a565b9161499b565b60128103614364575061435e61435861434e6102c2938035916040602083013592013590565b928294929161465a565b92614850565b91614864565b6017810361437757506102c290356147e4565b6018810361439057506102c290602081013590356146ca565b601981036143b357506102c2908035906143ad906020013561465a565b906146ac565b6020810361440657506144016102c29173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690356144e5565b6145d7565b906021821461441a575061133c915061425a565b6102c29150614460903573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016614465565b614541565b614470903090615359565b7f800000000000000000000000000000000000000000000000000000000000000082146144e05781156144cf575b81116144a75790565b7ff4d678b8000000000000000000000000000000000000000000000000000000005f5260045ffd5b90506144da5f6153f3565b9061449e565b905090565b906144f0305f615359565b907f8000000000000000000000000000000000000000000000000000000000000000831461453b578215614529575b5081116144a75790565b6145349192506153f3565b905f61451f565b50905090565b806145495750565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b156102b3575f916024839260405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af18015611767576145cd5750565b5f6102c291610778565b806145df5750565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b156102b3575f906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af18015611767576145cd5750565b73ffffffffffffffffffffffffffffffffffffffff8116600181036146a05750507f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c90565b60020361034657503090565b906146b682615472565b90816146c157505050565b6102c2926154f2565b906146d4826155bf565b90811161478c5773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691823b156102b35773ffffffffffffffffffffffffffffffffffffffff925f926040519485937f80f0b44c00000000000000000000000000000000000000000000000000000000855216600484015260248301528183604482800301925af180156117675761477e5750565b8061059c5f6102c293610778565b6102c2917f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c90614864565b7f80000000000000000000000000000000000000000000000000000000000000008114613428575f0390565b61480f81307f0000000000000000000000000000000000000000000000000000000000000000615638565b907f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c5f831215614846576143226102c2936147b8565b6102c29291614864565b90816148605761034691506155bf565b5090565b909180156149275773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b156102b3575f928360649273ffffffffffffffffffffffffffffffffffffffff948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af18015611767576149125750565b8061491e5f8093610778565b8003126102b357565b505050565b15614956577f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c90565b3090565b907f8000000000000000000000000000000000000000000000000000000000000000820361498c576103469150615472565b816148605761034691506153f3565b919081156149275773ffffffffffffffffffffffffffffffffffffffff8316614a51575060049150602090604051928380927f11da60b400000000000000000000000000000000000000000000000000000000825273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1801561176757614a365750565b614a4e9060203d60201161382b5761381f8183610778565b50565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b156102b3576040517fa584119400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152925f8460248183875af1918215611767575f95602095614af794614b32575b506156a3565b6004604051809481937f11da60b40000000000000000000000000000000000000000000000000000000083525af1801561176757614a365750565b8061059c89614b4093610778565b5f614af1565b91614b586102c2938261435e826155bf565b61435e826155bf565b906102c291614b967f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c9182614322826153f3565b614322826153f3565b919082359260208101359260408201359263ffffffff60608401351683019063ffffffff82351693602080840193860101910110611eec579190565b937f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c614c088682613b73565b15614d61575090849291614c1b84612f5b565b9590916fffffffffffffffffffffffffffffffff614c478860201c60020b8960081c60020b868a6136e6565b1691865f5260096020525f6040812055865f526002602052865f73ffffffffffffffffffffffffffffffffffffffff604082205416614c87811515612ec8565b8082526003602052604082207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8154019055614cce610ec6845f52600260205260405f2090565b614ce3610ec6845f52600460205260405f2090565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a482614d27575b5050505050505060ff16614d1e5750565b6102c290614040565b614d5596614d5094614d43614d3e614d4a966157da565b6147b8565b908a6158b7565b906159b6565b6159f3565b815f8080808080614d0d565b73ffffffffffffffffffffffffffffffffffffffff907f0ca968d8000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b9091819260a08301359260c08101359260e08201359261010083013592610120810135926101408201359263ffffffff6101608401351683019063ffffffff82351693602080840193860101910110611eec579190565b91908260a09103126102b357604051614e1281610757565b60808082948035614e2281610295565b84526020810135614e3281610295565b60208501526040810135614e45816131c9565b60408501526060810135614e58816131a9565b6060850152013591614e6983610295565b0152565b600260806102c293614ec48135614e8381610295565b859073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b60018401614f1a6020830135614ed981610295565b829073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b6040820135614f28816131c9565b81547fffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff76ffffff00000000000000000000000000000000000000006060860135614f71816131a9565b60b81b79ffffff0000000000000000000000000000000000000000000000169360a01b16911617179055013591614fa783610295565b019073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b909194969297939597600854926001840160085573ffffffffffffffffffffffffffffffffffffffff8a169961501f8b1515613946565b845f52600260205273ffffffffffffffffffffffffffffffffffffffff60405f2054166151f35761510f6151aa986151a493876102c29e61509e8661508561519c9873ffffffffffffffffffffffffffffffffffffffff165f52600360205260405f2090565b80546001019055610e71845f52600260205260405f2090565b5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a46150cd3688614dfa565b63ffffff007fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000060a066ffffff000000009320169260081b169260201b16171790565b9283615123875f52600960205260405f2090565b55837fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000168561518c6001615181847fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000165f52600a60205260405f2090565b015460b81c60020b90565b60020b156151b0575b50506157da565b923690614dfa565b906158b7565b50615aba565b6151e76151ec927fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000165f52600a60205260405f2090565b614e6d565b5f85615195565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4d494e5445440000000000000000000000000000000000006044820152fd5b909181359260208301359260408101359260608201359263ffffffff60808401351683019063ffffffff82351693602080840193860101910110611eec579190565b90959495939192937f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c6152c78382613b73565b15614d61575095614d509282614d3e6102c298996152f26152ea614d4a97612f5b565b9390926157da565b916158b7565b90959495939192937f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c61532c8382613b73565b15614d6157509561535492826152f26102c2989961534c614d4a96612f5b565b9290916157da565b615aba565b73ffffffffffffffffffffffffffffffffffffffff811661537957503190565b9073ffffffffffffffffffffffffffffffffffffffff60246020928260405195869485937f70a08231000000000000000000000000000000000000000000000000000000008552166004840152165afa908115611767575f916153da575090565b610346915060203d60201161382b5761381f8183610778565b61541e81307f0000000000000000000000000000000000000000000000000000000000000000615638565b905f82136154305750610346906147b8565b73ffffffffffffffffffffffffffffffffffffffff907f3351b260000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff811661549257504790565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152906020908290602490829073ffffffffffffffffffffffffffffffffffffffff165afa908115611767575f916153da575090565b90919073ffffffffffffffffffffffffffffffffffffffff811661552c57505f80808061552094865af11590565b6155275750565b613e4a565b919073ffffffffffffffffffffffffffffffffffffffff604051927fa9059cbb00000000000000000000000000000000000000000000000000000000845216600483015260248201525f604060208260448582885af13d15601f3d116001855114161716928281528260208201520152156155a45750565b73ffffffffffffffffffffffffffffffffffffffff16613d6a565b6155ea81307f0000000000000000000000000000000000000000000000000000000000000000615638565b905f82126155f6575090565b73ffffffffffffffffffffffffffffffffffffffff907f4c085bf1000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff809381602094165f52168252602460405f2060405194859384927ff135baaa0000000000000000000000000000000000000000000000000000000084526004840152165afa908115611767575f916153da575090565b90919073ffffffffffffffffffffffffffffffffffffffff83163003615705576102c2925073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906154f2565b9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b156102b3576040517f36c7851600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff94851660048201527f00000000000000000000000000000000000000000000000000000000000000008516602482015291841660448301529190921660648301525f908290608490829084905af180156117675761477e5750565b905f82126157e457565b7f93dafdf1000000000000000000000000000000000000000000000000000000005f5260045ffd5b91908260409103126102b3576020825192015190565b60606103469593615880836101409573ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b805160020b60a0840152602081015160020b60c0840152604081015160e08401520151610100820152816101208201520191612ca5565b95939460409161591d6158c8612cee565b60088a901c60020b81529260208a811c60020b908501528585850152866060850152845198899485947f5a6bcfda00000000000000000000000000000000000000000000000000000000865260048601615822565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1908115611767575f945f92615982575b5081949560ff1661597957505050565b6102c292615c1d565b9094506159a7915060403d6040116159af575b61599f8183610778565b81019061580c565b90935f615969565b503d615995565b6159d9906159cb8360801d8260801d03615d60565b92600f0b90600f0b03615d60565b6fffffffffffffffffffffffffffffffff169060801b1790565b929190926fffffffffffffffffffffffffffffffff8160801d9481615a1787615d6e565b91169182911610615a9f57506fffffffffffffffffffffffffffffffff929350600f0b9082615a4583615d6e565b91169283911610615a54575050565b90615a6f6fffffffffffffffffffffffffffffffff92615d6e565b907f12816f22000000000000000000000000000000000000000000000000000000005f526004521660245260445ffd5b6fffffffffffffffffffffffffffffffff90615a6f86615d6e565b908160801d600f0b91600f0b915f811280615be8575b615b865750505f811280615b4f575b615ae7575050565b90615b0c615af761133c936147b8565b6fffffffffffffffffffffffffffffffff1690565b7f31e30ad0000000000000000000000000000000000000000000000000000000005f526fffffffffffffffffffffffffffffffff91821660045216602452604490565b506fffffffffffffffffffffffffffffffff80615b6b836147b8565b16166fffffffffffffffffffffffffffffffff831610615adf565b906fffffffffffffffffffffffffffffffff615ba461133c936147b8565b7f31e30ad0000000000000000000000000000000000000000000000000000000005f526fffffffffffffffffffffffffffffffff9283166004521616602452604490565b506fffffffffffffffffffffffffffffffff615c03826147b8565b166fffffffffffffffffffffffffffffffff831610615ad0565b615c8e9192815f52600760205273ffffffffffffffffffffffffffffffffffffffff60405f20541693604051927fd8865c2700000000000000000000000000000000000000000000000000000000602085015260248401526044830152606482015260648152613a85608482610778565b15615c965750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d0116604051917f90bfb86500000000000000000000000000000000000000000000000000000000835260048301527fd8865c27000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7fe94f10e20000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b9081600f0b9182036157e457565b5f81600f0b126157e4576fffffffffffffffffffffffffffffffff169056fea164736f6c634300081a000a000000000000000000000000bac21cdee1c59ccbda4547fc531803bd0d038251000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba30000000000000000000000000000000000000000000000000000000000030d400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fff9976782d46cc05630d1f6ebab18b2324d6b14", + "nonce": "0x43", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [], + "pending": [], + "returns": { + "posm": { + "internal_type": "contract PositionManager", + "value": "0x03A27bad61a57c3D1f5922a8cFc87768de6fc741" + }, + "positionDescriptor": { + "internal_type": "contract PositionDescriptor", + "value": "0x0000000000000000000000000000000000000000" + } + }, + "timestamp": 1731655924, + "chain": 11155111, + "commit": "9ed8b498" +} \ No newline at end of file diff --git a/broadcast/DeployPosm.s.sol/11155420/run-latest.json b/broadcast/DeployPosm.s.sol/11155420/run-latest.json new file mode 100644 index 00000000..f61e55e0 --- /dev/null +++ b/broadcast/DeployPosm.s.sol/11155420/run-latest.json @@ -0,0 +1,67 @@ +{ + "transactions": [ + { + "hash": "0xba1ba96f4ff95b8f924d3f5f280b7e274acebb791e9b7a079ed7ca98492be78e", + "transactionType": "CREATE", + "contractName": "PositionManager", + "contractAddress": "0x6550fa0d92b38f52c37d32d71084a7b270226ba5", + "function": null, + "arguments": [ + "0x1411060f44DA12017ADbB34De5f9238912dB2055", + "0x000000000022D473030F116dDEE9F6B43aC78BA3", + "200000", + "0x0000000000000000000000000000000000000000", + "0x4200000000000000000000000000000000000006" + ], + "transaction": { + "from": "0x7024cc7e60d6560f0b5877da2bb921fcbf1f4375", + "gas": "0x68a73f", + "value": "0x0", + "input": "0x61018080604052346105285760a0816162ea8038038091610020828561052c565b8339810103126105285780516001600160a01b03811681036105285760208201516001600160a01b03811681036105285760408301516060840151936001600160a01b03851685036105285760800151926001600160a01b03841684036105285760405161008f60408261052c565b6018815260208101907f556e697377617020763420506f736974696f6e73204e4654000000000000000082526040516100c960408261052c565b600b81526a554e492d56342d504f534d60a81b602082015281516001600160401b03811161043c575f54600181811c9116801561051e575b602082101461041e57601f81116104bc575b50806020601f821160011461045b575f91610450575b508160011b915f199060031b1c1916175f555b8051906001600160401b03821161043c5760015490600182811c92168015610432575b602083101461041e5781601f8493116103b0575b50602090601f831160011461034a575f9261033f575b50508160011b915f199060031b1c1916176001555b5190208060c0524660a05260405160208101917f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86683526040820152466060820152306080820152608081526101f460a08261052c565b51902060805260e052610100526101205261014052600160085561016052604051615d9a9081610550823960805181612dba015260a05181612d94015260c05181612e09015260e051818181610d0b015281816111a2015281816114d101528181611e4a0152818161223e015281816122f101528181612785015281816128b401528181612b1c0152818161325c015281816137c0015281816146f2015281816147eb0152818161488301528181614a0701528181614a68015281816153fa015281816155c6015281816156df01528181615789015261593701526101005181818161180b01526140ea0152610120518181816103e501528181610bbc0152818161107e015261571d015261014051818181611878015281816131ed015281816143da0152818161443b0152818161456001526145f6015261016051818181611aac01526126390152f35b015190505f80610189565b60015f9081528281209350601f198516905b8181106103985750908460019594939210610380575b505050811b0160015561019e565b01515f1960f88460031b161c191690555f8080610372565b9293602060018192878601518155019501930161035c565b60015f529091507fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6601f840160051c81019160208510610414575b90601f859493920160051c01905b8181106104065750610173565b5f81558493506001016103f9565b90915081906103eb565b634e487b7160e01b5f52602260045260245ffd5b91607f169161015f565b634e487b7160e01b5f52604160045260245ffd5b90508301515f610129565b5f8080528181209250601f198416905b8181106104a45750908360019493921061048c575b5050811b015f5561013c565b8501515f1960f88460031b161c191690555f80610480565b9192602060018192868a01518155019401920161046b565b5f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563601f830160051c81019160208410610514575b601f0160051c01905b8181106105095750610113565b5f81556001016104fc565b90915081906104f3565b90607f1690610101565b5f80fd5b601f909101601f19168101906001600160401b0382119082101761043c5760405256fe60806040526004361015610022575b3615610018575f80fd5b6100206131d6565b005b5f3560e01c80622a3e3a1461029057806301ffc9a71461028b57806305c1ee201461028657806306fdde0314610281578063081812fc1461027c578063095ea7b3146102775780630f5730f11461027257806312261ee71461026d57806316a24131146102685780631efeed331461026357806323b872dd1461025e5780632b67b570146102595780632b9261de146102545780633644e5151461024f5780633aea60f01461024a57806342842e0e146102455780634767565f146102405780634aa4a4fc1461023b5780634afe393c14610236578063502e1a16146102315780635a9d7a681461022c5780636352211e1461022757806370a082311461022257806375794a3c1461021d5780637ba03aad1461021857806386b6be7d1461021357806389097a6a1461020e57806391dd73461461020957806395d89b4114610204578063a22cb465146101ff578063ac9650d8146101fa578063ad0b27fb146101f5578063b88d4fde146101f0578063c87b56dd146101eb578063d737d0c7146101e6578063dc4c90d3146101e1578063dd46508f146101dc578063e985e9c5146101d75763f70204050361000e57612a02565b612964565b6127a9565b61273b565b6126cb565b6125b9565b61227e565b61220c565b6120f1565b612023565b611f50565b611de3565b611d9b565b611cd4565b611c3a565b611bff565b611b2a565b611ad0565b611a62565b6119ed565b6118cd565b61182e565b6117d6565b6114be565b6113ba565b61136b565b611141565b610fe2565b610cf7565b610c3e565b610be0565b610b72565b610a2b565b61094c565b6108ee565b6107b9565b6106ea565b6105fa565b610349565b73ffffffffffffffffffffffffffffffffffffffff8116036102b357565b5f80fd5b35906102c282610295565b565b9181601f840112156102b35782359167ffffffffffffffff83116102b357602083818601950101116102b357565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b9060206103469281815201906102f2565b90565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760043561037f81610295565b6024359067ffffffffffffffff82116102b3578136039160607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8401126102b35760443567ffffffffffffffff81116102b3576103e09036906004016102c4565b6060947f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1693909290843b156102b35773ffffffffffffffffffffffffffffffffffffffff604051967f2a2d80d10000000000000000000000000000000000000000000000000000000088521660048701526060602487015260c48601937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd826004013591018112156102b35781016024600482013591019467ffffffffffffffff82116102b3578160071b360386136102b35760606064890152819052869460e48601949392915f5b8181106105a8575050506105595f96948694889460448561052361050660248b99016102b7565b73ffffffffffffffffffffffffffffffffffffffff166084890152565b013560a48601527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc858403016044860152612ca5565b03925af1908161058e575b506105855750610581610575612d4b565b60405191829182610335565b0390f35b61058190610575565b8061059c5f6105a293610778565b80610720565b5f610564565b91965091929394608080826105bf6001948b612c2c565b0197019101918896959493926104df565b7fffffffff000000000000000000000000000000000000000000000000000000008116036102b357565b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760207fffffffff00000000000000000000000000000000000000000000000000000000600435610658816105d0565b167f01ffc9a70000000000000000000000000000000000000000000000000000000081149081156106c0575b8115610696575b506040519015158152f35b7f5b5e139f000000000000000000000000000000000000000000000000000000009150145f61068b565b7f80ac58cd0000000000000000000000000000000000000000000000000000000081149150610684565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35761002060043533613284565b5f9103126102b357565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60a0810190811067ffffffffffffffff82111761077357604052565b61072a565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761077357604052565b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576040515f80548060011c90600181169081156108e4575b6020831082146108b75782855260208501919081156108805750600114610830575b6105818461057581860382610778565b5f8080529250907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b81841061086c5750500161057582610820565b805484840152602090930192600101610859565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682525090151560051b01905061057582610820565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916107fe565b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576004355f526004602052602073ffffffffffffffffffffffffffffffffffffffff60405f205416604051908152f35b346102b35760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760043561098781610295565b602435805f52600260205273ffffffffffffffffffffffffffffffffffffffff60405f2054169182331415806109ed575b6109c557610020926132f2565b7f82b42900000000000000000000000000000000000000000000000000000000005f5260045ffd5b50825f52600560205260ff610a233360405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b5416156109b8565b60a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b357600435610a6181610295565b602435604435916064359260843567ffffffffffffffff81116102b357610a8c9036906004016102c4565b94824211610b4a57610b3f85610b459361002098610b39885f80998682526002602052818973ffffffffffffffffffffffffffffffffffffffff6040832054169c8d9981604051977f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad895273ffffffffffffffffffffffffffffffffffffffff60208a01911681526040890192835260608901948552608089019687528160a08a20995252525252613383565b9161343c565b82613284565b6132f2565b7f5a9165ff000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b357602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576004355f526007602052602073ffffffffffffffffffffffffffffffffffffffff60405f205416604051908152f35b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576020610c93600435610c7e81612f5b565b919082851c60020b9260081c60020b916136e6565b6fffffffffffffffffffffffffffffffff60405191168152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60609101126102b357600435610ce381610295565b90602435610cf081610295565b9060443590565b346102b357610d0536610cad565b91610d2f7f0000000000000000000000000000000000000000000000000000000000000000613841565b610fba5782610d7f610d66610d4c835f52600260205260405f2090565b5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b610da173ffffffffffffffffffffffffffffffffffffffff84169182146138e1565b73ffffffffffffffffffffffffffffffffffffffff841690610dc4821515613946565b8033148015610f62575b8015610f3d575b610dde906139ab565b610e068473ffffffffffffffffffffffffffffffffffffffff165f52600360205260405f2090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610e548573ffffffffffffffffffffffffffffffffffffffff165f52600360205260405f2090565b80546001019055610eb185610e71855f52600260205260405f2090565b9073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b610eee610ec6845f52600460205260405f2090565b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4610f2e610f27845f52600960205260405f2090565b5460ff1690565b610f3457005b61002092613a10565b50610dde610f59610d66610d4c865f52600460205260405f2090565b33149050610dd5565b50610fb5610f2733610f928773ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b9073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b610dce565b7fd4b05fe0000000000000000000000000000000000000000000000000000000005f5260045ffd5b6101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760043561101981610295565b60c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126102b35760e43567ffffffffffffffff81116102b3576110639036906004016102c4565b9160609273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b156102b35773ffffffffffffffffffffffffffffffffffffffff5f8094610559604051978896879586947f2b67b5700000000000000000000000000000000000000000000000000000000086521660048501526110ff60248501612ba7565b73ffffffffffffffffffffffffffffffffffffffff60a43561112081610295565b1660a485015260c43560c485015261010060e4850152610104840191612ca5565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760243560043561117a82610295565b60443567ffffffffffffffff81116102b35761119a9036906004016102c4565b6111c69391937f0000000000000000000000000000000000000000000000000000000000000000613841565b610fba576111d48333613b73565b1561133f5773ffffffffffffffffffffffffffffffffffffffff611203610d4c855f52600760205260405f2090565b16806112f657505f838152600960205260409020805460011790556112c6906112c2906112bc73ffffffffffffffffffffffffffffffffffffffff85169661125788610e71895f52600760205260405f2090565b6112906040519384927f8d57f6b20000000000000000000000000000000000000000000000000000000060208501528960248501612d7a565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610778565b83613c49565b1590565b6112f157507f9709492381f90bdc5938bb4e3b8e35b7e0eac8af058619e27191c5a40ce79fa95f80a3005b613c8a565b7f25fbd8be000000000000000000000000000000000000000000000000000000005f52600484905273ffffffffffffffffffffffffffffffffffffffff1660245260445ffd5b5ffd5b7f0ca968d8000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760206113a3612d91565b604051908152f35b6044359081151582036102b357565b60c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576004356113f081610295565b6024356113fc81610295565b6114046113ab565b906064359260843560a43567ffffffffffffffff81116102b35761142c9036906004016102c4565b869291924211610b4a57836114b993610b3f92610b39885f6100209c8189818f81604051977f6673cb397ee2a50b6b8401653d3638b4ac8b3db9c28aa6870ffceb7574ec2f76895273ffffffffffffffffffffffffffffffffffffffff60208a0191168152600160408a019316835260608901948552608089019687528160a08a20995252525252613383565b613f0a565b346102b3576114cc36610cad565b6114f57f0000000000000000000000000000000000000000000000000000000000000000613841565b610fba57611511610d66610d4c835f52600260205260405f2090565b9161153473ffffffffffffffffffffffffffffffffffffffff85169384146138e1565b8173ffffffffffffffffffffffffffffffffffffffff82168094611559821515613946565b80331480156117a1575b801561177c575b611573906139ab565b61159b8773ffffffffffffffffffffffffffffffffffffffff165f52600360205260405f2090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190556115e98473ffffffffffffffffffffffffffffffffffffffff165f52600360205260405f2090565b8054600101905561160684610e71855f52600260205260405f2090565b61161b610ec6845f52600460205260405f2090565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4611654610f27835f52600960205260405f2090565b61176c575b3b1591821561166c575b61002083612e63565b6040517f150b7a0200000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9490941660248501526044840191909152608060648401525f6084840181905260209250839160a49183915af18015611767577fffffffff000000000000000000000000000000000000000000000000000000007f150b7a020000000000000000000000000000000000000000000000000000000091610020935f91611738575b5016145f80611663565b61175a915060203d602011611760575b6117528183610778565b810190612e4e565b5f61172e565b503d611748565b612ce3565b611777818584613a10565b611659565b50611573611798610d66610d4c865f52600460205260405f2090565b3314905061156a565b506117d1610f2733610f928a73ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b611563565b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b357602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b9181601f840112156102b35782359167ffffffffffffffff83116102b3576020808501948460051b0101116102b357565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760043567ffffffffffffffff81116102b3576119179036906004016102c4565b60243567ffffffffffffffff81116102b35761193790369060040161189c565b9173ffffffffffffffffffffffffffffffffffffffff7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c166119c5576119a093337f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d613fd7565b5f7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d005b7f6f5ffb7e000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102b35760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b357600435611a2881610295565b73ffffffffffffffffffffffffffffffffffffffff60243591165f52600660205260405f20905f52602052602060405f2054604051908152f35b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b357602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576020611b0c600435612f2d565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35773ffffffffffffffffffffffffffffffffffffffff600435611b7a81610295565b168015611ba1575f52600360205261058160405f2054604051918291829190602083019252565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152fd5b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576020600854604051908152f35b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760c0611c76600435612f5b565b611ccd604051809373ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60a0820152f35b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576004357fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000081168091036102b3575f908152600a602090815260409182902080546001820154600292830154855173ffffffffffffffffffffffffffffffffffffffff93841681528383169581019590955260a082811c62ffffff169686019690965260b89190911c90920b6060840152166080820152f35b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576004355f526009602052602060405f2054604051908152f35b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760043567ffffffffffffffff81116102b357611e329036906004016102c4565b9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303611f285760408135189063ffffffff60408201351663ffffffe0601f8201169260608401602084013518179282019260608401359483641fffffffe08760051b16805f905b88818310611ef95790506080929150010191011017611eec576060608063ffffffff611ee1961694019201613fd7565b610581610575612d37565b633b99b53d5f526004601cfd5b8294509263ffffffe0601f60808060209687969801013599848b1817998d010135011601019201869291611eb1565b7fae18210a000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576040515f6001548060011c9060018116908115612019575b6020831082146108b75782855260208501919081156108805750600114611fc7576105818461057581860382610778565b60015f9081529250907fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b8184106120055750500161057582610820565b805484840152602090930192600101611ff2565b91607f1691611f96565b346102b35760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760043561205e81610295565b60243580151581036102b3576100209133613f0a565b602081016020825282518091526040820191602060408360051b8301019401925f915b8383106120a657505050505090565b90919293946020806120e2837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0866001960301875289516102f2565b97019301930191939290612097565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760043567ffffffffffffffff81116102b35761213b90369060040161189c565b906121458261306d565b916121536040519384610778565b8083527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06121808261306d565b015f5b8181106121fb5750505f5b8181106121a357604051806105818682612074565b5f806121b08385876130b2565b906121c060405180938193613117565b0390305af46121cd612d4b565b90156121f357906001916121e18287613124565b526121ec8186613124565b500161218e565b602081519101fd5b806060602080938801015201612183565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576004356122627f0000000000000000000000000000000000000000000000000000000000000000613841565b610fba576122708133613b73565b1561133f5761002090614040565b346102b35760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576004356122b981610295565b602435906122c682610295565b60443560643567ffffffffffffffff81116102b3576122e99036906004016102c4565b9390916123157f0000000000000000000000000000000000000000000000000000000000000000613841565b610fba57612331610d66610d4c835f52600260205260405f2090565b9161235473ffffffffffffffffffffffffffffffffffffffff86169384146138e1565b8173ffffffffffffffffffffffffffffffffffffffff82168094612379821515613946565b8033148015612584575b801561255f575b612393906139ab565b6123bb8873ffffffffffffffffffffffffffffffffffffffff165f52600360205260405f2090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190556124098473ffffffffffffffffffffffffffffffffffffffff165f52600360205260405f2090565b8054600101905561242684610e71855f52600260205260405f2090565b61243b610ec6845f52600460205260405f2090565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4612474610f27835f52600960205260405f2090565b61254f575b3b1593841561248c575b61002085612e63565b602094505f906124cc604051978896879586947f150b7a020000000000000000000000000000000000000000000000000000000086523360048701613138565b03925af18015611767577fffffffff000000000000000000000000000000000000000000000000000000007f150b7a020000000000000000000000000000000000000000000000000000000091610020935f91612530575b5016145f808080612483565b612549915060203d602011611760576117528183610778565b5f612524565b61255a818684613a10565b612479565b5061239361257b610d66610d4c865f52600460205260405f2090565b3314905061238a565b506125b4610f2733610f928b73ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b612383565b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b357600435604051907fe9dc637500000000000000000000000000000000000000000000000000000000825230600483015260248201525f8160448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa8015611767575f90612678575b6105819060405191829182610335565b503d805f833e6126888183610778565b8101906020818303126102b35780519067ffffffffffffffff82116102b3570181601f820112156102b357610581918160206126c693519101613173565b612668565b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760207f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b357602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760043567ffffffffffffffff81116102b3576127f39036906004016102c4565b60243573ffffffffffffffffffffffffffffffffffffffff7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c166119c557337f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d804211612939576040517f48c89491000000000000000000000000000000000000000000000000000000008152602060048201525f818061289a602482018789612ca5565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af18015611767576128e9575b610020613fb2565b3d805f833e6128f88183610778565b8101906020818303126102b35780519067ffffffffffffffff82116102b357019080601f830112156102b357815161293292602001613173565b50806128e1565b7fbfb22adf000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b346102b35760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b357602060ff6129f66004356129a681610295565b73ffffffffffffffffffffffffffffffffffffffff602435916129c883610295565b165f526005845260405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b54166040519015158152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360160c081126102b35760a0136102b35760a435612a4081610295565b73ffffffffffffffffffffffffffffffffffffffff604051917f6276cbbe00000000000000000000000000000000000000000000000000000000835281600435612a8981610295565b16600484015281602435612a9c81610295565b16602484015262ffffff604435612ab2816131c9565b166044840152606435612ac4816131a9565b60020b6064840152612af8608435612adb81610295565b73ffffffffffffffffffffffffffffffffffffffff166084850152565b1660a482015260208160c4815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1801561176757610581915f91612b65575b5060405160029190910b81529081906020820190565b612b87915060203d602011612b8d575b612b7f8183610778565b8101906131b4565b5f612b4f565b503d612b75565b359065ffffffffffff821682036102b357565b73ffffffffffffffffffffffffffffffffffffffff602435612bc881610295565b16815273ffffffffffffffffffffffffffffffffffffffff604435612bec81610295565b16602082015260643565ffffffffffff81168091036102b357604082015260843565ffffffffffff811681036102b35765ffffffffffff60609116910152565b65ffffffffffff612c9f6060809373ffffffffffffffffffffffffffffffffffffffff8135612c5a81610295565b16865273ffffffffffffffffffffffffffffffffffffffff6020820135612c8081610295565b16602087015283612c9360408301612b94565b16604087015201612b94565b16910152565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b6040513d5f823e3d90fd5b604051906102c2608083610778565b67ffffffffffffffff811161077357601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60405190612d46602083610778565b5f8252565b3d15612d75573d90612d5c82612cfd565b91612d6a6040519384610778565b82523d5f602084013e565b606090565b604090610346949281528160208201520191612ca5565b467f000000000000000000000000000000000000000000000000000000000000000003612ddc577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f0000000000000000000000000000000000000000000000000000000000000000604082015246606082015230608082015260808152612e4860a082610778565b51902090565b908160209103126102b35751610346816105d0565b15612e6a57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152fd5b15612ecf57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152fd5b5f52600260205273ffffffffffffffffffffffffffffffffffffffff60405f205416906102c2821515612ec8565b5f6080604051612f6a81610757565b82815282602082015282604082015282606082015201525f52600960205260405f2054807fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000165f52600a60205260405f2061306a61304d600260405193612fd085610757565b73ffffffffffffffffffffffffffffffffffffffff8154168552613032613028600183015473ffffffffffffffffffffffffffffffffffffffff8116602089015262ffffff8160a01c16604089015260b81c60020b90565b60020b6060870152565b015473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff166080830152565b91565b67ffffffffffffffff81116107735760051b60200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b91908110156131125760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102b357019081359167ffffffffffffffff83116102b35760200182360381136102b3579190565b613085565b908092918237015f815290565b80518210156131125760209160051b010190565b909273ffffffffffffffffffffffffffffffffffffffff60809381610346989616845216602083015260408201528160608201520191612ca5565b92919261317f82612cfd565b9161318d6040519384610778565b8294818452818301116102b3578281602093845f96015e010152565b8060020b036102b357565b908160209103126102b35751610346816131a9565b62ffffff8116036102b357565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633141580613244575b61321c57565b7f38bbd576000000000000000000000000000000000000000000000000000000005f5260045ffd5b5073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016331415613216565b9073ffffffffffffffffffffffffffffffffffffffff600160ff83161b92165f52600660205260405f209060081c5f5260205260405f208181541880915516156132ca57565b7f1fb09b80000000000000000000000000000000000000000000000000000000005f5260045ffd5b9073ffffffffffffffffffffffffffffffffffffffff8091845f52600460205261335a8160405f209073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b1691167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a4565b9061338c612d91565b91604051927f19010000000000000000000000000000000000000000000000000000000000008452600284015260228301525f604060428420938281528260208201520152565b91908260409103126102b3576020823592013590565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b60ff601b9116019060ff821161342857565b6133e9565b90604010156131125760400190565b90833b6135eb576041810361355f57906020926134c58361349d6134976134716134695f988801886133d3565b94909761342d565b357fff000000000000000000000000000000000000000000000000000000000000001690565b60f81c90565b935b604051948594859094939260ff6060936080840197845216602083015260408201520152565b838052039060015afa156117675773ffffffffffffffffffffffffffffffffffffffff5f51169081156135375773ffffffffffffffffffffffffffffffffffffffff160361350f57565b7f815e1d64000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f8baa579f000000000000000000000000000000000000000000000000000000005f5260045ffd5b90604082036135c35760209261357c825f946134c59401906133d3565b9290926135bd6135b86135b27f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c90565b60ff1690565b613416565b9361349f565b7f4be6321b000000000000000000000000000000000000000000000000000000005f5260045ffd5b909261363f9373ffffffffffffffffffffffffffffffffffffffff602094604051968795869485937f1626ba7e00000000000000000000000000000000000000000000000000000000855260048501612d7a565b0392165afa908115611767577f1626ba7e00000000000000000000000000000000000000000000000000000000917fffffffff00000000000000000000000000000000000000000000000000000000915f916136c7575b50160361369f57565b7fb0669cbc000000000000000000000000000000000000000000000000000000005f5260045ffd5b6136e0915060203d602011611760576117528183610778565b5f613696565b929160a092604051946026860152600685015260038401523083525f603a600c850120938160408201528160208201525220604051602081019182526006604082015260408152613738606082610778565b5190206006810180911161342857604080516020818101948552918101929092526137a792909161376c8160608101611290565b519020604051809381927f1e2eaeaf000000000000000000000000000000000000000000000000000000008352600483019190602083019252565b038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa8015611767576fffffffffffffffffffffffffffffffff915f9161380557501690565b613827915060203d60201161382b575b61381f8183610778565b810190613832565b1690565b503d613815565b908160209103126102b3575190565b602073ffffffffffffffffffffffffffffffffffffffff916024604051809481937ff135baaa0000000000000000000000000000000000000000000000000000000083527fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab236004840152165afa908115611767575f916138c2575b50151590565b6138db915060203d60201161382b5761381f8183610778565b5f6138bc565b156138e857565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152fd5b1561394d57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152fd5b156139b257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152fd5b73ffffffffffffffffffffffffffffffffffffffff613a8b9293825f526007602052818060405f20541695604051947f876fda07000000000000000000000000000000000000000000000000000000006020870152602486015216604484015216606482015260648152613a85608482610778565b82613c49565b15613a935750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011673ffffffffffffffffffffffffffffffffffffffff604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301527f876fda07000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7f8b6bc10d0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b73ffffffffffffffffffffffffffffffffffffffff613b9183612f2d565b169173ffffffffffffffffffffffffffffffffffffffff8216928314928315613c1b575b508215613bc157505090565b60ff92509073ffffffffffffffffffffffffffffffffffffffff613be7613c1693612f2d565b165f52600560205260405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b541690565b908093505f52600460205273ffffffffffffffffffffffffffffffffffffffff60405f20541614915f613bb5565b803b15613c6257815f92918360208194519301915af190565b7f7c402b21000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011673ffffffffffffffffffffffffffffffffffffffff604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301527f8d57f6b2000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7f81ea5e9e0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011673ffffffffffffffffffffffffffffffffffffffff604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301527fa9059cbb000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff27f64e40000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011673ffffffffffffffffffffffffffffffffffffffff604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301525f6024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff4b3b1bc0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b602073ffffffffffffffffffffffffffffffffffffffff807f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31931693845f5260058352613f788160405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b951515957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff88161790556040519586521693a3565b5f7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d565b90929193828403614018575f5b848110156140105760019061400a81850161400083888b6130b2565b913560f81c6141cd565b01613fe4565b509350505050565b7faaad13f7000000000000000000000000000000000000000000000000000000005f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff61406a610d4c835f52600760205260405f2090565b1690811561417d575f81815260096020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556140ba610ec6825f52600760205260405f2090565b813b6140e7575b7fa0ebb1de82db929a9153472f37d3a66dbede4436258311ad0f52a35a2c91d1505f80a3565b5a7f000000000000000000000000000000000000000000000000000000000000000080911061417857823b156102b3575f60405180927faf45dd140000000000000000000000000000000000000000000000000000000082528183878261415689600483019190602083019252565b0393f1614164575b506140c1565b8061059c5f61417293610778565b5f61415e565b6141a5565b7f237e6c28000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fed43c3a6000000000000000000000000000000000000000000000000000000005f5260045ffd5b909190600981101561429d57806141f857506141ec906102c292615251565b949390939291926152f8565b6001810361421a575061420e906102c292615251565b94939093929192615293565b600281036142495750614233614243916102c293614da3565b989097969195929594939461465a565b95614fe8565b916003831461428557505061133c91505b7f5cda29d7000000000000000000000000000000000000000000000000000000005f52600452602490565b6102c292509061429491614b9f565b93929092614bdb565b9050601181036142b857506102c29060208101359035614b61565b601581036142ea57506142e46142db6102c2928035916040602083013592013590565b9290919261465a565b91614b46565b60098103614328575061431c6143226143106102c2938035916040602083013592013590565b9382949392919361492c565b9261495a565b9161499b565b60128103614364575061435e61435861434e6102c2938035916040602083013592013590565b928294929161465a565b92614850565b91614864565b6017810361437757506102c290356147e4565b6018810361439057506102c290602081013590356146ca565b601981036143b357506102c2908035906143ad906020013561465a565b906146ac565b6020810361440657506144016102c29173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690356144e5565b6145d7565b906021821461441a575061133c915061425a565b6102c29150614460903573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016614465565b614541565b614470903090615359565b7f800000000000000000000000000000000000000000000000000000000000000082146144e05781156144cf575b81116144a75790565b7ff4d678b8000000000000000000000000000000000000000000000000000000005f5260045ffd5b90506144da5f6153f3565b9061449e565b905090565b906144f0305f615359565b907f8000000000000000000000000000000000000000000000000000000000000000831461453b578215614529575b5081116144a75790565b6145349192506153f3565b905f61451f565b50905090565b806145495750565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b156102b3575f916024839260405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af18015611767576145cd5750565b5f6102c291610778565b806145df5750565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b156102b3575f906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af18015611767576145cd5750565b73ffffffffffffffffffffffffffffffffffffffff8116600181036146a05750507f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c90565b60020361034657503090565b906146b682615472565b90816146c157505050565b6102c2926154f2565b906146d4826155bf565b90811161478c5773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691823b156102b35773ffffffffffffffffffffffffffffffffffffffff925f926040519485937f80f0b44c00000000000000000000000000000000000000000000000000000000855216600484015260248301528183604482800301925af180156117675761477e5750565b8061059c5f6102c293610778565b6102c2917f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c90614864565b7f80000000000000000000000000000000000000000000000000000000000000008114613428575f0390565b61480f81307f0000000000000000000000000000000000000000000000000000000000000000615638565b907f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c5f831215614846576143226102c2936147b8565b6102c29291614864565b90816148605761034691506155bf565b5090565b909180156149275773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b156102b3575f928360649273ffffffffffffffffffffffffffffffffffffffff948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af18015611767576149125750565b8061491e5f8093610778565b8003126102b357565b505050565b15614956577f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c90565b3090565b907f8000000000000000000000000000000000000000000000000000000000000000820361498c576103469150615472565b816148605761034691506153f3565b919081156149275773ffffffffffffffffffffffffffffffffffffffff8316614a51575060049150602090604051928380927f11da60b400000000000000000000000000000000000000000000000000000000825273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1801561176757614a365750565b614a4e9060203d60201161382b5761381f8183610778565b50565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b156102b3576040517fa584119400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152925f8460248183875af1918215611767575f95602095614af794614b32575b506156a3565b6004604051809481937f11da60b40000000000000000000000000000000000000000000000000000000083525af1801561176757614a365750565b8061059c89614b4093610778565b5f614af1565b91614b586102c2938261435e826155bf565b61435e826155bf565b906102c291614b967f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c9182614322826153f3565b614322826153f3565b919082359260208101359260408201359263ffffffff60608401351683019063ffffffff82351693602080840193860101910110611eec579190565b937f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c614c088682613b73565b15614d61575090849291614c1b84612f5b565b9590916fffffffffffffffffffffffffffffffff614c478860201c60020b8960081c60020b868a6136e6565b1691865f5260096020525f6040812055865f526002602052865f73ffffffffffffffffffffffffffffffffffffffff604082205416614c87811515612ec8565b8082526003602052604082207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8154019055614cce610ec6845f52600260205260405f2090565b614ce3610ec6845f52600460205260405f2090565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a482614d27575b5050505050505060ff16614d1e5750565b6102c290614040565b614d5596614d5094614d43614d3e614d4a966157da565b6147b8565b908a6158b7565b906159b6565b6159f3565b815f8080808080614d0d565b73ffffffffffffffffffffffffffffffffffffffff907f0ca968d8000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b9091819260a08301359260c08101359260e08201359261010083013592610120810135926101408201359263ffffffff6101608401351683019063ffffffff82351693602080840193860101910110611eec579190565b91908260a09103126102b357604051614e1281610757565b60808082948035614e2281610295565b84526020810135614e3281610295565b60208501526040810135614e45816131c9565b60408501526060810135614e58816131a9565b6060850152013591614e6983610295565b0152565b600260806102c293614ec48135614e8381610295565b859073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b60018401614f1a6020830135614ed981610295565b829073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b6040820135614f28816131c9565b81547fffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff76ffffff00000000000000000000000000000000000000006060860135614f71816131a9565b60b81b79ffffff0000000000000000000000000000000000000000000000169360a01b16911617179055013591614fa783610295565b019073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b909194969297939597600854926001840160085573ffffffffffffffffffffffffffffffffffffffff8a169961501f8b1515613946565b845f52600260205273ffffffffffffffffffffffffffffffffffffffff60405f2054166151f35761510f6151aa986151a493876102c29e61509e8661508561519c9873ffffffffffffffffffffffffffffffffffffffff165f52600360205260405f2090565b80546001019055610e71845f52600260205260405f2090565b5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a46150cd3688614dfa565b63ffffff007fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000060a066ffffff000000009320169260081b169260201b16171790565b9283615123875f52600960205260405f2090565b55837fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000168561518c6001615181847fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000165f52600a60205260405f2090565b015460b81c60020b90565b60020b156151b0575b50506157da565b923690614dfa565b906158b7565b50615aba565b6151e76151ec927fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000165f52600a60205260405f2090565b614e6d565b5f85615195565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4d494e5445440000000000000000000000000000000000006044820152fd5b909181359260208301359260408101359260608201359263ffffffff60808401351683019063ffffffff82351693602080840193860101910110611eec579190565b90959495939192937f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c6152c78382613b73565b15614d61575095614d509282614d3e6102c298996152f26152ea614d4a97612f5b565b9390926157da565b916158b7565b90959495939192937f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c61532c8382613b73565b15614d6157509561535492826152f26102c2989961534c614d4a96612f5b565b9290916157da565b615aba565b73ffffffffffffffffffffffffffffffffffffffff811661537957503190565b9073ffffffffffffffffffffffffffffffffffffffff60246020928260405195869485937f70a08231000000000000000000000000000000000000000000000000000000008552166004840152165afa908115611767575f916153da575090565b610346915060203d60201161382b5761381f8183610778565b61541e81307f0000000000000000000000000000000000000000000000000000000000000000615638565b905f82136154305750610346906147b8565b73ffffffffffffffffffffffffffffffffffffffff907f3351b260000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff811661549257504790565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152906020908290602490829073ffffffffffffffffffffffffffffffffffffffff165afa908115611767575f916153da575090565b90919073ffffffffffffffffffffffffffffffffffffffff811661552c57505f80808061552094865af11590565b6155275750565b613e4a565b919073ffffffffffffffffffffffffffffffffffffffff604051927fa9059cbb00000000000000000000000000000000000000000000000000000000845216600483015260248201525f604060208260448582885af13d15601f3d116001855114161716928281528260208201520152156155a45750565b73ffffffffffffffffffffffffffffffffffffffff16613d6a565b6155ea81307f0000000000000000000000000000000000000000000000000000000000000000615638565b905f82126155f6575090565b73ffffffffffffffffffffffffffffffffffffffff907f4c085bf1000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff809381602094165f52168252602460405f2060405194859384927ff135baaa0000000000000000000000000000000000000000000000000000000084526004840152165afa908115611767575f916153da575090565b90919073ffffffffffffffffffffffffffffffffffffffff83163003615705576102c2925073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906154f2565b9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b156102b3576040517f36c7851600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff94851660048201527f00000000000000000000000000000000000000000000000000000000000000008516602482015291841660448301529190921660648301525f908290608490829084905af180156117675761477e5750565b905f82126157e457565b7f93dafdf1000000000000000000000000000000000000000000000000000000005f5260045ffd5b91908260409103126102b3576020825192015190565b60606103469593615880836101409573ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b805160020b60a0840152602081015160020b60c0840152604081015160e08401520151610100820152816101208201520191612ca5565b95939460409161591d6158c8612cee565b60088a901c60020b81529260208a811c60020b908501528585850152866060850152845198899485947f5a6bcfda00000000000000000000000000000000000000000000000000000000865260048601615822565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1908115611767575f945f92615982575b5081949560ff1661597957505050565b6102c292615c1d565b9094506159a7915060403d6040116159af575b61599f8183610778565b81019061580c565b90935f615969565b503d615995565b6159d9906159cb8360801d8260801d03615d60565b92600f0b90600f0b03615d60565b6fffffffffffffffffffffffffffffffff169060801b1790565b929190926fffffffffffffffffffffffffffffffff8160801d9481615a1787615d6e565b91169182911610615a9f57506fffffffffffffffffffffffffffffffff929350600f0b9082615a4583615d6e565b91169283911610615a54575050565b90615a6f6fffffffffffffffffffffffffffffffff92615d6e565b907f12816f22000000000000000000000000000000000000000000000000000000005f526004521660245260445ffd5b6fffffffffffffffffffffffffffffffff90615a6f86615d6e565b908160801d600f0b91600f0b915f811280615be8575b615b865750505f811280615b4f575b615ae7575050565b90615b0c615af761133c936147b8565b6fffffffffffffffffffffffffffffffff1690565b7f31e30ad0000000000000000000000000000000000000000000000000000000005f526fffffffffffffffffffffffffffffffff91821660045216602452604490565b506fffffffffffffffffffffffffffffffff80615b6b836147b8565b16166fffffffffffffffffffffffffffffffff831610615adf565b906fffffffffffffffffffffffffffffffff615ba461133c936147b8565b7f31e30ad0000000000000000000000000000000000000000000000000000000005f526fffffffffffffffffffffffffffffffff9283166004521616602452604490565b506fffffffffffffffffffffffffffffffff615c03826147b8565b166fffffffffffffffffffffffffffffffff831610615ad0565b615c8e9192815f52600760205273ffffffffffffffffffffffffffffffffffffffff60405f20541693604051927fd8865c2700000000000000000000000000000000000000000000000000000000602085015260248401526044830152606482015260648152613a85608482610778565b15615c965750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d0116604051917f90bfb86500000000000000000000000000000000000000000000000000000000835260048301527fd8865c27000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7fe94f10e20000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b9081600f0b9182036157e457565b5f81600f0b126157e4576fffffffffffffffffffffffffffffffff169056fea164736f6c634300081a000a0000000000000000000000001411060f44da12017adbb34de5f9238912db2055000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba30000000000000000000000000000000000000000000000000000000000030d4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004200000000000000000000000000000000000006", + "nonce": "0x1c", + "chainId": "0xaa37dc" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x5284cc", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xba1ba96f4ff95b8f924d3f5f280b7e274acebb791e9b7a079ed7ca98492be78e", + "transactionIndex": "0x2", + "blockHash": "0x4f5c074688d92e5092b92214a63e1f75fbee489392710c86af75b8c0a1842806", + "blockNumber": "0x1300ef3", + "gasUsed": "0x5080a7", + "effectiveGasPrice": "0xf6a4e", + "from": "0x7024cc7e60d6560f0b5877da2bb921fcbf1f4375", + "to": null, + "contractAddress": "0x6550fa0d92b38f52c37d32d71084a7b270226ba5", + "l1BaseFeeScalar": "0x1db0", + "l1BlobBaseFee": "0x2e4404225", + "l1BlobBaseFeeScalar": "0xd2730", + "l1Fee": "0x65e55445d923", + "l1GasPrice": "0x2ed67f5f", + "l1GasUsed": "0x2884a" + } + ], + "libraries": [], + "pending": [], + "returns": { + "positionDescriptor": { + "internal_type": "contract PositionDescriptor", + "value": "0x0000000000000000000000000000000000000000" + }, + "posm": { + "internal_type": "contract PositionManager", + "value": "0x6550fa0D92B38F52C37D32d71084A7B270226Ba5" + } + }, + "timestamp": 1731656101, + "chain": 11155420, + "commit": "9ed8b498" +} \ No newline at end of file diff --git a/broadcast/DeployPosm.s.sol/1301/run-latest.json b/broadcast/DeployPosm.s.sol/1301/run-latest.json new file mode 100644 index 00000000..05d0eb0f --- /dev/null +++ b/broadcast/DeployPosm.s.sol/1301/run-latest.json @@ -0,0 +1,67 @@ +{ + "transactions": [ + { + "hash": "0xd9539b73c68e405c2a5c433ed5f303ff58b9390c1ee7b32324369e70d535e5b6", + "transactionType": "CREATE", + "contractName": "PositionManager", + "contractAddress": "0x5cd9d2ae2bbbf59599d92ff57621d257be371639", + "function": null, + "arguments": [ + "0xd51ccB81De8426637f7b6fA8405B1990a3B81648", + "0x000000000022D473030F116dDEE9F6B43aC78BA3", + "200000", + "0x0000000000000000000000000000000000000000", + "0x4200000000000000000000000000000000000006" + ], + "transaction": { + "from": "0x7024cc7e60d6560f0b5877da2bb921fcbf1f4375", + "gas": "0x68a73f", + "value": "0x0", + "input": "0x61018080604052346105285760a0816162ea8038038091610020828561052c565b8339810103126105285780516001600160a01b03811681036105285760208201516001600160a01b03811681036105285760408301516060840151936001600160a01b03851685036105285760800151926001600160a01b03841684036105285760405161008f60408261052c565b6018815260208101907f556e697377617020763420506f736974696f6e73204e4654000000000000000082526040516100c960408261052c565b600b81526a554e492d56342d504f534d60a81b602082015281516001600160401b03811161043c575f54600181811c9116801561051e575b602082101461041e57601f81116104bc575b50806020601f821160011461045b575f91610450575b508160011b915f199060031b1c1916175f555b8051906001600160401b03821161043c5760015490600182811c92168015610432575b602083101461041e5781601f8493116103b0575b50602090601f831160011461034a575f9261033f575b50508160011b915f199060031b1c1916176001555b5190208060c0524660a05260405160208101917f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86683526040820152466060820152306080820152608081526101f460a08261052c565b51902060805260e052610100526101205261014052600160085561016052604051615d9a9081610550823960805181612dba015260a05181612d94015260c05181612e09015260e051818181610d0b015281816111a2015281816114d101528181611e4a0152818161223e015281816122f101528181612785015281816128b401528181612b1c0152818161325c015281816137c0015281816146f2015281816147eb0152818161488301528181614a0701528181614a68015281816153fa015281816155c6015281816156df01528181615789015261593701526101005181818161180b01526140ea0152610120518181816103e501528181610bbc0152818161107e015261571d015261014051818181611878015281816131ed015281816143da0152818161443b0152818161456001526145f6015261016051818181611aac01526126390152f35b015190505f80610189565b60015f9081528281209350601f198516905b8181106103985750908460019594939210610380575b505050811b0160015561019e565b01515f1960f88460031b161c191690555f8080610372565b9293602060018192878601518155019501930161035c565b60015f529091507fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6601f840160051c81019160208510610414575b90601f859493920160051c01905b8181106104065750610173565b5f81558493506001016103f9565b90915081906103eb565b634e487b7160e01b5f52602260045260245ffd5b91607f169161015f565b634e487b7160e01b5f52604160045260245ffd5b90508301515f610129565b5f8080528181209250601f198416905b8181106104a45750908360019493921061048c575b5050811b015f5561013c565b8501515f1960f88460031b161c191690555f80610480565b9192602060018192868a01518155019401920161046b565b5f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563601f830160051c81019160208410610514575b601f0160051c01905b8181106105095750610113565b5f81556001016104fc565b90915081906104f3565b90607f1690610101565b5f80fd5b601f909101601f19168101906001600160401b0382119082101761043c5760405256fe60806040526004361015610022575b3615610018575f80fd5b6100206131d6565b005b5f3560e01c80622a3e3a1461029057806301ffc9a71461028b57806305c1ee201461028657806306fdde0314610281578063081812fc1461027c578063095ea7b3146102775780630f5730f11461027257806312261ee71461026d57806316a24131146102685780631efeed331461026357806323b872dd1461025e5780632b67b570146102595780632b9261de146102545780633644e5151461024f5780633aea60f01461024a57806342842e0e146102455780634767565f146102405780634aa4a4fc1461023b5780634afe393c14610236578063502e1a16146102315780635a9d7a681461022c5780636352211e1461022757806370a082311461022257806375794a3c1461021d5780637ba03aad1461021857806386b6be7d1461021357806389097a6a1461020e57806391dd73461461020957806395d89b4114610204578063a22cb465146101ff578063ac9650d8146101fa578063ad0b27fb146101f5578063b88d4fde146101f0578063c87b56dd146101eb578063d737d0c7146101e6578063dc4c90d3146101e1578063dd46508f146101dc578063e985e9c5146101d75763f70204050361000e57612a02565b612964565b6127a9565b61273b565b6126cb565b6125b9565b61227e565b61220c565b6120f1565b612023565b611f50565b611de3565b611d9b565b611cd4565b611c3a565b611bff565b611b2a565b611ad0565b611a62565b6119ed565b6118cd565b61182e565b6117d6565b6114be565b6113ba565b61136b565b611141565b610fe2565b610cf7565b610c3e565b610be0565b610b72565b610a2b565b61094c565b6108ee565b6107b9565b6106ea565b6105fa565b610349565b73ffffffffffffffffffffffffffffffffffffffff8116036102b357565b5f80fd5b35906102c282610295565b565b9181601f840112156102b35782359167ffffffffffffffff83116102b357602083818601950101116102b357565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b9060206103469281815201906102f2565b90565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760043561037f81610295565b6024359067ffffffffffffffff82116102b3578136039160607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8401126102b35760443567ffffffffffffffff81116102b3576103e09036906004016102c4565b6060947f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1693909290843b156102b35773ffffffffffffffffffffffffffffffffffffffff604051967f2a2d80d10000000000000000000000000000000000000000000000000000000088521660048701526060602487015260c48601937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd826004013591018112156102b35781016024600482013591019467ffffffffffffffff82116102b3578160071b360386136102b35760606064890152819052869460e48601949392915f5b8181106105a8575050506105595f96948694889460448561052361050660248b99016102b7565b73ffffffffffffffffffffffffffffffffffffffff166084890152565b013560a48601527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc858403016044860152612ca5565b03925af1908161058e575b506105855750610581610575612d4b565b60405191829182610335565b0390f35b61058190610575565b8061059c5f6105a293610778565b80610720565b5f610564565b91965091929394608080826105bf6001948b612c2c565b0197019101918896959493926104df565b7fffffffff000000000000000000000000000000000000000000000000000000008116036102b357565b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760207fffffffff00000000000000000000000000000000000000000000000000000000600435610658816105d0565b167f01ffc9a70000000000000000000000000000000000000000000000000000000081149081156106c0575b8115610696575b506040519015158152f35b7f5b5e139f000000000000000000000000000000000000000000000000000000009150145f61068b565b7f80ac58cd0000000000000000000000000000000000000000000000000000000081149150610684565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35761002060043533613284565b5f9103126102b357565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60a0810190811067ffffffffffffffff82111761077357604052565b61072a565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761077357604052565b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576040515f80548060011c90600181169081156108e4575b6020831082146108b75782855260208501919081156108805750600114610830575b6105818461057581860382610778565b5f8080529250907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b81841061086c5750500161057582610820565b805484840152602090930192600101610859565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682525090151560051b01905061057582610820565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916107fe565b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576004355f526004602052602073ffffffffffffffffffffffffffffffffffffffff60405f205416604051908152f35b346102b35760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760043561098781610295565b602435805f52600260205273ffffffffffffffffffffffffffffffffffffffff60405f2054169182331415806109ed575b6109c557610020926132f2565b7f82b42900000000000000000000000000000000000000000000000000000000005f5260045ffd5b50825f52600560205260ff610a233360405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b5416156109b8565b60a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b357600435610a6181610295565b602435604435916064359260843567ffffffffffffffff81116102b357610a8c9036906004016102c4565b94824211610b4a57610b3f85610b459361002098610b39885f80998682526002602052818973ffffffffffffffffffffffffffffffffffffffff6040832054169c8d9981604051977f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad895273ffffffffffffffffffffffffffffffffffffffff60208a01911681526040890192835260608901948552608089019687528160a08a20995252525252613383565b9161343c565b82613284565b6132f2565b7f5a9165ff000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b357602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576004355f526007602052602073ffffffffffffffffffffffffffffffffffffffff60405f205416604051908152f35b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576020610c93600435610c7e81612f5b565b919082851c60020b9260081c60020b916136e6565b6fffffffffffffffffffffffffffffffff60405191168152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60609101126102b357600435610ce381610295565b90602435610cf081610295565b9060443590565b346102b357610d0536610cad565b91610d2f7f0000000000000000000000000000000000000000000000000000000000000000613841565b610fba5782610d7f610d66610d4c835f52600260205260405f2090565b5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b610da173ffffffffffffffffffffffffffffffffffffffff84169182146138e1565b73ffffffffffffffffffffffffffffffffffffffff841690610dc4821515613946565b8033148015610f62575b8015610f3d575b610dde906139ab565b610e068473ffffffffffffffffffffffffffffffffffffffff165f52600360205260405f2090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610e548573ffffffffffffffffffffffffffffffffffffffff165f52600360205260405f2090565b80546001019055610eb185610e71855f52600260205260405f2090565b9073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b610eee610ec6845f52600460205260405f2090565b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4610f2e610f27845f52600960205260405f2090565b5460ff1690565b610f3457005b61002092613a10565b50610dde610f59610d66610d4c865f52600460205260405f2090565b33149050610dd5565b50610fb5610f2733610f928773ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b9073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b610dce565b7fd4b05fe0000000000000000000000000000000000000000000000000000000005f5260045ffd5b6101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760043561101981610295565b60c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126102b35760e43567ffffffffffffffff81116102b3576110639036906004016102c4565b9160609273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b156102b35773ffffffffffffffffffffffffffffffffffffffff5f8094610559604051978896879586947f2b67b5700000000000000000000000000000000000000000000000000000000086521660048501526110ff60248501612ba7565b73ffffffffffffffffffffffffffffffffffffffff60a43561112081610295565b1660a485015260c43560c485015261010060e4850152610104840191612ca5565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760243560043561117a82610295565b60443567ffffffffffffffff81116102b35761119a9036906004016102c4565b6111c69391937f0000000000000000000000000000000000000000000000000000000000000000613841565b610fba576111d48333613b73565b1561133f5773ffffffffffffffffffffffffffffffffffffffff611203610d4c855f52600760205260405f2090565b16806112f657505f838152600960205260409020805460011790556112c6906112c2906112bc73ffffffffffffffffffffffffffffffffffffffff85169661125788610e71895f52600760205260405f2090565b6112906040519384927f8d57f6b20000000000000000000000000000000000000000000000000000000060208501528960248501612d7a565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610778565b83613c49565b1590565b6112f157507f9709492381f90bdc5938bb4e3b8e35b7e0eac8af058619e27191c5a40ce79fa95f80a3005b613c8a565b7f25fbd8be000000000000000000000000000000000000000000000000000000005f52600484905273ffffffffffffffffffffffffffffffffffffffff1660245260445ffd5b5ffd5b7f0ca968d8000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760206113a3612d91565b604051908152f35b6044359081151582036102b357565b60c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576004356113f081610295565b6024356113fc81610295565b6114046113ab565b906064359260843560a43567ffffffffffffffff81116102b35761142c9036906004016102c4565b869291924211610b4a57836114b993610b3f92610b39885f6100209c8189818f81604051977f6673cb397ee2a50b6b8401653d3638b4ac8b3db9c28aa6870ffceb7574ec2f76895273ffffffffffffffffffffffffffffffffffffffff60208a0191168152600160408a019316835260608901948552608089019687528160a08a20995252525252613383565b613f0a565b346102b3576114cc36610cad565b6114f57f0000000000000000000000000000000000000000000000000000000000000000613841565b610fba57611511610d66610d4c835f52600260205260405f2090565b9161153473ffffffffffffffffffffffffffffffffffffffff85169384146138e1565b8173ffffffffffffffffffffffffffffffffffffffff82168094611559821515613946565b80331480156117a1575b801561177c575b611573906139ab565b61159b8773ffffffffffffffffffffffffffffffffffffffff165f52600360205260405f2090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190556115e98473ffffffffffffffffffffffffffffffffffffffff165f52600360205260405f2090565b8054600101905561160684610e71855f52600260205260405f2090565b61161b610ec6845f52600460205260405f2090565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4611654610f27835f52600960205260405f2090565b61176c575b3b1591821561166c575b61002083612e63565b6040517f150b7a0200000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9490941660248501526044840191909152608060648401525f6084840181905260209250839160a49183915af18015611767577fffffffff000000000000000000000000000000000000000000000000000000007f150b7a020000000000000000000000000000000000000000000000000000000091610020935f91611738575b5016145f80611663565b61175a915060203d602011611760575b6117528183610778565b810190612e4e565b5f61172e565b503d611748565b612ce3565b611777818584613a10565b611659565b50611573611798610d66610d4c865f52600460205260405f2090565b3314905061156a565b506117d1610f2733610f928a73ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b611563565b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b357602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b9181601f840112156102b35782359167ffffffffffffffff83116102b3576020808501948460051b0101116102b357565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760043567ffffffffffffffff81116102b3576119179036906004016102c4565b60243567ffffffffffffffff81116102b35761193790369060040161189c565b9173ffffffffffffffffffffffffffffffffffffffff7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c166119c5576119a093337f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d613fd7565b5f7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d005b7f6f5ffb7e000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102b35760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b357600435611a2881610295565b73ffffffffffffffffffffffffffffffffffffffff60243591165f52600660205260405f20905f52602052602060405f2054604051908152f35b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b357602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576020611b0c600435612f2d565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35773ffffffffffffffffffffffffffffffffffffffff600435611b7a81610295565b168015611ba1575f52600360205261058160405f2054604051918291829190602083019252565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152fd5b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576020600854604051908152f35b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760c0611c76600435612f5b565b611ccd604051809373ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60a0820152f35b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576004357fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000081168091036102b3575f908152600a602090815260409182902080546001820154600292830154855173ffffffffffffffffffffffffffffffffffffffff93841681528383169581019590955260a082811c62ffffff169686019690965260b89190911c90920b6060840152166080820152f35b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576004355f526009602052602060405f2054604051908152f35b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760043567ffffffffffffffff81116102b357611e329036906004016102c4565b9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303611f285760408135189063ffffffff60408201351663ffffffe0601f8201169260608401602084013518179282019260608401359483641fffffffe08760051b16805f905b88818310611ef95790506080929150010191011017611eec576060608063ffffffff611ee1961694019201613fd7565b610581610575612d37565b633b99b53d5f526004601cfd5b8294509263ffffffe0601f60808060209687969801013599848b1817998d010135011601019201869291611eb1565b7fae18210a000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576040515f6001548060011c9060018116908115612019575b6020831082146108b75782855260208501919081156108805750600114611fc7576105818461057581860382610778565b60015f9081529250907fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b8184106120055750500161057582610820565b805484840152602090930192600101611ff2565b91607f1691611f96565b346102b35760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760043561205e81610295565b60243580151581036102b3576100209133613f0a565b602081016020825282518091526040820191602060408360051b8301019401925f915b8383106120a657505050505090565b90919293946020806120e2837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0866001960301875289516102f2565b97019301930191939290612097565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760043567ffffffffffffffff81116102b35761213b90369060040161189c565b906121458261306d565b916121536040519384610778565b8083527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06121808261306d565b015f5b8181106121fb5750505f5b8181106121a357604051806105818682612074565b5f806121b08385876130b2565b906121c060405180938193613117565b0390305af46121cd612d4b565b90156121f357906001916121e18287613124565b526121ec8186613124565b500161218e565b602081519101fd5b806060602080938801015201612183565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576004356122627f0000000000000000000000000000000000000000000000000000000000000000613841565b610fba576122708133613b73565b1561133f5761002090614040565b346102b35760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576004356122b981610295565b602435906122c682610295565b60443560643567ffffffffffffffff81116102b3576122e99036906004016102c4565b9390916123157f0000000000000000000000000000000000000000000000000000000000000000613841565b610fba57612331610d66610d4c835f52600260205260405f2090565b9161235473ffffffffffffffffffffffffffffffffffffffff86169384146138e1565b8173ffffffffffffffffffffffffffffffffffffffff82168094612379821515613946565b8033148015612584575b801561255f575b612393906139ab565b6123bb8873ffffffffffffffffffffffffffffffffffffffff165f52600360205260405f2090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190556124098473ffffffffffffffffffffffffffffffffffffffff165f52600360205260405f2090565b8054600101905561242684610e71855f52600260205260405f2090565b61243b610ec6845f52600460205260405f2090565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4612474610f27835f52600960205260405f2090565b61254f575b3b1593841561248c575b61002085612e63565b602094505f906124cc604051978896879586947f150b7a020000000000000000000000000000000000000000000000000000000086523360048701613138565b03925af18015611767577fffffffff000000000000000000000000000000000000000000000000000000007f150b7a020000000000000000000000000000000000000000000000000000000091610020935f91612530575b5016145f808080612483565b612549915060203d602011611760576117528183610778565b5f612524565b61255a818684613a10565b612479565b5061239361257b610d66610d4c865f52600460205260405f2090565b3314905061238a565b506125b4610f2733610f928b73ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b612383565b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b357600435604051907fe9dc637500000000000000000000000000000000000000000000000000000000825230600483015260248201525f8160448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa8015611767575f90612678575b6105819060405191829182610335565b503d805f833e6126888183610778565b8101906020818303126102b35780519067ffffffffffffffff82116102b3570181601f820112156102b357610581918160206126c693519101613173565b612668565b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760207f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b357602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760043567ffffffffffffffff81116102b3576127f39036906004016102c4565b60243573ffffffffffffffffffffffffffffffffffffffff7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c166119c557337f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d804211612939576040517f48c89491000000000000000000000000000000000000000000000000000000008152602060048201525f818061289a602482018789612ca5565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af18015611767576128e9575b610020613fb2565b3d805f833e6128f88183610778565b8101906020818303126102b35780519067ffffffffffffffff82116102b357019080601f830112156102b357815161293292602001613173565b50806128e1565b7fbfb22adf000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b346102b35760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b357602060ff6129f66004356129a681610295565b73ffffffffffffffffffffffffffffffffffffffff602435916129c883610295565b165f526005845260405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b54166040519015158152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360160c081126102b35760a0136102b35760a435612a4081610295565b73ffffffffffffffffffffffffffffffffffffffff604051917f6276cbbe00000000000000000000000000000000000000000000000000000000835281600435612a8981610295565b16600484015281602435612a9c81610295565b16602484015262ffffff604435612ab2816131c9565b166044840152606435612ac4816131a9565b60020b6064840152612af8608435612adb81610295565b73ffffffffffffffffffffffffffffffffffffffff166084850152565b1660a482015260208160c4815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1801561176757610581915f91612b65575b5060405160029190910b81529081906020820190565b612b87915060203d602011612b8d575b612b7f8183610778565b8101906131b4565b5f612b4f565b503d612b75565b359065ffffffffffff821682036102b357565b73ffffffffffffffffffffffffffffffffffffffff602435612bc881610295565b16815273ffffffffffffffffffffffffffffffffffffffff604435612bec81610295565b16602082015260643565ffffffffffff81168091036102b357604082015260843565ffffffffffff811681036102b35765ffffffffffff60609116910152565b65ffffffffffff612c9f6060809373ffffffffffffffffffffffffffffffffffffffff8135612c5a81610295565b16865273ffffffffffffffffffffffffffffffffffffffff6020820135612c8081610295565b16602087015283612c9360408301612b94565b16604087015201612b94565b16910152565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b6040513d5f823e3d90fd5b604051906102c2608083610778565b67ffffffffffffffff811161077357601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60405190612d46602083610778565b5f8252565b3d15612d75573d90612d5c82612cfd565b91612d6a6040519384610778565b82523d5f602084013e565b606090565b604090610346949281528160208201520191612ca5565b467f000000000000000000000000000000000000000000000000000000000000000003612ddc577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f0000000000000000000000000000000000000000000000000000000000000000604082015246606082015230608082015260808152612e4860a082610778565b51902090565b908160209103126102b35751610346816105d0565b15612e6a57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152fd5b15612ecf57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152fd5b5f52600260205273ffffffffffffffffffffffffffffffffffffffff60405f205416906102c2821515612ec8565b5f6080604051612f6a81610757565b82815282602082015282604082015282606082015201525f52600960205260405f2054807fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000165f52600a60205260405f2061306a61304d600260405193612fd085610757565b73ffffffffffffffffffffffffffffffffffffffff8154168552613032613028600183015473ffffffffffffffffffffffffffffffffffffffff8116602089015262ffffff8160a01c16604089015260b81c60020b90565b60020b6060870152565b015473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff166080830152565b91565b67ffffffffffffffff81116107735760051b60200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b91908110156131125760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102b357019081359167ffffffffffffffff83116102b35760200182360381136102b3579190565b613085565b908092918237015f815290565b80518210156131125760209160051b010190565b909273ffffffffffffffffffffffffffffffffffffffff60809381610346989616845216602083015260408201528160608201520191612ca5565b92919261317f82612cfd565b9161318d6040519384610778565b8294818452818301116102b3578281602093845f96015e010152565b8060020b036102b357565b908160209103126102b35751610346816131a9565b62ffffff8116036102b357565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633141580613244575b61321c57565b7f38bbd576000000000000000000000000000000000000000000000000000000005f5260045ffd5b5073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016331415613216565b9073ffffffffffffffffffffffffffffffffffffffff600160ff83161b92165f52600660205260405f209060081c5f5260205260405f208181541880915516156132ca57565b7f1fb09b80000000000000000000000000000000000000000000000000000000005f5260045ffd5b9073ffffffffffffffffffffffffffffffffffffffff8091845f52600460205261335a8160405f209073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b1691167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a4565b9061338c612d91565b91604051927f19010000000000000000000000000000000000000000000000000000000000008452600284015260228301525f604060428420938281528260208201520152565b91908260409103126102b3576020823592013590565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b60ff601b9116019060ff821161342857565b6133e9565b90604010156131125760400190565b90833b6135eb576041810361355f57906020926134c58361349d6134976134716134695f988801886133d3565b94909761342d565b357fff000000000000000000000000000000000000000000000000000000000000001690565b60f81c90565b935b604051948594859094939260ff6060936080840197845216602083015260408201520152565b838052039060015afa156117675773ffffffffffffffffffffffffffffffffffffffff5f51169081156135375773ffffffffffffffffffffffffffffffffffffffff160361350f57565b7f815e1d64000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f8baa579f000000000000000000000000000000000000000000000000000000005f5260045ffd5b90604082036135c35760209261357c825f946134c59401906133d3565b9290926135bd6135b86135b27f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c90565b60ff1690565b613416565b9361349f565b7f4be6321b000000000000000000000000000000000000000000000000000000005f5260045ffd5b909261363f9373ffffffffffffffffffffffffffffffffffffffff602094604051968795869485937f1626ba7e00000000000000000000000000000000000000000000000000000000855260048501612d7a565b0392165afa908115611767577f1626ba7e00000000000000000000000000000000000000000000000000000000917fffffffff00000000000000000000000000000000000000000000000000000000915f916136c7575b50160361369f57565b7fb0669cbc000000000000000000000000000000000000000000000000000000005f5260045ffd5b6136e0915060203d602011611760576117528183610778565b5f613696565b929160a092604051946026860152600685015260038401523083525f603a600c850120938160408201528160208201525220604051602081019182526006604082015260408152613738606082610778565b5190206006810180911161342857604080516020818101948552918101929092526137a792909161376c8160608101611290565b519020604051809381927f1e2eaeaf000000000000000000000000000000000000000000000000000000008352600483019190602083019252565b038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa8015611767576fffffffffffffffffffffffffffffffff915f9161380557501690565b613827915060203d60201161382b575b61381f8183610778565b810190613832565b1690565b503d613815565b908160209103126102b3575190565b602073ffffffffffffffffffffffffffffffffffffffff916024604051809481937ff135baaa0000000000000000000000000000000000000000000000000000000083527fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab236004840152165afa908115611767575f916138c2575b50151590565b6138db915060203d60201161382b5761381f8183610778565b5f6138bc565b156138e857565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152fd5b1561394d57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152fd5b156139b257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152fd5b73ffffffffffffffffffffffffffffffffffffffff613a8b9293825f526007602052818060405f20541695604051947f876fda07000000000000000000000000000000000000000000000000000000006020870152602486015216604484015216606482015260648152613a85608482610778565b82613c49565b15613a935750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011673ffffffffffffffffffffffffffffffffffffffff604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301527f876fda07000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7f8b6bc10d0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b73ffffffffffffffffffffffffffffffffffffffff613b9183612f2d565b169173ffffffffffffffffffffffffffffffffffffffff8216928314928315613c1b575b508215613bc157505090565b60ff92509073ffffffffffffffffffffffffffffffffffffffff613be7613c1693612f2d565b165f52600560205260405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b541690565b908093505f52600460205273ffffffffffffffffffffffffffffffffffffffff60405f20541614915f613bb5565b803b15613c6257815f92918360208194519301915af190565b7f7c402b21000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011673ffffffffffffffffffffffffffffffffffffffff604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301527f8d57f6b2000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7f81ea5e9e0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011673ffffffffffffffffffffffffffffffffffffffff604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301527fa9059cbb000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff27f64e40000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011673ffffffffffffffffffffffffffffffffffffffff604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301525f6024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff4b3b1bc0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b602073ffffffffffffffffffffffffffffffffffffffff807f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31931693845f5260058352613f788160405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b951515957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff88161790556040519586521693a3565b5f7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d565b90929193828403614018575f5b848110156140105760019061400a81850161400083888b6130b2565b913560f81c6141cd565b01613fe4565b509350505050565b7faaad13f7000000000000000000000000000000000000000000000000000000005f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff61406a610d4c835f52600760205260405f2090565b1690811561417d575f81815260096020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556140ba610ec6825f52600760205260405f2090565b813b6140e7575b7fa0ebb1de82db929a9153472f37d3a66dbede4436258311ad0f52a35a2c91d1505f80a3565b5a7f000000000000000000000000000000000000000000000000000000000000000080911061417857823b156102b3575f60405180927faf45dd140000000000000000000000000000000000000000000000000000000082528183878261415689600483019190602083019252565b0393f1614164575b506140c1565b8061059c5f61417293610778565b5f61415e565b6141a5565b7f237e6c28000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fed43c3a6000000000000000000000000000000000000000000000000000000005f5260045ffd5b909190600981101561429d57806141f857506141ec906102c292615251565b949390939291926152f8565b6001810361421a575061420e906102c292615251565b94939093929192615293565b600281036142495750614233614243916102c293614da3565b989097969195929594939461465a565b95614fe8565b916003831461428557505061133c91505b7f5cda29d7000000000000000000000000000000000000000000000000000000005f52600452602490565b6102c292509061429491614b9f565b93929092614bdb565b9050601181036142b857506102c29060208101359035614b61565b601581036142ea57506142e46142db6102c2928035916040602083013592013590565b9290919261465a565b91614b46565b60098103614328575061431c6143226143106102c2938035916040602083013592013590565b9382949392919361492c565b9261495a565b9161499b565b60128103614364575061435e61435861434e6102c2938035916040602083013592013590565b928294929161465a565b92614850565b91614864565b6017810361437757506102c290356147e4565b6018810361439057506102c290602081013590356146ca565b601981036143b357506102c2908035906143ad906020013561465a565b906146ac565b6020810361440657506144016102c29173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690356144e5565b6145d7565b906021821461441a575061133c915061425a565b6102c29150614460903573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016614465565b614541565b614470903090615359565b7f800000000000000000000000000000000000000000000000000000000000000082146144e05781156144cf575b81116144a75790565b7ff4d678b8000000000000000000000000000000000000000000000000000000005f5260045ffd5b90506144da5f6153f3565b9061449e565b905090565b906144f0305f615359565b907f8000000000000000000000000000000000000000000000000000000000000000831461453b578215614529575b5081116144a75790565b6145349192506153f3565b905f61451f565b50905090565b806145495750565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b156102b3575f916024839260405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af18015611767576145cd5750565b5f6102c291610778565b806145df5750565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b156102b3575f906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af18015611767576145cd5750565b73ffffffffffffffffffffffffffffffffffffffff8116600181036146a05750507f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c90565b60020361034657503090565b906146b682615472565b90816146c157505050565b6102c2926154f2565b906146d4826155bf565b90811161478c5773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691823b156102b35773ffffffffffffffffffffffffffffffffffffffff925f926040519485937f80f0b44c00000000000000000000000000000000000000000000000000000000855216600484015260248301528183604482800301925af180156117675761477e5750565b8061059c5f6102c293610778565b6102c2917f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c90614864565b7f80000000000000000000000000000000000000000000000000000000000000008114613428575f0390565b61480f81307f0000000000000000000000000000000000000000000000000000000000000000615638565b907f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c5f831215614846576143226102c2936147b8565b6102c29291614864565b90816148605761034691506155bf565b5090565b909180156149275773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b156102b3575f928360649273ffffffffffffffffffffffffffffffffffffffff948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af18015611767576149125750565b8061491e5f8093610778565b8003126102b357565b505050565b15614956577f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c90565b3090565b907f8000000000000000000000000000000000000000000000000000000000000000820361498c576103469150615472565b816148605761034691506153f3565b919081156149275773ffffffffffffffffffffffffffffffffffffffff8316614a51575060049150602090604051928380927f11da60b400000000000000000000000000000000000000000000000000000000825273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1801561176757614a365750565b614a4e9060203d60201161382b5761381f8183610778565b50565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b156102b3576040517fa584119400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152925f8460248183875af1918215611767575f95602095614af794614b32575b506156a3565b6004604051809481937f11da60b40000000000000000000000000000000000000000000000000000000083525af1801561176757614a365750565b8061059c89614b4093610778565b5f614af1565b91614b586102c2938261435e826155bf565b61435e826155bf565b906102c291614b967f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c9182614322826153f3565b614322826153f3565b919082359260208101359260408201359263ffffffff60608401351683019063ffffffff82351693602080840193860101910110611eec579190565b937f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c614c088682613b73565b15614d61575090849291614c1b84612f5b565b9590916fffffffffffffffffffffffffffffffff614c478860201c60020b8960081c60020b868a6136e6565b1691865f5260096020525f6040812055865f526002602052865f73ffffffffffffffffffffffffffffffffffffffff604082205416614c87811515612ec8565b8082526003602052604082207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8154019055614cce610ec6845f52600260205260405f2090565b614ce3610ec6845f52600460205260405f2090565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a482614d27575b5050505050505060ff16614d1e5750565b6102c290614040565b614d5596614d5094614d43614d3e614d4a966157da565b6147b8565b908a6158b7565b906159b6565b6159f3565b815f8080808080614d0d565b73ffffffffffffffffffffffffffffffffffffffff907f0ca968d8000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b9091819260a08301359260c08101359260e08201359261010083013592610120810135926101408201359263ffffffff6101608401351683019063ffffffff82351693602080840193860101910110611eec579190565b91908260a09103126102b357604051614e1281610757565b60808082948035614e2281610295565b84526020810135614e3281610295565b60208501526040810135614e45816131c9565b60408501526060810135614e58816131a9565b6060850152013591614e6983610295565b0152565b600260806102c293614ec48135614e8381610295565b859073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b60018401614f1a6020830135614ed981610295565b829073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b6040820135614f28816131c9565b81547fffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff76ffffff00000000000000000000000000000000000000006060860135614f71816131a9565b60b81b79ffffff0000000000000000000000000000000000000000000000169360a01b16911617179055013591614fa783610295565b019073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b909194969297939597600854926001840160085573ffffffffffffffffffffffffffffffffffffffff8a169961501f8b1515613946565b845f52600260205273ffffffffffffffffffffffffffffffffffffffff60405f2054166151f35761510f6151aa986151a493876102c29e61509e8661508561519c9873ffffffffffffffffffffffffffffffffffffffff165f52600360205260405f2090565b80546001019055610e71845f52600260205260405f2090565b5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a46150cd3688614dfa565b63ffffff007fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000060a066ffffff000000009320169260081b169260201b16171790565b9283615123875f52600960205260405f2090565b55837fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000168561518c6001615181847fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000165f52600a60205260405f2090565b015460b81c60020b90565b60020b156151b0575b50506157da565b923690614dfa565b906158b7565b50615aba565b6151e76151ec927fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000165f52600a60205260405f2090565b614e6d565b5f85615195565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4d494e5445440000000000000000000000000000000000006044820152fd5b909181359260208301359260408101359260608201359263ffffffff60808401351683019063ffffffff82351693602080840193860101910110611eec579190565b90959495939192937f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c6152c78382613b73565b15614d61575095614d509282614d3e6102c298996152f26152ea614d4a97612f5b565b9390926157da565b916158b7565b90959495939192937f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c61532c8382613b73565b15614d6157509561535492826152f26102c2989961534c614d4a96612f5b565b9290916157da565b615aba565b73ffffffffffffffffffffffffffffffffffffffff811661537957503190565b9073ffffffffffffffffffffffffffffffffffffffff60246020928260405195869485937f70a08231000000000000000000000000000000000000000000000000000000008552166004840152165afa908115611767575f916153da575090565b610346915060203d60201161382b5761381f8183610778565b61541e81307f0000000000000000000000000000000000000000000000000000000000000000615638565b905f82136154305750610346906147b8565b73ffffffffffffffffffffffffffffffffffffffff907f3351b260000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff811661549257504790565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152906020908290602490829073ffffffffffffffffffffffffffffffffffffffff165afa908115611767575f916153da575090565b90919073ffffffffffffffffffffffffffffffffffffffff811661552c57505f80808061552094865af11590565b6155275750565b613e4a565b919073ffffffffffffffffffffffffffffffffffffffff604051927fa9059cbb00000000000000000000000000000000000000000000000000000000845216600483015260248201525f604060208260448582885af13d15601f3d116001855114161716928281528260208201520152156155a45750565b73ffffffffffffffffffffffffffffffffffffffff16613d6a565b6155ea81307f0000000000000000000000000000000000000000000000000000000000000000615638565b905f82126155f6575090565b73ffffffffffffffffffffffffffffffffffffffff907f4c085bf1000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff809381602094165f52168252602460405f2060405194859384927ff135baaa0000000000000000000000000000000000000000000000000000000084526004840152165afa908115611767575f916153da575090565b90919073ffffffffffffffffffffffffffffffffffffffff83163003615705576102c2925073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906154f2565b9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b156102b3576040517f36c7851600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff94851660048201527f00000000000000000000000000000000000000000000000000000000000000008516602482015291841660448301529190921660648301525f908290608490829084905af180156117675761477e5750565b905f82126157e457565b7f93dafdf1000000000000000000000000000000000000000000000000000000005f5260045ffd5b91908260409103126102b3576020825192015190565b60606103469593615880836101409573ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b805160020b60a0840152602081015160020b60c0840152604081015160e08401520151610100820152816101208201520191612ca5565b95939460409161591d6158c8612cee565b60088a901c60020b81529260208a811c60020b908501528585850152866060850152845198899485947f5a6bcfda00000000000000000000000000000000000000000000000000000000865260048601615822565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1908115611767575f945f92615982575b5081949560ff1661597957505050565b6102c292615c1d565b9094506159a7915060403d6040116159af575b61599f8183610778565b81019061580c565b90935f615969565b503d615995565b6159d9906159cb8360801d8260801d03615d60565b92600f0b90600f0b03615d60565b6fffffffffffffffffffffffffffffffff169060801b1790565b929190926fffffffffffffffffffffffffffffffff8160801d9481615a1787615d6e565b91169182911610615a9f57506fffffffffffffffffffffffffffffffff929350600f0b9082615a4583615d6e565b91169283911610615a54575050565b90615a6f6fffffffffffffffffffffffffffffffff92615d6e565b907f12816f22000000000000000000000000000000000000000000000000000000005f526004521660245260445ffd5b6fffffffffffffffffffffffffffffffff90615a6f86615d6e565b908160801d600f0b91600f0b915f811280615be8575b615b865750505f811280615b4f575b615ae7575050565b90615b0c615af761133c936147b8565b6fffffffffffffffffffffffffffffffff1690565b7f31e30ad0000000000000000000000000000000000000000000000000000000005f526fffffffffffffffffffffffffffffffff91821660045216602452604490565b506fffffffffffffffffffffffffffffffff80615b6b836147b8565b16166fffffffffffffffffffffffffffffffff831610615adf565b906fffffffffffffffffffffffffffffffff615ba461133c936147b8565b7f31e30ad0000000000000000000000000000000000000000000000000000000005f526fffffffffffffffffffffffffffffffff9283166004521616602452604490565b506fffffffffffffffffffffffffffffffff615c03826147b8565b166fffffffffffffffffffffffffffffffff831610615ad0565b615c8e9192815f52600760205273ffffffffffffffffffffffffffffffffffffffff60405f20541693604051927fd8865c2700000000000000000000000000000000000000000000000000000000602085015260248401526044830152606482015260648152613a85608482610778565b15615c965750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d0116604051917f90bfb86500000000000000000000000000000000000000000000000000000000835260048301527fd8865c27000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7fe94f10e20000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b9081600f0b9182036157e457565b5f81600f0b126157e4576fffffffffffffffffffffffffffffffff169056fea164736f6c634300081a000a000000000000000000000000d51ccb81de8426637f7b6fa8405b1990a3b81648000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba30000000000000000000000000000000000000000000000000000000000030d4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004200000000000000000000000000000000000006", + "nonce": "0x11a", + "chainId": "0x515" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x560b26", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xd9539b73c68e405c2a5c433ed5f303ff58b9390c1ee7b32324369e70d535e5b6", + "transactionIndex": "0x9", + "blockHash": "0x6e5813532e5afb59e7ea3ac436b5b8c188b070583ce96a89b606b48c5b88df00", + "blockNumber": "0x494bf3", + "gasUsed": "0x5080a7", + "effectiveGasPrice": "0xcf951", + "from": "0x7024cc7e60d6560f0b5877da2bb921fcbf1f4375", + "to": null, + "contractAddress": "0x5cd9d2ae2bbbf59599d92ff57621d257be371639", + "l1BaseFeeScalar": "0x7d0", + "l1BlobBaseFee": "0x248e3c17c", + "l1BlobBaseFeeScalar": "0xdbba0", + "l1Fee": "0x538c20b0ebf2", + "l1GasPrice": "0x2c64af0c", + "l1GasUsed": "0x28858" + } + ], + "libraries": [], + "pending": [], + "returns": { + "posm": { + "internal_type": "contract PositionManager", + "value": "0x5Cd9D2Ae2BBbF59599d92fF57621d257be371639" + }, + "positionDescriptor": { + "internal_type": "contract PositionDescriptor", + "value": "0x0000000000000000000000000000000000000000" + } + }, + "timestamp": 1731656032, + "chain": 1301, + "commit": "9ed8b498" +} \ No newline at end of file diff --git a/broadcast/DeployPosm.s.sol/84532/run-latest.json b/broadcast/DeployPosm.s.sol/84532/run-latest.json index d96c8c6e..5cab3eb9 100644 --- a/broadcast/DeployPosm.s.sol/84532/run-latest.json +++ b/broadcast/DeployPosm.s.sol/84532/run-latest.json @@ -1,22 +1,24 @@ { "transactions": [ { - "hash": "0x6868534dcf11b1774abdd69602eee0fc3b3d77b9f5e13437dedf8fbb145dea2c", - "transactionType": "CREATE2", + "hash": "0x9bb6b8adc3094f2707dd830bb7011715ad5a80dd01bda45a050f52809dcc1c12", + "transactionType": "CREATE", "contractName": "PositionManager", - "contractAddress": "0xa2f16f0bb5dea7c9a6675ec88193471dee805e6e", + "contractAddress": "0x2224f77c646fd4322df82c374e935921f6aae19e", "function": null, "arguments": [ - "0x39BF2eFF94201cfAA471932655404F63315147a4", - "0x000000000022D473030F116dDEE9F6B43aC78BA3" + "0xcFA0A7b03Da220b5d68fFA048aaCf48daeE1915e", + "0x000000000022D473030F116dDEE9F6B43aC78BA3", + "200000", + "0x0000000000000000000000000000000000000000", + "0x4200000000000000000000000000000000000006" ], "transaction": { "from": "0x7024cc7e60d6560f0b5877da2bb921fcbf1f4375", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "gas": "0x65e448", + "gas": "0x68a73f", "value": "0x0", - "input": "0x03000000000000000000000000000000000000000000000000000000000000006101206040526001600855348015610015575f80fd5b5060405161591738038061591783398101604081905261003491610161565b808280806040518060400160405280601881526020017f556e697377617020563420506f736974696f6e73204e465400000000000000008152506040518060400160405280600b81526020016a554e492d56342d504f534d60a81b815250818282815f90816100a39190610231565b5060016100b08282610231565b50508151602083012060c052504660a05261012460c051604080517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8666020820152908101919091524660608201523060808201525f9060a00160405160208183030381529060405280519060200120905090565b6080525050506001600160a01b0390811660e0529290921661010052506102eb92505050565b6001600160a01b038116811461015e575f80fd5b50565b5f8060408385031215610172575f80fd5b825161017d8161014a565b602084015190925061018e8161014a565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806101c157607f821691505b6020821081036101df57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561022c57805f5260205f20601f840160051c8101602085101561020a5750805b601f840160051c820191505b81811015610229575f8155600101610216565b50505b505050565b81516001600160401b0381111561024a5761024a610199565b61025e8161025884546101ad565b846101e5565b6020601f821160018114610290575f83156102795750848201515b5f19600385901b1c1916600184901b178455610229565b5f84815260208120601f198516915b828110156102bf578785015182556020948501946001909201910161029f565b50848210156102dc57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60805160a05160c05160e051610100516155716103a65f395f81816103250152818161075201528181610b10015261403c01525f81816106a701528181610d2901528181610fa6015281816117de015281816127ab0152818161334b0152818161341e0152818161348201528181613571015281816135e0015281816136b3015281816137a901528181613d9701528181613e3701528181613f9a015261400401525f610bb801525f610b6401525f610c1201526155715ff3fe60806040526004361061020e575f3560e01c8063502e1a161161011757806395d89b41116100ac578063c87b56dd1161007c578063dc4c90d311610062578063dc4c90d314610696578063dd46508f146106c9578063e985e9c5146106dc575f80fd5b8063c87b56dd14610611578063d737d0c714610663575f80fd5b806395d89b411461059f578063a22cb465146105b3578063ac9650d8146105d2578063b88d4fde146105f2575f80fd5b8063645add16116100e7578063645add161461053957806370a082311461054c57806375794a3c1461056b57806391dd734614610580575f80fd5b8063502e1a16146104b257806357b22ebf146104e85780636352211e14610507578063635ba6de14610526575f80fd5b806323b872dd116101a75780633aea60f01161017757806342842e0e1161015d57806342842e0e1461044057806345074cef1461045f5780634afe393c1461049f575f80fd5b80633aea60f0146103fb5780633b1fda971461040e575f80fd5b806323b872dd146103885780632b67b570146103a75780633355c213146103ba5780633644e515146103d9575f80fd5b8063095ea7b3116101e2578063095ea7b3146102e25780630f5730f11461030157806312261ee71461031457806316a2413114610347575f80fd5b80622a3e3a1461021257806301ffc9a71461022757806306fdde031461025b578063081812fc1461027c575b5f80fd5b6102256102203660046143bd565b610715565b005b348015610232575f80fd5b50610246610241366004614467565b6107c0565b60405190151581526020015b60405180910390f35b348015610266575f80fd5b5061026f6108a4565b60405161025291906144ce565b348015610287575f80fd5b506102bd6102963660046144e0565b60046020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610252565b3480156102ed575f80fd5b506102256102fc3660046144f7565b61092f565b61022561030f366004614521565b6109da565b34801561031f575f80fd5b506102bd7f000000000000000000000000000000000000000000000000000000000000000081565b348015610352575f80fd5b506102bd6103613660046144e0565b60076020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b348015610393575f80fd5b506102256103a236600461458f565b610aa7565b6102256103b53660046145cd565b610ad3565b3480156103c5575f80fd5b506102466103d43660046144e0565b610b4b565b3480156103e4575f80fd5b506103ed610b61565b604051908152602001610252565b61022561040936600461464d565b610c34565b348015610419575f80fd5b5061042d6104283660046146d4565b610cea565b60405160029190910b8152602001610252565b34801561044b575f80fd5b5061022561045a36600461458f565b610dad565b34801561046a575f80fd5b5061047e610479366004614738565b610f13565b6040516fffffffffffffffffffffffffffffffff9091168152602001610252565b6102256104ad3660046147a5565b610fd5565b3480156104bd575f80fd5b506103ed6104cc3660046144f7565b600660209081525f928352604080842090915290825290205481565b3480156104f3575f80fd5b506103ed6105023660046144e0565b611068565b348015610512575f80fd5b506102bd6105213660046144e0565b61109d565b610225610534366004614805565b61112d565b610225610547366004614875565b611491565b348015610557575f80fd5b506103ed6105663660046148b6565b61171e565b348015610576575f80fd5b506103ed60085481565b34801561058b575f80fd5b5061026f61059a3660046148d1565b6117c4565b3480156105aa575f80fd5b5061026f611846565b3480156105be575f80fd5b506102256105cd366004614910565b611853565b6105e56105e036600461493a565b611862565b604051610252919061496d565b3480156105fd575f80fd5b5061022561060c3660046149ee565b611970565b34801561061c575f80fd5b5061026f61062b3660046144e0565b5060408051808201909152601381527f68747470733a2f2f6578616d706c652e636f6d00000000000000000000000000602082015290565b34801561066e575f80fd5b507f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c6102bd565b3480156106a1575f80fd5b506102bd7f000000000000000000000000000000000000000000000000000000000000000081565b6102256106d7366004614a3f565b611ac7565b3480156106e7575f80fd5b506102466106f6366004614a87565b600560209081525f928352604080842090915290825290205460ff1681565b6040517f2a2d80d100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632a2d80d19061078d908790879087908790600401614b9c565b5f604051808303815f87803b1580156107a4575f80fd5b505af11580156107b6573d5f803e3d5ffd5b5050505050505050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061085257507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061089e57507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b5f80546108b090614caf565b80601f01602080910402602001604051908101604052809291908181526020018280546108dc90614caf565b80156109275780601f106108fe57610100808354040283529160200191610927565b820191905f5260205f20905b81548152906001019060200180831161090a57829003601f168201915b505050505081565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16338114801590610993575073ffffffffffffffffffffffffffffffffffffffff81165f90815260056020908152604080832033845290915290205460ff16155b156109ca576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109d5818484611b8e565b505050565b8380421115610a15576040517f5a9165ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610a1f8761109d565b9050610a2b8189611c0e565b604080517f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad8152602081018a9052908101889052606081018690526080810187905260a09020610a87610a7d82611c73565b8690869085611cbc565b610a918287611ff5565b610a9c828a8a611b8e565b505050505050505050565b610ab2838383612082565b5f8181526009602052604090205460ff1c156109d5576109d5818484612345565b6040517f2b67b57000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632b67b5709061078d908790879087908790600401614cfa565b5f8181526009602052604081205460ff1c61089e565b5f7f00000000000000000000000000000000000000000000000000000000000000004614610c0f57610c0a604080517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86660208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091524660608201523060808201525f9060a00160405160208183030381529060405280519060200120905090565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b8380421115610c6f576040517f5a9165ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c798888611c0e565b604080517f6673cb397ee2a50b6b8401653d3638b4ac8b3db9c28aa6870ffceb7574ec2f76815260208101899052908101879052606081018590526080810186905260a09020610cd5610ccb82611c73565b859085908c611cbc565b610cdf8986611ff5565b610a9c8989896123e8565b6040517f695c5bf50000000000000000000000000000000000000000000000000000000081525f9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063695c5bf590610d64908890889088908890600401614e3e565b6020604051808303815f875af1158015610d80573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610da49190614e7a565b95945050505050565b610db8838383610aa7565b73ffffffffffffffffffffffffffffffffffffffff82163b1580610ea857506040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401525f608484015290919084169063150b7a029060a4016020604051808303815f875af1158015610e60573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e849190614e95565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b6109d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e540000000000000000000000000000000060448201526064015b60405180910390fd5b5f80610f7130610f2960c0860160a08701614eb0565b610f3960e0870160c08801614eb0565b60408051602681018a905260068101929092526003820192909252918252603a600c8301205f91830182905260208301829052915290565b9050610fcd610f8f610f8836869003860186614fdf565b60a0902090565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016908361247f565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c1615611044576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61104d3361251c565b61105984848484612542565b6110625f61251c565b50505050565b5f818152600960205260408120547f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661089e565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680611128576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610f0a565b919050565b338561113982826125db565b611187576040517f0ca968d800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152602401610f0a565b86866111ec816040805160c0830135603482015260a083013560318201526080830135602e8201526060830135601a8201528282013560178201526020808401356014830152923581526048600c8201205f9282018390529281018290525260011c90565b5f838152600960205260409020547f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1614611256576040517fa640d5e000000000000000000000000000000000000000000000000000000000815260048101839052602401610f0a565b5f89815260096020908152604080832080547f8000000000000000000000000000000000000000000000000000000000000000179055600790915290205473ffffffffffffffffffffffffffffffffffffffff1680156112fa576040517f73a4164900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602401610f0a565b5f8a81526007602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8c1617905551611405908a907f140e8f140000000000000000000000000000000000000000000000000000000090611383908f908f908e908e90602401615035565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612696565b905080611436576114367ff0aa7ed4000000000000000000000000000000000000000000000000000000008a6126aa565b604080518c815273ffffffffffffffffffffffffffffffffffffffff8b1660208201527f5db0e562b58e88ae25b795493b5a9c538bb02bd38430aa3194dbf8c68f619f54910160405180910390a15050505050505050505050565b338461149d82826125db565b6114eb576040517f0ca968d800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152602401610f0a565b8585611550816040805160c0830135603482015260a083013560318201526080830135602e8201526060830135601a8201528282013560178201526020808401356014830152923581526048600c8201205f9282018390529281018290525260011c90565b5f838152600960205260409020547f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16146115ba576040517fa640d5e000000000000000000000000000000000000000000000000000000000815260048101839052602401610f0a565b5f88815260096020908152604080832080547f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff169055600790915281205473ffffffffffffffffffffffffffffffffffffffff169061161a4560646126dd565b90508173ffffffffffffffffffffffffffffffffffffffff1663a774548d828c8c8c8c6040518663ffffffff1660e01b815260040161165c9493929190615035565b5f604051808303815f88803b158015611673575f80fd5b5087f193505050508015611685575060015b505f8a8152600760205260409081902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055517fcf0a5b88aeaa4455f33d4a50e7ee5e61255edaad94b95183268b86c5f41f4eff9061170a908c90859091825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b60405180910390a150505050505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff821661179c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610f0a565b5073ffffffffffffffffffffffffffffffffffffffff165f9081526003602052604090205490565b60603373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614611835576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61183f8383612731565b9392505050565b600180546108b090614caf565b61185e3383836123e8565b5050565b60608167ffffffffffffffff81111561187d5761187d614ecb565b6040519080825280602002602001820160405280156118b057816020015b606081526020019060019003908161189b5790505b5090505f5b82811015611969575f80308686858181106118d2576118d261505e565b90506020028101906118e4919061508b565b6040516118f29291906150ec565b5f60405180830381855af49150503d805f811461192a576040519150601f19603f3d011682016040523d82523d5f602084013e61192f565b606091505b50915091508161194157805160208201fd5b808484815181106119545761195461505e565b602090810291909101015250506001016118b5565b5092915050565b61197b858585610aa7565b73ffffffffffffffffffffffffffffffffffffffff84163b1580611a5a57506040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff86169063150b7a02906119f69033908a908990899089906004016150fb565b6020604051808303815f875af1158015611a12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a369190614e95565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b611ac0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610f0a565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c1615611b36576040517f6f5ffb7e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b3f3361251c565b8080421115611b7a576040517f70f65caa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b84848461276e565b506109d55f61251c565b5f8181526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361185e576040517f80e05c0000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80611c7d610b61565b6040517f190100000000000000000000000000000000000000000000000000000000000081526002810191909152602281019390935250506042902090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff163b5f03611ed8576041869003611d1b57611cf286880188615157565b909350915086866040818110611d0a57611d0a61505e565b919091013560f81c9150611da49050565b6040869003611d72575f611d3187890189615157565b9094507f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811693509050611d6a60ff82901c601b6151a4565b915050611da4565b6040517f4be6321b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080515f8082526020820180845288905260ff841692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa158015611df5573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611e6d576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611ed2576040517f815e1d6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50611fec565b6040517f1626ba7e0000000000000000000000000000000000000000000000000000000081525f9073ffffffffffffffffffffffffffffffffffffffff861690631626ba7e90611f309089908c908c906004016151bd565b602060405180830381865afa158015611f4b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f6f9190614e95565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167f1626ba7e00000000000000000000000000000000000000000000000000000000146107b6576040517fb0669cbc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600660209081526040808320600885901c808552925282208054600160ff861690811b918218928390559293909190818316900361207a576040517f1fb09b8000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff848116911614612111576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401610f0a565b73ffffffffffffffffffffffffffffffffffffffff821661218e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610f0a565b3373ffffffffffffffffffffffffffffffffffffffff841614806121e1575073ffffffffffffffffffffffffffffffffffffffff83165f90815260056020908152604080832033845290915290205460ff165b8061220e57505f8181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b612274576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610f0a565b73ffffffffffffffffffffffffffffffffffffffff8084165f81815260036020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055938616808352848320805460010190558583526002825284832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5f838152600760205260408082205490516024810186905273ffffffffffffffffffffffffffffffffffffffff8581166044830152848116606483015290911691906123b79083907f876fda070000000000000000000000000000000000000000000000000000000090608401611383565b905080611ac057611ac07f263bc7b500000000000000000000000000000000000000000000000000000000836126aa565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b5f8061248b8484612842565b6040517f1e2eaeaf0000000000000000000000000000000000000000000000000000000081526004810182905290915073ffffffffffffffffffffffffffffffffffffffff861690631e2eaeaf906024015b602060405180830381865afa1580156124f8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610da491906151d6565b807f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d50565b8281811461257c576040517faaad13f700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8181101561207a575f8686838181106125995761259961505e565b919091013560f81c91506125d29050818686858181106125bb576125bb61505e565b90506020028101906125cd919061508b565b612892565b5060010161257e565b5f6125e58261109d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061264357505f8281526004602052604090205473ffffffffffffffffffffffffffffffffffffffff8481169116145b8061183f575060055f6126558461109d565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182015f9081209187168152925290205460ff16905092915050565b5f805f8351602085015f875af19392505050565b3d60405183815282600482015260406024820152816044820152815f606483013e602080601f8401040260640191508181fd5b5f61271082111561271a576040517fdeaa01e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61271061272783856151ed565b61183f9190615204565b6060365f365f6127418787612a9a565b935093509350935061275584848484612542565b505060408051602081019091525f815295945050505050565b6040517f48c8949100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906348c89491906127e2908590859060040161523c565b5f604051808303815f875af11580156127fd573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526109d5919081019061524f565b5f8061284d84612af7565b90505f61285b600683615301565b6040805160208101879052908101829052909150606001604051602081830303815290604052805190602001209250505092915050565b60098310156129b557826128da575f365f805f365f6128b18989612b33565b96509650965096509650965096506128ce87878787878787612b69565b50505050505050505050565b60018303612910575f365f805f365f6128f38989612b33565b96509650965096509650965096506128ce87878787878787612cf3565b6002830361294e57365f805f80365f6129298989612e6f565b96509650965096509650965096506128ce8787878761294788612e95565b8787612f42565b60038303612980575f365f80365f612966888861303b565b955095509550955095509550610a9c868686868686613069565b6040517f5cda29d700000000000000000000000000000000000000000000000000000000815260048101849052602401610f0a565b601183036129ce5781356020830135611ac08282613232565b601583036129ed5781356020830135604084013561207a838383613270565b60098303612a1d5781356020830135604084013561207a83612a0e83613298565b612a1885876132cb565b61332e565b60128303612a4d5781356020830135604084013561207a83612a3e84612e95565b612a48848761350e565b61351d565b60178303612a60578135611062816135c5565b60188303612a795781356020830135611ac08282613654565b601983036129805781356020830135611ac082612a9583612e95565b61370e565b813582016020818101913590848101358501808201918135918790038082019190830101861015612aed577f3b99b53d000000000000000000000000000000000000000000000000000000005f5260045ffd5b5092959194509250565b6040515f90612b16908390600690602001918252602082015260400190565b604051602081830303815290604052805190602001209050919050565b813560208301610100840135610120850135610140860135365f612b598989600b613757565b9150915092959891949750929550565b7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c87612b9682826125db565b612be4576040517f0ca968d800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152602401610f0a565b8888612c49816040805160c0830135603482015260a083013560318201526080830135602e8201526060830135601a8201528282013560178201526020808401356014830152923581526048600c8201205f9282018390529281018290525260011c90565b5f838152600960205260409020547f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1614612cb3576040517fa640d5e000000000000000000000000000000000000000000000000000000000815260048101839052602401610f0a565b5f80612cca8c612cc28d613773565b8f8b8b6137a5565b91509150612ce48a8a612cdd85856138cd565b9190613913565b50505050505050505050505050565b7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c87612d2082826125db565b612d6e576040517f0ca968d800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152602401610f0a565b8888612dd3816040805160c0830135603482015260a083013560318201526080830135602e8201526060830135601a8201528282013560178201526020808401356014830152923581526048600c8201205f9282018390529281018290525260011c90565b5f838152600960205260409020547f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1614612e3d576040517fa640d5e000000000000000000000000000000000000000000000000000000000815260048101839052602401610f0a565b5f80612e558c612e4c8d613773565b612cc290615314565b91509150612ce48a8a612e6885856138cd565b91906139f0565b8160e0810135610100820135610120830135610140840135365f612b598789600b613757565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff831601612efa577f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c61089e565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe73ffffffffffffffffffffffffffffffffffffffff831601612f3e575030919050565b5090565b6008805460018101909155612f578482613a9c565b5f80612f6e8a612f668b613773565b8588886137a5565b91509150612f818888612cdd85856138cd565b612ff7612fe78b6040805160c0830135603482015260a083013560318201526080830135602e8201526060830135601a8201528282013560178201526020808401356014830152923581526048600c8201205f9282018390529281018290525260011c90565b5f85815260096020526040902055565b827f6cd04883f8403d89a9190c0a8c58275a0cd6a294ebca6f5e90f119f626b375848b604051613027919061534a565b60405180910390a250505050505050505050565b813560208301610100840135610120850135365f61305b8888600a613757565b915091509295509295509295565b7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c8661309682826125db565b6130e4576040517f0ca968d800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152602401610f0a565b8787613149816040805160c0830135603482015260a083013560318201526080830135602e8201526060830135601a8201528282013560178201526020808401356014830152923581526048600c8201205f9282018390529281018290525260011c90565b5f838152600960205260409020547f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16146131b3576040517fa640d5e000000000000000000000000000000000000000000000000000000000815260048101839052602401610f0a565b5f6131be8b8b610f13565b6fffffffffffffffffffffffffffffffff169050801561320e575f806131f88c6131e785613773565b6131f090615314565b8f8c8c6137a5565b9150915061320b8b8b612e6885856138cd565b50505b5f8b8152600960205260408120556132258b613c33565b5050505050505050505050565b7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c6132628382612a1882613d7b565b6109d58282612a1885613d7b565b5f61327a82612e95565b905061328a8482612a4887613e1b565b6110628382612a4886613e1b565b5f816132a4573061089e565b7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c61089e565b5f7f80000000000000000000000000000000000000000000000000000000000000008303613319576133128273ffffffffffffffffffffffffffffffffffffffff16613eb2565b905061089e565b826133275761331282613d7b565b5090919050565b73ffffffffffffffffffffffffffffffffffffffff83166133d9577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166311da60b4826040518263ffffffff1660e01b815260040160206040518083038185885af11580156133b4573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061106291906151d6565b6040517fa584119400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a5841194906024015f604051808303815f87803b15801561345f575f80fd5b505af1158015613471573d5f803e3d5ffd5b50505050613480838383613f61565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af11580156134ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061106291906151d6565b5f826133275761331282613e1b565b6040517f0b0d9c0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301528381166024830152604482018390527f00000000000000000000000000000000000000000000000000000000000000001690630b0d9c09906064015b5f604051808303815f87803b1580156135b3575f80fd5b505af1158015611fec573d5f803e3d5ffd5b5f61360773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016308461406b565b90507f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c5f821215613641576109d58382612a1885615314565b5f8213156109d5576109d583828461351d565b5f61365e83613e1b565b90508181116136e2576040517f80f0b44c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906380f0b44c9060440161359c565b6109d5837f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c8361351d565b5f61372e8373ffffffffffffffffffffffffffffffffffffffff16613eb2565b905080156109d5576109d573ffffffffffffffffffffffffffffffffffffffff841683836140e1565b365f805f6137668787876141dc565b9890975095505050505050565b805f811215611128576111287f93dafdf10000000000000000000000000000000000000000000000000000000061423f565b5f807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635a6bcfda885f0160405180608001604052808b60a00160208101906138049190614eb0565b60020b815260200161381c60e08d0160c08e01614eb0565b60020b81526020018a81526020018981525087876040518563ffffffff1660e01b815260040161384f9493929190615358565b60408051808303815f875af115801561386a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061388e91906153a7565b5f87815260096020526040902054919350915060ff1c156138c3576138c3856138bc368a90038a018a6153c9565b8884614247565b9550959350505050565b5f608082811d9084901d03600f83810b9085900b03610da46138ee836142df565b6138f7836142df565b6fffffffffffffffffffffffffffffffff1660809190911b1790565b5f61391e8460801d90565b600f0b12801561396357506139338360801d90565b61393c9061543a565b6fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff16105b806139b957505f61397484600f0b90565b600f0b1280156139b9575061398983600f0b90565b6139929061543a565b6fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff16105b156109d5576040517fe377983c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816fffffffffffffffffffffffffffffffff16613a18613a108560801d90565b600f0b614314565b6fffffffffffffffffffffffffffffffff161080613a655750806fffffffffffffffffffffffffffffffff16613a51613a1085600f0b90565b6fffffffffffffffffffffffffffffffff16105b156109d5576040517f9ad5ea6900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216613b19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610f0a565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1615613ba4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4d494e5445440000000000000000000000000000000000006044820152606401610f0a565b73ffffffffffffffffffffffffffffffffffffffff82165f81815260036020908152604080832080546001019055848352600290915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680613cbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610f0a565b73ffffffffffffffffffffffffffffffffffffffff81165f81815260036020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190558583526002825280832080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811690915560049092528083208054909216909155518492907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b5f80613dbe73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016308561406b565b90505f811315613e12576040517f3351b26000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610f0a565b61183f81615314565b5f80613e5e73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016308561406b565b90505f81121561089e576040517f4c085bf100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610f0a565b5f73ffffffffffffffffffffffffffffffffffffffff8216613ed5575047919050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa158015613f3d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061089e91906151d6565b3073ffffffffffffffffffffffffffffffffffffffff831603613fbf576109d573ffffffffffffffffffffffffffffffffffffffff84167f0000000000000000000000000000000000000000000000000000000000000000836140e1565b6040517f36c7851600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301527f000000000000000000000000000000000000000000000000000000000000000081166024830152828116604483015284811660648301527f000000000000000000000000000000000000000000000000000000000000000016906336c785169060840161359c565b5f8073ffffffffffffffffffffffffffffffffffffffff84165f5273ffffffffffffffffffffffffffffffffffffffff831660205260405f2090508473ffffffffffffffffffffffffffffffffffffffff1663f135baaa826040518263ffffffff1660e01b81526004016124dd91815260200190565b5f73ffffffffffffffffffffffffffffffffffffffff841661413b575f805f8085875af1905080614136576141367f8549db5900000000000000000000000000000000000000000000000000000000846126aa565b611062565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505f81525f60208201525f60408201525080611062576110627fb12c5f9c00000000000000000000000000000000000000000000000000000000856126aa565b600581901b8301358301803590602080820191869003016141fd8184615301565b851015614236576040517f3b99b53d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50935093915050565b805f5260045ffd5b5f8481526007602052604080822054905173ffffffffffffffffffffffffffffffffffffffff90911691906142ae9083907fa6ae447d0000000000000000000000000000000000000000000000000000000090611383908a908a908a908a90602401615476565b90508061207a5761207a7f0ab45b4000000000000000000000000000000000000000000000000000000000836126aa565b80600f81900b8114611128576111287f93dafdf10000000000000000000000000000000000000000000000000000000061423f565b5f8082600f0b1215612f3e57612f3e7f93dafdf10000000000000000000000000000000000000000000000000000000061423f565b73ffffffffffffffffffffffffffffffffffffffff8116811461436a575f80fd5b50565b803561112881614349565b5f8083601f840112614388575f80fd5b50813567ffffffffffffffff81111561439f575f80fd5b6020830191508360208285010111156143b6575f80fd5b9250929050565b5f805f80606085870312156143d0575f80fd5b84356143db81614349565b9350602085013567ffffffffffffffff8111156143f6575f80fd5b850160608188031215614407575f80fd5b9250604085013567ffffffffffffffff811115614422575f80fd5b61442e87828801614378565b95989497509550505050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461436a575f80fd5b5f60208284031215614477575f80fd5b813561183f8161443a565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f61183f6020830184614482565b5f602082840312156144f0575f80fd5b5035919050565b5f8060408385031215614508575f80fd5b823561451381614349565b946020939093013593505050565b5f805f805f8060a08789031215614536575f80fd5b863561454181614349565b9550602087013594506040870135935060608701359250608087013567ffffffffffffffff811115614571575f80fd5b61457d89828a01614378565b979a9699509497509295939492505050565b5f805f606084860312156145a1575f80fd5b83356145ac81614349565b925060208401356145bc81614349565b929592945050506040919091013590565b5f805f808486036101008112156145e2575f80fd5b85356145ed81614349565b945060c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08201121561461e575f80fd5b5060208501925060e085013567ffffffffffffffff811115614422575f80fd5b80358015158114611128575f80fd5b5f805f805f805f60c0888a031215614663575f80fd5b873561466e81614349565b9650602088013561467e81614349565b955061468c6040890161463e565b9450606088013593506080880135925060a088013567ffffffffffffffff8111156146b5575f80fd5b6146c18a828b01614378565b989b979a50959850939692959293505050565b5f805f8084860360e08112156146e8575f80fd5b60a08112156146f5575f80fd5b5084935060a085013561470781614349565b925060c085013567ffffffffffffffff811115614422575f80fd5b5f60e08284031215614732575f80fd5b50919050565b5f80610100838503121561474a575f80fd5b8235915061475b8460208501614722565b90509250929050565b5f8083601f840112614774575f80fd5b50813567ffffffffffffffff81111561478b575f80fd5b6020830191508360208260051b85010111156143b6575f80fd5b5f805f80604085870312156147b8575f80fd5b843567ffffffffffffffff8111156147ce575f80fd5b6147da87828801614378565b909550935050602085013567ffffffffffffffff8111156147f9575f80fd5b61442e87828801614764565b5f805f805f610140868803121561481a575f80fd5b8535945061482b8760208801614722565b935061010086013561483c81614349565b925061012086013567ffffffffffffffff811115614858575f80fd5b61486488828901614378565b969995985093965092949392505050565b5f805f806101208587031215614889575f80fd5b8435935061489a8660208701614722565b925061010085013567ffffffffffffffff811115614422575f80fd5b5f602082840312156148c6575f80fd5b813561183f81614349565b5f80602083850312156148e2575f80fd5b823567ffffffffffffffff8111156148f8575f80fd5b61490485828601614378565b90969095509350505050565b5f8060408385031215614921575f80fd5b823561492c81614349565b915061475b6020840161463e565b5f806020838503121561494b575f80fd5b823567ffffffffffffffff811115614961575f80fd5b61490485828601614764565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156149e2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184526149cd858351614482565b94506020938401939190910190600101614993565b50929695505050505050565b5f805f805f60808688031215614a02575f80fd5b8535614a0d81614349565b94506020860135614a1d81614349565b935060408601359250606086013567ffffffffffffffff811115614858575f80fd5b5f805f60408486031215614a51575f80fd5b833567ffffffffffffffff811115614a67575f80fd5b614a7386828701614378565b909790965060209590950135949350505050565b5f8060408385031215614a98575f80fd5b8235614aa381614349565b91506020830135614ab381614349565b809150509250929050565b803565ffffffffffff81168114611128575f80fd5b8035614ade81614349565b73ffffffffffffffffffffffffffffffffffffffff1682526020810135614b0481614349565b73ffffffffffffffffffffffffffffffffffffffff16602083015265ffffffffffff614b3260408301614abe565b16604083015265ffffffffffff614b4b60608301614abe565b1660608301525050565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff85168152606060208201525f60c0820185357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1873603018112614bf2575f80fd5b860160208101903567ffffffffffffffff811115614c0e575f80fd5b8060071b3603821315614c1f575f80fd5b60608581015291829052905f9060e085015b81831015614c5657614c438185614ad3565b6080938401936001939093019201614c31565b614c6260208a0161436d565b73ffffffffffffffffffffffffffffffffffffffff16608087015260408981013560a08801819052878303918801919091529350614ca181888a614b55565b9a9950505050505050505050565b600181811c90821680614cc357607f821691505b602082108103614732577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff85168152614d206020820185614ad3565b5f6080850135614d2f81614349565b73ffffffffffffffffffffffffffffffffffffffff1660a08381019190915285013560c083015261010060e08301819052614d6d9083018486614b55565b9695505050505050565b803562ffffff81168114611128575f80fd5b8060020b811461436a575f80fd5b8035614da281614349565b73ffffffffffffffffffffffffffffffffffffffff1682526020810135614dc881614349565b73ffffffffffffffffffffffffffffffffffffffff16602083015262ffffff614df360408301614d77565b1660408301526060810135614e0781614d89565b60020b60608301526080810135614e1d81614349565b73ffffffffffffffffffffffffffffffffffffffff81166080840152505050565b614e488186614d97565b73ffffffffffffffffffffffffffffffffffffffff841660a082015260e060c08201525f614d6d60e083018486614b55565b5f60208284031215614e8a575f80fd5b815161183f81614d89565b5f60208284031215614ea5575f80fd5b815161183f8161443a565b5f60208284031215614ec0575f80fd5b813561183f81614d89565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614f3f57614f3f614ecb565b604052919050565b5f60a08284031215614f57575f80fd5b60405160a0810167ffffffffffffffff81118282101715614f7a57614f7a614ecb565b6040529050808235614f8b81614349565b81526020830135614f9b81614349565b6020820152614fac60408401614d77565b60408201526060830135614fbf81614d89565b60608201526080830135614fd281614349565b6080919091015292915050565b5f60a08284031215614fef575f80fd5b61183f8383614f47565b6150038282614d97565b60a081013561501181614d89565b60020b60a083015260c081013561502781614d89565b8060020b60c0840152505050565b8481526150456020820185614ff9565b6101206101008201525f614d6d61012083018486614b55565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126150be575f80fd5b83018035915067ffffffffffffffff8211156150d8575f80fd5b6020019150368190038213156143b6575f80fd5b818382375f9101908152919050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152608060608201525f61514c608083018486614b55565b979650505050505050565b5f8060408385031215615168575f80fd5b50508035926020909101359150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b60ff818116838216019081111561089e5761089e615177565b838152604060208201525f610da4604083018486614b55565b5f602082840312156151e6575f80fd5b5051919050565b808202811582820484141761089e5761089e615177565b5f82615237577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b602081525f610fcd602083018486614b55565b5f6020828403121561525f575f80fd5b815167ffffffffffffffff811115615275575f80fd5b8201601f81018413615285575f80fd5b805167ffffffffffffffff81111561529f5761529f614ecb565b6152d060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601614ef8565b8181528560208385010111156152e4575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b8082018082111561089e5761089e615177565b5f7f8000000000000000000000000000000000000000000000000000000000000000820361534457615344615177565b505f0390565b60e0810161089e8284614ff9565b6153628186614d97565b835160020b60a0820152602084015160020b60c0820152604084015160e082015260608401516101008201526101406101208201525f614d6d61014083018486614b55565b5f80604083850312156153b8575f80fd5b505080516020909101519092909150565b5f60e08284031280156153da575f80fd5b506040516060810167ffffffffffffffff811182821017156153fe576153fe614ecb565b60405261540b8484614f47565b815260a083013561541b81614d89565b602082015260c083013561542e81614d89565b60408201529392505050565b5f81600f0b7fffffffffffffffffffffffffffffffff80000000000000000000000000000000810361546e5761546e615177565b5f0392915050565b5f61014082019050858252845173ffffffffffffffffffffffffffffffffffffffff815116602084015273ffffffffffffffffffffffffffffffffffffffff602082015116604084015262ffffff6040820151166060840152606081015160020b608084015273ffffffffffffffffffffffffffffffffffffffff60808201511660a084015250602085015161551160c084018260020b9052565b50604085015161552660e084018260020b9052565b5061010082019390935261012001529291505056fea2646970667358221220c30b8b0386f2b6244c7ceb9a27e3a9944aa04174e0ed871e016d80b8f6caebdb64736f6c634300081a003300000000000000000000000039bf2eff94201cfaa471932655404f63315147a4000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3", - "nonce": "0x23", + "input": "0x61018080604052346105285760a0816162ea8038038091610020828561052c565b8339810103126105285780516001600160a01b03811681036105285760208201516001600160a01b03811681036105285760408301516060840151936001600160a01b03851685036105285760800151926001600160a01b03841684036105285760405161008f60408261052c565b6018815260208101907f556e697377617020763420506f736974696f6e73204e4654000000000000000082526040516100c960408261052c565b600b81526a554e492d56342d504f534d60a81b602082015281516001600160401b03811161043c575f54600181811c9116801561051e575b602082101461041e57601f81116104bc575b50806020601f821160011461045b575f91610450575b508160011b915f199060031b1c1916175f555b8051906001600160401b03821161043c5760015490600182811c92168015610432575b602083101461041e5781601f8493116103b0575b50602090601f831160011461034a575f9261033f575b50508160011b915f199060031b1c1916176001555b5190208060c0524660a05260405160208101917f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86683526040820152466060820152306080820152608081526101f460a08261052c565b51902060805260e052610100526101205261014052600160085561016052604051615d9a9081610550823960805181612dba015260a05181612d94015260c05181612e09015260e051818181610d0b015281816111a2015281816114d101528181611e4a0152818161223e015281816122f101528181612785015281816128b401528181612b1c0152818161325c015281816137c0015281816146f2015281816147eb0152818161488301528181614a0701528181614a68015281816153fa015281816155c6015281816156df01528181615789015261593701526101005181818161180b01526140ea0152610120518181816103e501528181610bbc0152818161107e015261571d015261014051818181611878015281816131ed015281816143da0152818161443b0152818161456001526145f6015261016051818181611aac01526126390152f35b015190505f80610189565b60015f9081528281209350601f198516905b8181106103985750908460019594939210610380575b505050811b0160015561019e565b01515f1960f88460031b161c191690555f8080610372565b9293602060018192878601518155019501930161035c565b60015f529091507fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6601f840160051c81019160208510610414575b90601f859493920160051c01905b8181106104065750610173565b5f81558493506001016103f9565b90915081906103eb565b634e487b7160e01b5f52602260045260245ffd5b91607f169161015f565b634e487b7160e01b5f52604160045260245ffd5b90508301515f610129565b5f8080528181209250601f198416905b8181106104a45750908360019493921061048c575b5050811b015f5561013c565b8501515f1960f88460031b161c191690555f80610480565b9192602060018192868a01518155019401920161046b565b5f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563601f830160051c81019160208410610514575b601f0160051c01905b8181106105095750610113565b5f81556001016104fc565b90915081906104f3565b90607f1690610101565b5f80fd5b601f909101601f19168101906001600160401b0382119082101761043c5760405256fe60806040526004361015610022575b3615610018575f80fd5b6100206131d6565b005b5f3560e01c80622a3e3a1461029057806301ffc9a71461028b57806305c1ee201461028657806306fdde0314610281578063081812fc1461027c578063095ea7b3146102775780630f5730f11461027257806312261ee71461026d57806316a24131146102685780631efeed331461026357806323b872dd1461025e5780632b67b570146102595780632b9261de146102545780633644e5151461024f5780633aea60f01461024a57806342842e0e146102455780634767565f146102405780634aa4a4fc1461023b5780634afe393c14610236578063502e1a16146102315780635a9d7a681461022c5780636352211e1461022757806370a082311461022257806375794a3c1461021d5780637ba03aad1461021857806386b6be7d1461021357806389097a6a1461020e57806391dd73461461020957806395d89b4114610204578063a22cb465146101ff578063ac9650d8146101fa578063ad0b27fb146101f5578063b88d4fde146101f0578063c87b56dd146101eb578063d737d0c7146101e6578063dc4c90d3146101e1578063dd46508f146101dc578063e985e9c5146101d75763f70204050361000e57612a02565b612964565b6127a9565b61273b565b6126cb565b6125b9565b61227e565b61220c565b6120f1565b612023565b611f50565b611de3565b611d9b565b611cd4565b611c3a565b611bff565b611b2a565b611ad0565b611a62565b6119ed565b6118cd565b61182e565b6117d6565b6114be565b6113ba565b61136b565b611141565b610fe2565b610cf7565b610c3e565b610be0565b610b72565b610a2b565b61094c565b6108ee565b6107b9565b6106ea565b6105fa565b610349565b73ffffffffffffffffffffffffffffffffffffffff8116036102b357565b5f80fd5b35906102c282610295565b565b9181601f840112156102b35782359167ffffffffffffffff83116102b357602083818601950101116102b357565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b9060206103469281815201906102f2565b90565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760043561037f81610295565b6024359067ffffffffffffffff82116102b3578136039160607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8401126102b35760443567ffffffffffffffff81116102b3576103e09036906004016102c4565b6060947f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1693909290843b156102b35773ffffffffffffffffffffffffffffffffffffffff604051967f2a2d80d10000000000000000000000000000000000000000000000000000000088521660048701526060602487015260c48601937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd826004013591018112156102b35781016024600482013591019467ffffffffffffffff82116102b3578160071b360386136102b35760606064890152819052869460e48601949392915f5b8181106105a8575050506105595f96948694889460448561052361050660248b99016102b7565b73ffffffffffffffffffffffffffffffffffffffff166084890152565b013560a48601527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc858403016044860152612ca5565b03925af1908161058e575b506105855750610581610575612d4b565b60405191829182610335565b0390f35b61058190610575565b8061059c5f6105a293610778565b80610720565b5f610564565b91965091929394608080826105bf6001948b612c2c565b0197019101918896959493926104df565b7fffffffff000000000000000000000000000000000000000000000000000000008116036102b357565b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760207fffffffff00000000000000000000000000000000000000000000000000000000600435610658816105d0565b167f01ffc9a70000000000000000000000000000000000000000000000000000000081149081156106c0575b8115610696575b506040519015158152f35b7f5b5e139f000000000000000000000000000000000000000000000000000000009150145f61068b565b7f80ac58cd0000000000000000000000000000000000000000000000000000000081149150610684565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35761002060043533613284565b5f9103126102b357565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60a0810190811067ffffffffffffffff82111761077357604052565b61072a565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761077357604052565b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576040515f80548060011c90600181169081156108e4575b6020831082146108b75782855260208501919081156108805750600114610830575b6105818461057581860382610778565b5f8080529250907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b81841061086c5750500161057582610820565b805484840152602090930192600101610859565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682525090151560051b01905061057582610820565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f16916107fe565b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576004355f526004602052602073ffffffffffffffffffffffffffffffffffffffff60405f205416604051908152f35b346102b35760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760043561098781610295565b602435805f52600260205273ffffffffffffffffffffffffffffffffffffffff60405f2054169182331415806109ed575b6109c557610020926132f2565b7f82b42900000000000000000000000000000000000000000000000000000000005f5260045ffd5b50825f52600560205260ff610a233360405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b5416156109b8565b60a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b357600435610a6181610295565b602435604435916064359260843567ffffffffffffffff81116102b357610a8c9036906004016102c4565b94824211610b4a57610b3f85610b459361002098610b39885f80998682526002602052818973ffffffffffffffffffffffffffffffffffffffff6040832054169c8d9981604051977f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad895273ffffffffffffffffffffffffffffffffffffffff60208a01911681526040890192835260608901948552608089019687528160a08a20995252525252613383565b9161343c565b82613284565b6132f2565b7f5a9165ff000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b357602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576004355f526007602052602073ffffffffffffffffffffffffffffffffffffffff60405f205416604051908152f35b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576020610c93600435610c7e81612f5b565b919082851c60020b9260081c60020b916136e6565b6fffffffffffffffffffffffffffffffff60405191168152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60609101126102b357600435610ce381610295565b90602435610cf081610295565b9060443590565b346102b357610d0536610cad565b91610d2f7f0000000000000000000000000000000000000000000000000000000000000000613841565b610fba5782610d7f610d66610d4c835f52600260205260405f2090565b5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b610da173ffffffffffffffffffffffffffffffffffffffff84169182146138e1565b73ffffffffffffffffffffffffffffffffffffffff841690610dc4821515613946565b8033148015610f62575b8015610f3d575b610dde906139ab565b610e068473ffffffffffffffffffffffffffffffffffffffff165f52600360205260405f2090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610e548573ffffffffffffffffffffffffffffffffffffffff165f52600360205260405f2090565b80546001019055610eb185610e71855f52600260205260405f2090565b9073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b610eee610ec6845f52600460205260405f2090565b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4610f2e610f27845f52600960205260405f2090565b5460ff1690565b610f3457005b61002092613a10565b50610dde610f59610d66610d4c865f52600460205260405f2090565b33149050610dd5565b50610fb5610f2733610f928773ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b9073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b610dce565b7fd4b05fe0000000000000000000000000000000000000000000000000000000005f5260045ffd5b6101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760043561101981610295565b60c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126102b35760e43567ffffffffffffffff81116102b3576110639036906004016102c4565b9160609273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b156102b35773ffffffffffffffffffffffffffffffffffffffff5f8094610559604051978896879586947f2b67b5700000000000000000000000000000000000000000000000000000000086521660048501526110ff60248501612ba7565b73ffffffffffffffffffffffffffffffffffffffff60a43561112081610295565b1660a485015260c43560c485015261010060e4850152610104840191612ca5565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760243560043561117a82610295565b60443567ffffffffffffffff81116102b35761119a9036906004016102c4565b6111c69391937f0000000000000000000000000000000000000000000000000000000000000000613841565b610fba576111d48333613b73565b1561133f5773ffffffffffffffffffffffffffffffffffffffff611203610d4c855f52600760205260405f2090565b16806112f657505f838152600960205260409020805460011790556112c6906112c2906112bc73ffffffffffffffffffffffffffffffffffffffff85169661125788610e71895f52600760205260405f2090565b6112906040519384927f8d57f6b20000000000000000000000000000000000000000000000000000000060208501528960248501612d7a565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610778565b83613c49565b1590565b6112f157507f9709492381f90bdc5938bb4e3b8e35b7e0eac8af058619e27191c5a40ce79fa95f80a3005b613c8a565b7f25fbd8be000000000000000000000000000000000000000000000000000000005f52600484905273ffffffffffffffffffffffffffffffffffffffff1660245260445ffd5b5ffd5b7f0ca968d8000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760206113a3612d91565b604051908152f35b6044359081151582036102b357565b60c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576004356113f081610295565b6024356113fc81610295565b6114046113ab565b906064359260843560a43567ffffffffffffffff81116102b35761142c9036906004016102c4565b869291924211610b4a57836114b993610b3f92610b39885f6100209c8189818f81604051977f6673cb397ee2a50b6b8401653d3638b4ac8b3db9c28aa6870ffceb7574ec2f76895273ffffffffffffffffffffffffffffffffffffffff60208a0191168152600160408a019316835260608901948552608089019687528160a08a20995252525252613383565b613f0a565b346102b3576114cc36610cad565b6114f57f0000000000000000000000000000000000000000000000000000000000000000613841565b610fba57611511610d66610d4c835f52600260205260405f2090565b9161153473ffffffffffffffffffffffffffffffffffffffff85169384146138e1565b8173ffffffffffffffffffffffffffffffffffffffff82168094611559821515613946565b80331480156117a1575b801561177c575b611573906139ab565b61159b8773ffffffffffffffffffffffffffffffffffffffff165f52600360205260405f2090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190556115e98473ffffffffffffffffffffffffffffffffffffffff165f52600360205260405f2090565b8054600101905561160684610e71855f52600260205260405f2090565b61161b610ec6845f52600460205260405f2090565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4611654610f27835f52600960205260405f2090565b61176c575b3b1591821561166c575b61002083612e63565b6040517f150b7a0200000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9490941660248501526044840191909152608060648401525f6084840181905260209250839160a49183915af18015611767577fffffffff000000000000000000000000000000000000000000000000000000007f150b7a020000000000000000000000000000000000000000000000000000000091610020935f91611738575b5016145f80611663565b61175a915060203d602011611760575b6117528183610778565b810190612e4e565b5f61172e565b503d611748565b612ce3565b611777818584613a10565b611659565b50611573611798610d66610d4c865f52600460205260405f2090565b3314905061156a565b506117d1610f2733610f928a73ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b611563565b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b357602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b9181601f840112156102b35782359167ffffffffffffffff83116102b3576020808501948460051b0101116102b357565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760043567ffffffffffffffff81116102b3576119179036906004016102c4565b60243567ffffffffffffffff81116102b35761193790369060040161189c565b9173ffffffffffffffffffffffffffffffffffffffff7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c166119c5576119a093337f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d613fd7565b5f7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d005b7f6f5ffb7e000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102b35760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b357600435611a2881610295565b73ffffffffffffffffffffffffffffffffffffffff60243591165f52600660205260405f20905f52602052602060405f2054604051908152f35b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b357602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576020611b0c600435612f2d565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35773ffffffffffffffffffffffffffffffffffffffff600435611b7a81610295565b168015611ba1575f52600360205261058160405f2054604051918291829190602083019252565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152fd5b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576020600854604051908152f35b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760c0611c76600435612f5b565b611ccd604051809373ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60a0820152f35b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576004357fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000081168091036102b3575f908152600a602090815260409182902080546001820154600292830154855173ffffffffffffffffffffffffffffffffffffffff93841681528383169581019590955260a082811c62ffffff169686019690965260b89190911c90920b6060840152166080820152f35b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576004355f526009602052602060405f2054604051908152f35b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760043567ffffffffffffffff81116102b357611e329036906004016102c4565b9073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303611f285760408135189063ffffffff60408201351663ffffffe0601f8201169260608401602084013518179282019260608401359483641fffffffe08760051b16805f905b88818310611ef95790506080929150010191011017611eec576060608063ffffffff611ee1961694019201613fd7565b610581610575612d37565b633b99b53d5f526004601cfd5b8294509263ffffffe0601f60808060209687969801013599848b1817998d010135011601019201869291611eb1565b7fae18210a000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576040515f6001548060011c9060018116908115612019575b6020831082146108b75782855260208501919081156108805750600114611fc7576105818461057581860382610778565b60015f9081529250907fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b8184106120055750500161057582610820565b805484840152602090930192600101611ff2565b91607f1691611f96565b346102b35760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760043561205e81610295565b60243580151581036102b3576100209133613f0a565b602081016020825282518091526040820191602060408360051b8301019401925f915b8383106120a657505050505090565b90919293946020806120e2837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0866001960301875289516102f2565b97019301930191939290612097565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760043567ffffffffffffffff81116102b35761213b90369060040161189c565b906121458261306d565b916121536040519384610778565b8083527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06121808261306d565b015f5b8181106121fb5750505f5b8181106121a357604051806105818682612074565b5f806121b08385876130b2565b906121c060405180938193613117565b0390305af46121cd612d4b565b90156121f357906001916121e18287613124565b526121ec8186613124565b500161218e565b602081519101fd5b806060602080938801015201612183565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576004356122627f0000000000000000000000000000000000000000000000000000000000000000613841565b610fba576122708133613b73565b1561133f5761002090614040565b346102b35760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b3576004356122b981610295565b602435906122c682610295565b60443560643567ffffffffffffffff81116102b3576122e99036906004016102c4565b9390916123157f0000000000000000000000000000000000000000000000000000000000000000613841565b610fba57612331610d66610d4c835f52600260205260405f2090565b9161235473ffffffffffffffffffffffffffffffffffffffff86169384146138e1565b8173ffffffffffffffffffffffffffffffffffffffff82168094612379821515613946565b8033148015612584575b801561255f575b612393906139ab565b6123bb8873ffffffffffffffffffffffffffffffffffffffff165f52600360205260405f2090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190556124098473ffffffffffffffffffffffffffffffffffffffff165f52600360205260405f2090565b8054600101905561242684610e71855f52600260205260405f2090565b61243b610ec6845f52600460205260405f2090565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4612474610f27835f52600960205260405f2090565b61254f575b3b1593841561248c575b61002085612e63565b602094505f906124cc604051978896879586947f150b7a020000000000000000000000000000000000000000000000000000000086523360048701613138565b03925af18015611767577fffffffff000000000000000000000000000000000000000000000000000000007f150b7a020000000000000000000000000000000000000000000000000000000091610020935f91612530575b5016145f808080612483565b612549915060203d602011611760576117528183610778565b5f612524565b61255a818684613a10565b612479565b5061239361257b610d66610d4c865f52600460205260405f2090565b3314905061238a565b506125b4610f2733610f928b73ffffffffffffffffffffffffffffffffffffffff165f52600560205260405f2090565b612383565b346102b35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b357600435604051907fe9dc637500000000000000000000000000000000000000000000000000000000825230600483015260248201525f8160448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa8015611767575f90612678575b6105819060405191829182610335565b503d805f833e6126888183610778565b8101906020818303126102b35780519067ffffffffffffffff82116102b3570181601f820112156102b357610581918160206126c693519101613173565b612668565b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760207f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b346102b3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b357602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b35760043567ffffffffffffffff81116102b3576127f39036906004016102c4565b60243573ffffffffffffffffffffffffffffffffffffffff7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c166119c557337f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d804211612939576040517f48c89491000000000000000000000000000000000000000000000000000000008152602060048201525f818061289a602482018789612ca5565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af18015611767576128e9575b610020613fb2565b3d805f833e6128f88183610778565b8101906020818303126102b35780519067ffffffffffffffff82116102b357019080601f830112156102b357815161293292602001613173565b50806128e1565b7fbfb22adf000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b346102b35760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102b357602060ff6129f66004356129a681610295565b73ffffffffffffffffffffffffffffffffffffffff602435916129c883610295565b165f526005845260405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b54166040519015158152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360160c081126102b35760a0136102b35760a435612a4081610295565b73ffffffffffffffffffffffffffffffffffffffff604051917f6276cbbe00000000000000000000000000000000000000000000000000000000835281600435612a8981610295565b16600484015281602435612a9c81610295565b16602484015262ffffff604435612ab2816131c9565b166044840152606435612ac4816131a9565b60020b6064840152612af8608435612adb81610295565b73ffffffffffffffffffffffffffffffffffffffff166084850152565b1660a482015260208160c4815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1801561176757610581915f91612b65575b5060405160029190910b81529081906020820190565b612b87915060203d602011612b8d575b612b7f8183610778565b8101906131b4565b5f612b4f565b503d612b75565b359065ffffffffffff821682036102b357565b73ffffffffffffffffffffffffffffffffffffffff602435612bc881610295565b16815273ffffffffffffffffffffffffffffffffffffffff604435612bec81610295565b16602082015260643565ffffffffffff81168091036102b357604082015260843565ffffffffffff811681036102b35765ffffffffffff60609116910152565b65ffffffffffff612c9f6060809373ffffffffffffffffffffffffffffffffffffffff8135612c5a81610295565b16865273ffffffffffffffffffffffffffffffffffffffff6020820135612c8081610295565b16602087015283612c9360408301612b94565b16604087015201612b94565b16910152565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b6040513d5f823e3d90fd5b604051906102c2608083610778565b67ffffffffffffffff811161077357601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60405190612d46602083610778565b5f8252565b3d15612d75573d90612d5c82612cfd565b91612d6a6040519384610778565b82523d5f602084013e565b606090565b604090610346949281528160208201520191612ca5565b467f000000000000000000000000000000000000000000000000000000000000000003612ddc577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f0000000000000000000000000000000000000000000000000000000000000000604082015246606082015230608082015260808152612e4860a082610778565b51902090565b908160209103126102b35751610346816105d0565b15612e6a57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152fd5b15612ecf57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152fd5b5f52600260205273ffffffffffffffffffffffffffffffffffffffff60405f205416906102c2821515612ec8565b5f6080604051612f6a81610757565b82815282602082015282604082015282606082015201525f52600960205260405f2054807fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000165f52600a60205260405f2061306a61304d600260405193612fd085610757565b73ffffffffffffffffffffffffffffffffffffffff8154168552613032613028600183015473ffffffffffffffffffffffffffffffffffffffff8116602089015262ffffff8160a01c16604089015260b81c60020b90565b60020b6060870152565b015473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff166080830152565b91565b67ffffffffffffffff81116107735760051b60200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b91908110156131125760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102b357019081359167ffffffffffffffff83116102b35760200182360381136102b3579190565b613085565b908092918237015f815290565b80518210156131125760209160051b010190565b909273ffffffffffffffffffffffffffffffffffffffff60809381610346989616845216602083015260408201528160608201520191612ca5565b92919261317f82612cfd565b9161318d6040519384610778565b8294818452818301116102b3578281602093845f96015e010152565b8060020b036102b357565b908160209103126102b35751610346816131a9565b62ffffff8116036102b357565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633141580613244575b61321c57565b7f38bbd576000000000000000000000000000000000000000000000000000000005f5260045ffd5b5073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016331415613216565b9073ffffffffffffffffffffffffffffffffffffffff600160ff83161b92165f52600660205260405f209060081c5f5260205260405f208181541880915516156132ca57565b7f1fb09b80000000000000000000000000000000000000000000000000000000005f5260045ffd5b9073ffffffffffffffffffffffffffffffffffffffff8091845f52600460205261335a8160405f209073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b1691167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a4565b9061338c612d91565b91604051927f19010000000000000000000000000000000000000000000000000000000000008452600284015260228301525f604060428420938281528260208201520152565b91908260409103126102b3576020823592013590565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b60ff601b9116019060ff821161342857565b6133e9565b90604010156131125760400190565b90833b6135eb576041810361355f57906020926134c58361349d6134976134716134695f988801886133d3565b94909761342d565b357fff000000000000000000000000000000000000000000000000000000000000001690565b60f81c90565b935b604051948594859094939260ff6060936080840197845216602083015260408201520152565b838052039060015afa156117675773ffffffffffffffffffffffffffffffffffffffff5f51169081156135375773ffffffffffffffffffffffffffffffffffffffff160361350f57565b7f815e1d64000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f8baa579f000000000000000000000000000000000000000000000000000000005f5260045ffd5b90604082036135c35760209261357c825f946134c59401906133d3565b9290926135bd6135b86135b27f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c90565b60ff1690565b613416565b9361349f565b7f4be6321b000000000000000000000000000000000000000000000000000000005f5260045ffd5b909261363f9373ffffffffffffffffffffffffffffffffffffffff602094604051968795869485937f1626ba7e00000000000000000000000000000000000000000000000000000000855260048501612d7a565b0392165afa908115611767577f1626ba7e00000000000000000000000000000000000000000000000000000000917fffffffff00000000000000000000000000000000000000000000000000000000915f916136c7575b50160361369f57565b7fb0669cbc000000000000000000000000000000000000000000000000000000005f5260045ffd5b6136e0915060203d602011611760576117528183610778565b5f613696565b929160a092604051946026860152600685015260038401523083525f603a600c850120938160408201528160208201525220604051602081019182526006604082015260408152613738606082610778565b5190206006810180911161342857604080516020818101948552918101929092526137a792909161376c8160608101611290565b519020604051809381927f1e2eaeaf000000000000000000000000000000000000000000000000000000008352600483019190602083019252565b038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa8015611767576fffffffffffffffffffffffffffffffff915f9161380557501690565b613827915060203d60201161382b575b61381f8183610778565b810190613832565b1690565b503d613815565b908160209103126102b3575190565b602073ffffffffffffffffffffffffffffffffffffffff916024604051809481937ff135baaa0000000000000000000000000000000000000000000000000000000083527fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab236004840152165afa908115611767575f916138c2575b50151590565b6138db915060203d60201161382b5761381f8183610778565b5f6138bc565b156138e857565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152fd5b1561394d57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152fd5b156139b257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152fd5b73ffffffffffffffffffffffffffffffffffffffff613a8b9293825f526007602052818060405f20541695604051947f876fda07000000000000000000000000000000000000000000000000000000006020870152602486015216604484015216606482015260648152613a85608482610778565b82613c49565b15613a935750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011673ffffffffffffffffffffffffffffffffffffffff604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301527f876fda07000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7f8b6bc10d0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b73ffffffffffffffffffffffffffffffffffffffff613b9183612f2d565b169173ffffffffffffffffffffffffffffffffffffffff8216928314928315613c1b575b508215613bc157505090565b60ff92509073ffffffffffffffffffffffffffffffffffffffff613be7613c1693612f2d565b165f52600560205260405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b541690565b908093505f52600460205273ffffffffffffffffffffffffffffffffffffffff60405f20541614915f613bb5565b803b15613c6257815f92918360208194519301915af190565b7f7c402b21000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011673ffffffffffffffffffffffffffffffffffffffff604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301527f8d57f6b2000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7f81ea5e9e0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011673ffffffffffffffffffffffffffffffffffffffff604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301527fa9059cbb000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff27f64e40000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011673ffffffffffffffffffffffffffffffffffffffff604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301525f6024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff4b3b1bc0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b602073ffffffffffffffffffffffffffffffffffffffff807f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31931693845f5260058352613f788160405f209073ffffffffffffffffffffffffffffffffffffffff165f5260205260405f2090565b951515957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff88161790556040519586521693a3565b5f7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d565b90929193828403614018575f5b848110156140105760019061400a81850161400083888b6130b2565b913560f81c6141cd565b01613fe4565b509350505050565b7faaad13f7000000000000000000000000000000000000000000000000000000005f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff61406a610d4c835f52600760205260405f2090565b1690811561417d575f81815260096020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556140ba610ec6825f52600760205260405f2090565b813b6140e7575b7fa0ebb1de82db929a9153472f37d3a66dbede4436258311ad0f52a35a2c91d1505f80a3565b5a7f000000000000000000000000000000000000000000000000000000000000000080911061417857823b156102b3575f60405180927faf45dd140000000000000000000000000000000000000000000000000000000082528183878261415689600483019190602083019252565b0393f1614164575b506140c1565b8061059c5f61417293610778565b5f61415e565b6141a5565b7f237e6c28000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fed43c3a6000000000000000000000000000000000000000000000000000000005f5260045ffd5b909190600981101561429d57806141f857506141ec906102c292615251565b949390939291926152f8565b6001810361421a575061420e906102c292615251565b94939093929192615293565b600281036142495750614233614243916102c293614da3565b989097969195929594939461465a565b95614fe8565b916003831461428557505061133c91505b7f5cda29d7000000000000000000000000000000000000000000000000000000005f52600452602490565b6102c292509061429491614b9f565b93929092614bdb565b9050601181036142b857506102c29060208101359035614b61565b601581036142ea57506142e46142db6102c2928035916040602083013592013590565b9290919261465a565b91614b46565b60098103614328575061431c6143226143106102c2938035916040602083013592013590565b9382949392919361492c565b9261495a565b9161499b565b60128103614364575061435e61435861434e6102c2938035916040602083013592013590565b928294929161465a565b92614850565b91614864565b6017810361437757506102c290356147e4565b6018810361439057506102c290602081013590356146ca565b601981036143b357506102c2908035906143ad906020013561465a565b906146ac565b6020810361440657506144016102c29173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690356144e5565b6145d7565b906021821461441a575061133c915061425a565b6102c29150614460903573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016614465565b614541565b614470903090615359565b7f800000000000000000000000000000000000000000000000000000000000000082146144e05781156144cf575b81116144a75790565b7ff4d678b8000000000000000000000000000000000000000000000000000000005f5260045ffd5b90506144da5f6153f3565b9061449e565b905090565b906144f0305f615359565b907f8000000000000000000000000000000000000000000000000000000000000000831461453b578215614529575b5081116144a75790565b6145349192506153f3565b905f61451f565b50905090565b806145495750565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b156102b3575f916024839260405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af18015611767576145cd5750565b5f6102c291610778565b806145df5750565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b156102b3575f906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af18015611767576145cd5750565b73ffffffffffffffffffffffffffffffffffffffff8116600181036146a05750507f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c90565b60020361034657503090565b906146b682615472565b90816146c157505050565b6102c2926154f2565b906146d4826155bf565b90811161478c5773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691823b156102b35773ffffffffffffffffffffffffffffffffffffffff925f926040519485937f80f0b44c00000000000000000000000000000000000000000000000000000000855216600484015260248301528183604482800301925af180156117675761477e5750565b8061059c5f6102c293610778565b6102c2917f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c90614864565b7f80000000000000000000000000000000000000000000000000000000000000008114613428575f0390565b61480f81307f0000000000000000000000000000000000000000000000000000000000000000615638565b907f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c5f831215614846576143226102c2936147b8565b6102c29291614864565b90816148605761034691506155bf565b5090565b909180156149275773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b156102b3575f928360649273ffffffffffffffffffffffffffffffffffffffff948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af18015611767576149125750565b8061491e5f8093610778565b8003126102b357565b505050565b15614956577f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c90565b3090565b907f8000000000000000000000000000000000000000000000000000000000000000820361498c576103469150615472565b816148605761034691506153f3565b919081156149275773ffffffffffffffffffffffffffffffffffffffff8316614a51575060049150602090604051928380927f11da60b400000000000000000000000000000000000000000000000000000000825273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1801561176757614a365750565b614a4e9060203d60201161382b5761381f8183610778565b50565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b156102b3576040517fa584119400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152925f8460248183875af1918215611767575f95602095614af794614b32575b506156a3565b6004604051809481937f11da60b40000000000000000000000000000000000000000000000000000000083525af1801561176757614a365750565b8061059c89614b4093610778565b5f614af1565b91614b586102c2938261435e826155bf565b61435e826155bf565b906102c291614b967f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c9182614322826153f3565b614322826153f3565b919082359260208101359260408201359263ffffffff60608401351683019063ffffffff82351693602080840193860101910110611eec579190565b937f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c614c088682613b73565b15614d61575090849291614c1b84612f5b565b9590916fffffffffffffffffffffffffffffffff614c478860201c60020b8960081c60020b868a6136e6565b1691865f5260096020525f6040812055865f526002602052865f73ffffffffffffffffffffffffffffffffffffffff604082205416614c87811515612ec8565b8082526003602052604082207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8154019055614cce610ec6845f52600260205260405f2090565b614ce3610ec6845f52600460205260405f2090565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a482614d27575b5050505050505060ff16614d1e5750565b6102c290614040565b614d5596614d5094614d43614d3e614d4a966157da565b6147b8565b908a6158b7565b906159b6565b6159f3565b815f8080808080614d0d565b73ffffffffffffffffffffffffffffffffffffffff907f0ca968d8000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b9091819260a08301359260c08101359260e08201359261010083013592610120810135926101408201359263ffffffff6101608401351683019063ffffffff82351693602080840193860101910110611eec579190565b91908260a09103126102b357604051614e1281610757565b60808082948035614e2281610295565b84526020810135614e3281610295565b60208501526040810135614e45816131c9565b60408501526060810135614e58816131a9565b6060850152013591614e6983610295565b0152565b600260806102c293614ec48135614e8381610295565b859073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b60018401614f1a6020830135614ed981610295565b829073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b6040820135614f28816131c9565b81547fffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff76ffffff00000000000000000000000000000000000000006060860135614f71816131a9565b60b81b79ffffff0000000000000000000000000000000000000000000000169360a01b16911617179055013591614fa783610295565b019073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b909194969297939597600854926001840160085573ffffffffffffffffffffffffffffffffffffffff8a169961501f8b1515613946565b845f52600260205273ffffffffffffffffffffffffffffffffffffffff60405f2054166151f35761510f6151aa986151a493876102c29e61509e8661508561519c9873ffffffffffffffffffffffffffffffffffffffff165f52600360205260405f2090565b80546001019055610e71845f52600260205260405f2090565b5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a46150cd3688614dfa565b63ffffff007fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000060a066ffffff000000009320169260081b169260201b16171790565b9283615123875f52600960205260405f2090565b55837fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000168561518c6001615181847fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000165f52600a60205260405f2090565b015460b81c60020b90565b60020b156151b0575b50506157da565b923690614dfa565b906158b7565b50615aba565b6151e76151ec927fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000165f52600a60205260405f2090565b614e6d565b5f85615195565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4d494e5445440000000000000000000000000000000000006044820152fd5b909181359260208301359260408101359260608201359263ffffffff60808401351683019063ffffffff82351693602080840193860101910110611eec579190565b90959495939192937f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c6152c78382613b73565b15614d61575095614d509282614d3e6102c298996152f26152ea614d4a97612f5b565b9390926157da565b916158b7565b90959495939192937f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c61532c8382613b73565b15614d6157509561535492826152f26102c2989961534c614d4a96612f5b565b9290916157da565b615aba565b73ffffffffffffffffffffffffffffffffffffffff811661537957503190565b9073ffffffffffffffffffffffffffffffffffffffff60246020928260405195869485937f70a08231000000000000000000000000000000000000000000000000000000008552166004840152165afa908115611767575f916153da575090565b610346915060203d60201161382b5761381f8183610778565b61541e81307f0000000000000000000000000000000000000000000000000000000000000000615638565b905f82136154305750610346906147b8565b73ffffffffffffffffffffffffffffffffffffffff907f3351b260000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff811661549257504790565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152906020908290602490829073ffffffffffffffffffffffffffffffffffffffff165afa908115611767575f916153da575090565b90919073ffffffffffffffffffffffffffffffffffffffff811661552c57505f80808061552094865af11590565b6155275750565b613e4a565b919073ffffffffffffffffffffffffffffffffffffffff604051927fa9059cbb00000000000000000000000000000000000000000000000000000000845216600483015260248201525f604060208260448582885af13d15601f3d116001855114161716928281528260208201520152156155a45750565b73ffffffffffffffffffffffffffffffffffffffff16613d6a565b6155ea81307f0000000000000000000000000000000000000000000000000000000000000000615638565b905f82126155f6575090565b73ffffffffffffffffffffffffffffffffffffffff907f4c085bf1000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff809381602094165f52168252602460405f2060405194859384927ff135baaa0000000000000000000000000000000000000000000000000000000084526004840152165afa908115611767575f916153da575090565b90919073ffffffffffffffffffffffffffffffffffffffff83163003615705576102c2925073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906154f2565b9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b156102b3576040517f36c7851600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff94851660048201527f00000000000000000000000000000000000000000000000000000000000000008516602482015291841660448301529190921660648301525f908290608490829084905af180156117675761477e5750565b905f82126157e457565b7f93dafdf1000000000000000000000000000000000000000000000000000000005f5260045ffd5b91908260409103126102b3576020825192015190565b60606103469593615880836101409573ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b805160020b60a0840152602081015160020b60c0840152604081015160e08401520151610100820152816101208201520191612ca5565b95939460409161591d6158c8612cee565b60088a901c60020b81529260208a811c60020b908501528585850152866060850152845198899485947f5a6bcfda00000000000000000000000000000000000000000000000000000000865260048601615822565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1908115611767575f945f92615982575b5081949560ff1661597957505050565b6102c292615c1d565b9094506159a7915060403d6040116159af575b61599f8183610778565b81019061580c565b90935f615969565b503d615995565b6159d9906159cb8360801d8260801d03615d60565b92600f0b90600f0b03615d60565b6fffffffffffffffffffffffffffffffff169060801b1790565b929190926fffffffffffffffffffffffffffffffff8160801d9481615a1787615d6e565b91169182911610615a9f57506fffffffffffffffffffffffffffffffff929350600f0b9082615a4583615d6e565b91169283911610615a54575050565b90615a6f6fffffffffffffffffffffffffffffffff92615d6e565b907f12816f22000000000000000000000000000000000000000000000000000000005f526004521660245260445ffd5b6fffffffffffffffffffffffffffffffff90615a6f86615d6e565b908160801d600f0b91600f0b915f811280615be8575b615b865750505f811280615b4f575b615ae7575050565b90615b0c615af761133c936147b8565b6fffffffffffffffffffffffffffffffff1690565b7f31e30ad0000000000000000000000000000000000000000000000000000000005f526fffffffffffffffffffffffffffffffff91821660045216602452604490565b506fffffffffffffffffffffffffffffffff80615b6b836147b8565b16166fffffffffffffffffffffffffffffffff831610615adf565b906fffffffffffffffffffffffffffffffff615ba461133c936147b8565b7f31e30ad0000000000000000000000000000000000000000000000000000000005f526fffffffffffffffffffffffffffffffff9283166004521616602452604490565b506fffffffffffffffffffffffffffffffff615c03826147b8565b166fffffffffffffffffffffffffffffffff831610615ad0565b615c8e9192815f52600760205273ffffffffffffffffffffffffffffffffffffffff60405f20541693604051927fd8865c2700000000000000000000000000000000000000000000000000000000602085015260248401526044830152606482015260648152613a85608482610778565b15615c965750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d0116604051917f90bfb86500000000000000000000000000000000000000000000000000000000835260048301527fd8865c27000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7fe94f10e20000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b9081600f0b9182036157e457565b5f81600f0b126157e4576fffffffffffffffffffffffffffffffff169056fea164736f6c634300081a000a000000000000000000000000cfa0a7b03da220b5d68ffa048aacf48daee1915e000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba30000000000000000000000000000000000000000000000000000000000030d4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004200000000000000000000000000000000000006", + "nonce": "0x3d", "chainId": "0x14a34" }, "additionalContracts": [], @@ -26,36 +28,40 @@ "receipts": [ { "status": "0x1", - "cumulativeGasUsed": "0x72f892", + "cumulativeGasUsed": "0x57bf25", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0x6868534dcf11b1774abdd69602eee0fc3b3d77b9f5e13437dedf8fbb145dea2c", - "transactionIndex": "0xd", - "blockHash": "0xa09987571186d1c7aeb03045042967627f80c1b6ce6773c166a9630a01758496", - "blockNumber": "0xd42418", - "gasUsed": "0x49c48d", - "effectiveGasPrice": "0x3140", + "transactionHash": "0x9bb6b8adc3094f2707dd830bb7011715ad5a80dd01bda45a050f52809dcc1c12", + "transactionIndex": "0x3", + "blockHash": "0x8878ccf9cab354afd06010855f17e53c755ba084922f85d2f4a80b20d4bf6c26", + "blockNumber": "0x111cd46", + "gasUsed": "0x5080a7", + "effectiveGasPrice": "0x353", "from": "0x7024cc7e60d6560f0b5877da2bb921fcbf1f4375", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": "0xa2f16f0bb5dea7c9a6675ec88193471dee805e6e", + "to": null, + "contractAddress": "0x2224f77c646fd4322df82c374e935921f6aae19e", "l1BaseFeeScalar": "0x44d", - "l1BlobBaseFee": "0x1", + "l1BlobBaseFee": "0x19ac964ba", "l1BlobBaseFeeScalar": "0xa118b", - "l1Fee": "0x86b5d5b1a8", - "l1GasPrice": "0xcde1c41a", - "l1GasUsed": "0x25249" + "l1Fee": "0x2b01e504a5ca", + "l1GasPrice": "0x29b12d14", + "l1GasUsed": "0x28822" } ], "libraries": [], "pending": [], "returns": { + "positionDescriptor": { + "internal_type": "contract PositionDescriptor", + "value": "0x0000000000000000000000000000000000000000" + }, "posm": { "internal_type": "contract PositionManager", - "value": "0xA2f16f0BB5dEA7c9A6675Ec88193471dEe805e6e" + "value": "0x2224f77C646FD4322DF82c374E935921f6AAe19E" } }, - "timestamp": 1723574053, + "timestamp": 1731656063, "chain": 84532, - "commit": "d0faf02" + "commit": "9ed8b498" } \ No newline at end of file diff --git a/deploy.sh b/deploy.sh new file mode 100755 index 00000000..04c43c20 --- /dev/null +++ b/deploy.sh @@ -0,0 +1,12 @@ +# forge script script/DeployQuoter.s.sol --sig "run(address)" 0xcfa0a7b03da220b5d68ffa048aacf48daee1915e --rpc-url base_sepolia --private-key $SEPOLIA_PK --etherscan-api-key $ETHERSCAN_API_KEY_BASE_SEPOLIA --verify --broadcast +# forge script script/DeployQuoter.s.sol --sig "run(address)" 0x1411060f44da12017adbb34de5f9238912db2055 --rpc-url op_sepolia --private-key $SEPOLIA_PK --etherscan-api-key $ETHERSCAN_API_KEY_OP_SEPOLIA --verify --broadcast + +# forge script script/DeployStateView.s.sol --sig "run(address)" 0xbac21cdee1c59ccbda4547fc531803bd0d038251 --rpc-url sepolia --private-key $SEPOLIA_PK --etherscan-api-key $ETHERSCAN_API_KEY_SEPOLIA --verify --broadcast +# forge script script/DeployStateView.s.sol --sig "run(address)" 0xd51ccb81de8426637f7b6fa8405b1990a3b81648 --rpc-url unichain_sepolia --private-key $SEPOLIA_PK --etherscan-api-key $ETHERSCAN_API_KEY_SEPOLIA --verify --broadcast +# forge script script/DeployStateView.s.sol --sig "run(address)" 0xcfa0a7b03da220b5d68ffa048aacf48daee1915e --rpc-url base_sepolia --private-key $SEPOLIA_PK --etherscan-api-key $ETHERSCAN_API_KEY_BASE_SEPOLIA --verify --broadcast +# forge script script/DeployStateView.s.sol --sig "run(address)" 0x1411060f44da12017adbb34de5f9238912db2055 --rpc-url op_sepolia --private-key $SEPOLIA_PK --etherscan-api-key $ETHERSCAN_API_KEY_OP_SEPOLIA --verify --broadcast + +forge script script/DeployPosm.s.sol --sig "run(address,address,uint256,address)" 0xbac21cdee1c59ccbda4547fc531803bd0d038251 0x000000000022D473030F116dDEE9F6B43aC78BA3 200000 0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14 --rpc-url sepolia --private-key $SEPOLIA_PK --etherscan-api-key $ETHERSCAN_API_KEY_SEPOLIA --verify --broadcast +forge script script/DeployPosm.s.sol --sig "run(address,address,uint256,address)" 0xd51ccb81de8426637f7b6fa8405b1990a3b81648 0x000000000022D473030F116dDEE9F6B43aC78BA3 200000 0x4200000000000000000000000000000000000006 --rpc-url unichain_sepolia --private-key $SEPOLIA_PK --etherscan-api-key $ETHERSCAN_API_KEY_SEPOLIA --verify --broadcast +forge script script/DeployPosm.s.sol --sig "run(address,address,uint256,address)" 0xcfa0a7b03da220b5d68ffa048aacf48daee1915e 0x000000000022D473030F116dDEE9F6B43aC78BA3 200000 0x4200000000000000000000000000000000000006 --rpc-url base_sepolia --private-key $SEPOLIA_PK --etherscan-api-key $ETHERSCAN_API_KEY_BASE_SEPOLIA --verify --broadcast +forge script script/DeployPosm.s.sol --sig "run(address,address,uint256,address)" 0x1411060f44da12017adbb34de5f9238912db2055 0x000000000022D473030F116dDEE9F6B43aC78BA3 200000 0x4200000000000000000000000000000000000006 --rpc-url op_sepolia --private-key $SEPOLIA_PK --etherscan-api-key $ETHERSCAN_API_KEY_OP_SEPOLIA --verify --broadcast diff --git a/script/DeployPosm.s.sol b/script/DeployPosm.s.sol index 651f84b0..7e77fe06 100644 --- a/script/DeployPosm.s.sol +++ b/script/DeployPosm.s.sol @@ -19,19 +19,18 @@ contract DeployPosmTest is Script { address poolManager, address permit2, uint256 unsubscribeGasLimit, - address wrappedNative, - string memory nativeCurrencyLabel + address wrappedNative ) public returns (PositionDescriptor positionDescriptor, PositionManager posm) { vm.startBroadcast(); - positionDescriptor = new PositionDescriptor(IPoolManager(poolManager), wrappedNative, nativeCurrencyLabel); - console2.log("PositionDescriptor", address(positionDescriptor)); + // positionDescriptor = new PositionDescriptor(IPoolManager(poolManager), wrappedNative, "ETH"); + // console2.log("PositionDescriptor", address(positionDescriptor)); - posm = new PositionManager{salt: hex"04"}( + posm = new PositionManager( IPoolManager(poolManager), IAllowanceTransfer(permit2), unsubscribeGasLimit, - IPositionDescriptor(address(positionDescriptor)), + IPositionDescriptor(address(0)), IWETH9(wrappedNative) ); console2.log("PositionManager", address(posm));