From 9e46a1cadbd2bb2622bf7b4038ab64a43021d6a4 Mon Sep 17 00:00:00 2001 From: Alysia Huggins Date: Fri, 12 Jul 2024 16:49:07 -0400 Subject: [PATCH] modified scripts required for upgrading the LC without OPZ defender --- .../11155111/run-1720726496.json | 153 ++++++++++++++++++ .../11155111/run-latest.json | 153 ++++++++++++++++++ .../11155111/run-1720727659.json | 56 +++++++ .../11155111/run-1720727923.json | 131 +++++++++++++++ .../11155111/run-latest.json | 131 +++++++++++++++ contracts/script/README.md | 9 +- contracts/script/UpgradeLightClientToV2.s.sol | 41 +++++ ...ent.s.sol => UpgradeSameLightClient.s.sol} | 0 .../LightClient.sol/11155111/13.json | 8 + .../test/LightClientUpgradeSameContract.t.sol | 88 ++++++++++ ...ade.t.sol => LightClientUpgradeToV2.t.sol} | 4 +- 11 files changed, 770 insertions(+), 4 deletions(-) create mode 100644 contracts/broadcast/LightClient.s.sol/11155111/run-1720726496.json create mode 100644 contracts/broadcast/LightClient.s.sol/11155111/run-latest.json create mode 100644 contracts/broadcast/UpgradeLightClient.s.sol/11155111/run-1720727659.json create mode 100644 contracts/broadcast/UpgradeLightClient.s.sol/11155111/run-1720727923.json create mode 100644 contracts/broadcast/UpgradeLightClient.s.sol/11155111/run-latest.json create mode 100644 contracts/script/UpgradeLightClientToV2.s.sol rename contracts/script/{UpgradeLightClient.s.sol => UpgradeSameLightClient.s.sol} (100%) create mode 100644 contracts/script/output/defenderDeployments/LightClient.sol/11155111/13.json create mode 100644 contracts/test/LightClientUpgradeSameContract.t.sol rename contracts/test/{LightClientUpgrade.t.sol => LightClientUpgradeToV2.t.sol} (98%) diff --git a/contracts/broadcast/LightClient.s.sol/11155111/run-1720726496.json b/contracts/broadcast/LightClient.s.sol/11155111/run-1720726496.json new file mode 100644 index 0000000000..e4439f88a1 --- /dev/null +++ b/contracts/broadcast/LightClient.s.sol/11155111/run-1720726496.json @@ -0,0 +1,153 @@ +{ + "transactions": [ + { + "hash": "0xd3a615e5e1565625a38c1068a1f27f1813db90dbfb61ab93a273a06e32df2a23", + "transactionType": "CREATE", + "contractName": "LightClient", + "contractAddress": "0xad3ecffcb19bcb3464ec5e02af565bcc08b63aff", + "function": null, + "arguments": null, + "transaction": { + "from": "0x42ba5a503f27f4d1e21a5a09c9edd3ea1d273876", + "gas": "0x640315", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516159c162000104600039600081816114320152818161145b01526115c701526159c16000f3fe6080604052600436106101525760003560e01c8063013fa5fc146101575780630d8e6e2c14610179578063313df7b1146101ab578063382b215a146101d8578063409939b7146101fc5780634847ae5d1461021c5780634f1ef2861461029e57806352d1902d146102b157806354646085146102c657806362827733146102db57806369cc6a04146102f15780637053fc5114610306578063715018a61461031b578063766718081461033057806376b6b7cb146103645780637f17baad1461037a57806382d07ff31461042d5780638584d23f146104425780638da5cb5b14610486578063a244d5961461049b578063a51e6fea146104bb578063aa922732146104db578063ad3cb1cc146104fb578063bd32519a14610539578063ca6fe8551461056a578063db13b60a14610580578063e0303301146105bf578063f0682054146105df578063f2fde38b14610611575b600080fd5b34801561016357600080fd5b50610177610172366004614f2f565b610631565b005b34801561018557600080fd5b506040805160018152600060208201819052918101919091526060015b60405180910390f35b3480156101b757600080fd5b506006546101cb906001600160a01b031681565b6040516101a29190614f4a565b3480156101e457600080fd5b506101ee60035481565b6040519081526020016101a2565b34801561020857600080fd5b506101776102173660046150cf565b6106f1565b34801561022857600080fd5b50610231610a1c565b6040516101a2919060006101008201905060018060401b038084511683528060208501511660208401525060408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b6101776102ac366004615289565b610aae565b3480156102bd57600080fd5b506101ee610acd565b3480156102d257600080fd5b506008546101ee565b3480156102e757600080fd5b506101ee60025481565b3480156102fd57600080fd5b50610177610aea565b34801561031257600080fd5b506007546101ee565b34801561032757600080fd5b50610177610b5a565b34801561033c57600080fd5b5060005461035790600160601b90046001600160401b031681565b6040516101a2919061532e565b34801561037057600080fd5b506101ee60015481565b34801561038657600080fd5b506103e7610395366004615356565b600560208190526000918252604090912080546001820154600283015460038401546004850154958501546006909501546001600160401b0380861697600160401b9096041695939492939192919088565b604080516001600160401b03998a168152989097166020890152958701949094526060860192909252608085015260a084015260c083015260e0820152610100016101a2565b34801561043957600080fd5b50610231610b6c565b34801561044e57600080fd5b5061046261045d366004615371565b610bfc565b6040805182516001600160401b0316815260209283015192810192909252016101a2565b34801561049257600080fd5b506101cb610d56565b3480156104a757600080fd5b506101776104b636600461538a565b610d71565b3480156104c757600080fd5b506101ee6104d6366004615371565b610e9c565b3480156104e757600080fd5b506101ee6104f63660046153d1565b610ebd565b34801561050757600080fd5b5061052c604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101a29190615412565b34801561054557600080fd5b5060065461055a90600160a01b900460ff1681565b60405190151581526020016101a2565b34801561057657600080fd5b506101ee60045481565b34801561058c57600080fd5b506105a061059b366004615371565b610f05565b604080516001600160401b0390931683526020830191909152016101a2565b3480156105cb57600080fd5b5061055a6105da366004615445565b610f3d565b3480156105eb57600080fd5b506000546105fc9063ffffffff1681565b60405163ffffffff90911681526020016101a2565b34801561061d57600080fd5b5061017761062c366004614f2f565b611020565b61063961105e565b6001600160a01b0381166106605760405163e6c4247b60e01b815260040160405180910390fd5b6006546001600160a01b039081169082160361068f5760405163a863aec960e01b815260040160405180910390fd5b600680546001600160a81b0319166001600160a01b0380841691909117600160a01b17918290556040517f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072926106e6921690614f4a565b60405180910390a150565b600654600160a01b900460ff16801561071557506006546001600160a01b03163314155b1561075c576006546001600160a01b0316610743576040516312e6d1e760e11b815260040160405180910390fd5b6040516301474c8f60e71b815260040160405180910390fd5b610764610b6c565b5182516001600160401b0391821691161115806107a25750610784610b6c565b602001516001600160401b031682602001516001600160401b031611155b156107c05760405163051c46ef60e01b815260040160405180910390fd5b600080546107e59063ffffffff811690600160601b90046001600160401b031661547d565b6000805463ffffffff600160401b91829004168252600560205260409091205491925090046001600160401b039081169082161480158161083b5750816001600160401b031684602001516001600160401b0316115b15610864578160405163036466bf60e31b815260040161085b919061532e565b60405180910390fd5b6108718460400151611090565b61087e8460600151611090565b61088b8460800151611090565b6108988460a00151611090565b6108a58460c00151611090565b80156108b3576108b36110ec565b6108bd8484611237565b60008054600160401b9081900463ffffffff168252600560208181526040808520895181548b850180516001600160401b039384166001600160801b0319909316929092179183169097021782558a8301805160018085019190915560608d015160028086019190915560808e0151600386015560a08e0151600486015560c08e01519785019790975560e08d01516006909401939093556007805480850182559089524360008051602061589583398151915290910155835180850185528751831681528151818701908152600880549586018155909952516000805160206159158339815191529390960292830180546001600160401b03191696831696909617909555955160008051602061595583398151915290910155925188519251935193845284169391909116917fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6910160405180910390a350505050565b610a24614d2d565b5060008054600160201b900463ffffffff1681526005602081815260409283902083516101008101855281546001600160401b038082168352600160401b90910416928101929092526001810154938201939093526002830154606082015260038301546080820152600483015460a08201529082015460c082015260069091015460e082015290565b610ab6611427565b610abf826114cc565b610ac98282611503565b5050565b6000610ad76115bc565b506000805160206158d583398151915290565b610af261105e565b600654600160a01b900460ff1615610b3f57600680546001600160a81b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c0245090600090a1565b60405163a863aec960e01b815260040160405180910390fd5b565b610b6261105e565b610b586000611605565b610b74614d2d565b506000805463ffffffff600160401b918290041682526005602081815260409384902084516101008101865281546001600160401b038082168352959004909416918401919091526001810154938301939093526002830154606083015260038301546080830152600483015460a083015282015460c082015260069091015460e082015290565b60408051808201909152600080825260208201526008805490610c206001836154a0565b81548110610c3057610c306154b3565b60009182526020909120600290910201546001600160401b03168310610c6957604051631856a49960e21b815260040160405180910390fd5b60005b81811015610cfe578360088281548110610c8857610c886154b3565b60009182526020909120600290910201546001600160401b03161115610cf65760088181548110610cbb57610cbb6154b3565b60009182526020918290206040805180820190915260029092020180546001600160401b031682526001015491810191909152949350505050565b600101610c6c565b506008610d0c6001836154a0565b81548110610d1c57610d1c6154b3565b60009182526020918290206040805180820190915260029092020180546001600160401b0316825260010154918101919091529392505050565b600080610d61611661565b546001600160a01b031692915050565b6000610d7b611685565b805490915060ff600160401b82041615906001600160401b0316600081158015610da25750825b90506000826001600160401b03166001148015610dbe5750303b155b905081158015610dcc575080155b15610dea5760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b03191660011785558315610e1357845460ff60401b1916600160401b1785555b610e1c866116a9565b610e246116ba565b60008054600160201b600160601b031916600160401b179055610e4788886116c2565b8315610e9257845460ff60401b191685556040517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290610e899060019061532e565b60405180910390a15b5050505050505050565b60078181548110610eac57600080fd5b600091825260209091200154905081565b60808082015160a083015160c0840151604080516020810194909452830191909152606082015260009101604051602081830303815290604052805190602001209050919050565b60088181548110610f1557600080fd5b6000918252602090912060029091020180546001909101546001600160401b03909116915082565b60075460009043841180610f515750600381105b15610f6f5760405163b0b4387760e01b815260040160405180910390fd5b60008080610f7e6001856154a0565b90505b81610fe9578660078281548110610f9a57610f9a6154b3565b906000526020600020015411610fcf576001915060078181548110610fc157610fc16154b3565b906000526020600020015492505b60028110610fe95780610fe1816154c9565b915050610f81565b816110075760405163b0b4387760e01b815260040160405180910390fd5b8561101284896154a0565b119450505050505b92915050565b61102861105e565b6001600160a01b038116611052576000604051631e4fbdf760e01b815260040161085b9190614f4a565b61105b81611605565b50565b33611067610d56565b6001600160a01b031614610b58573360405163118cdaa760e01b815260040161085b9190614f4a565b6000805160206158f5833981519152811080610ac95760405162461bcd60e51b815260206004820152601b60248201527a109b8c8d4d0e881a5b9d985b1a59081cd8d85b185c88199a595b19602a1b604482015260640161085b565b6000805463ffffffff600160401b9182900416825260056020818152604080852081516101008101835281546001600160401b038082168352969004909516928501929092526001820154908401526002810154606084015260038101546080840152600481015460a08401529081015460c08301526006015460e082015261117490610ebd565b600380546001908155908290556004805460025560008054600160401b810463ffffffff16825260056020526040822060060154909255929350909190600c906111cf908490600160601b90046001600160401b03166154e0565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fdb3558259e039d7e50e816b9dcce30fb114d8a9c86eca5ab14b60194d6945d3f6000600c9054906101000a90046001600160401b03166040516106e6919061532e565b60006112416119e5565b604080516008808252610120820190925291925060009190602082016101008036833701905050905060025481600081518110611280576112806154b3565b60200260200101818152505083600001516001600160401b0316816001815181106112ad576112ad6154b3565b60200260200101818152505083602001516001600160401b0316816002815181106112da576112da6154b3565b6020026020010181815250508360400151816003815181106112fe576112fe6154b3565b602002602001018181525050836060015181600481518110611322576113226154b3565b60209081029190910181019190915260008054600160401b900463ffffffff16815260059182905260409020600301548251909183918110611366576113666154b3565b60209081029190910181019190915260008054600160401b900463ffffffff168152600590915260409020600401548151829060069081106113aa576113aa6154b3565b60209081029190910181019190915260008054600160401b900463ffffffff1681526005918290526040902001548151829060079081106113ed576113ed6154b3565b602002602001018181525050611404828285611fc7565b611421576040516309bde33960e01b815260040160405180910390fd5b50505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806114ae57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114a26000805160206158d5833981519152546001600160a01b031690565b6001600160a01b031614155b15610b585760405163703e46dd60e11b815260040160405180910390fd5b6114d461105e565b7ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d816040516106e69190614f4a565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561155d575060408051601f3d908101601f1916820190925261155a91810190615500565b60015b61157c5781604051634c9c8ce360e01b815260040161085b9190614f4a565b6000805160206158d583398151915281146115ad57604051632a87526960e21b81526004810182905260240161085b565b6115b783836120b2565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b585760405163703e46dd60e11b815260040160405180910390fd5b600061160f611661565b80546001600160a01b038481166001600160a01b031983168117845560405193945091169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b6116b1612108565b61105b8161212d565b610b58612108565b81516001600160401b03161515806116e6575060208201516001600160401b031615155b806116f357506080820151155b80611700575060a0820151155b8061170d575060c0820151155b8061171a575060e0820151155b80611729575063ffffffff8116155b15611747576040516350dd03f760e11b815260040160405180910390fd5b81600560008060049054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160010155606082015181600201556080820151816003015560a0820151816004015560c0820151816005015560e0820151816006015590505081600560008060089054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160010155606082015181600201556080820151816003015560a0820151816004015560c0820151816005015560e08201518160060155905050600080600c6101000a8154816001600160401b0302191690836001600160401b03160217905550806000806101000a81548163ffffffff021916908363ffffffff160217905550600061192d83610ebd565b600181815560e08501516002818155600393909355600455600780548083018255600091825243600080516020615895833981519152909101556040805180820182526020808901516001600160401b039081168352929098015197810197885260088054948501815590925290516000805160206159158339815191529290930291820180546001600160401b03191693909116929092179091559251600080516020615955833981519152909301929092555050565b6119ed614d84565b621000008152600860208201527f20c9403133dfde9a9d382df76fb0523571648725abc0a7c12830bb690ec83b336040820151527f03a0a9acc3e3815a7ed6cb1379f7d157e6343164729376392a693acbd3ec283c6020604083015101527f2866c18ad1df10ef13542cce6250ce02cb2a6b72ae00a9852e271187e9e4e0db6060820151527f21be232a42246a5663ebf483470cca666ffe9d4f0e63b929c596a7658714e9706020606083015101527f07d77873b9860074118e75808c79468b83c8ed64ba14db5cb5afa8e534de7b996080820151527f0be0f448839080132d47de17de0099b4cd74ae1e6b71cdda06cdebb868a50c6d6020608083015101527f13bd45a023491eadea44cc3f24cfbd1796eade9c0e39ee81d9f63ea0a580662560a0820151527f18f95cdda42ce11d9d10a3b335acc214e3807c578c5359405d810c208df60093602060a083015101527f0970d978763461f09e9ec63454073497386e4d282fedc2ac5b967cb9fd3fa8a960c0820151527f28c2217f7bacf6f8b2b8ee4a90fcf8b5bca04205ea84e8e1eb54b85dd41bde28602060c083015101527f02fe3d02988db718380052970aba46a3296df5f29b736ba1f2c4ccffc8b5969360e0820151527f202c3e390cee7c5c8525da2329a19f4936f6f71ca97dde6c6fa32b382d5acc03602060e083015101527f23ac10ae6ca5cacee8744bb939aaa835390954b91ae668a2c8d0edda558a89e7610100820151527f1c8c2b856cdade256ba3237f39afd5e170a9532012f7aecae49d459b29f6f6ad602061010083015101527f16ec03d260bd7ac1c50ffa63565d5274b4582ceea52ff40b81cdfe8f444f01e4610120820151527f29392152723097e07113c3d7786d245ec40c30928015cd50b5668a4f4ea17031602061012083015101527f2cdbfb3a4053c8489b0c94e74338ac19118df7a06bc56b1eb4d0e0dc4eae7248610140820151527f07fea127dae943b8dc148f1408d40cff465c9c4721943669b1e4fd5a39db7036602061014083015101527f031455a79a2e0ce78a6cb53526ec04ac19716a86b08a93df48d178f8b77e5619610160820151527f118623e6bc136ee6d3f9907cd4ad04a9418ea03ba99ad753227cdfee598e8415602061016083015101527f0861d1997761a852226aac7ba9717bf6ae56451099be774cdf02ef352a58cbc8610180820151527f0805e392bcbc12e40a722778632d73fe981e4bc6fa6d1178b70af7be1cb9a3a3602061018083015101527f101d1e3978cb9f1e303d413144ebe67682c9eb0cfe11242959aa6029d78cdbbc6101a0820151527f089eb9c727e6cb07082bc3e6f40cf04f439fe48000602b584774dad7efc6607c60206101a083015101527f2d489f2493263aa873bcd94f21efb45bf257a61d81c0c95c3297916506653b406101c0820151527f18e45d627aadd4df2794ecd9909fac1a753f0c6fa8a9c6654a7a58b0912fffd560206101c083015101527f0e43e3a4b13cb438e2ad924614261ad0240214fa1c83fcda6a0bf779eb39ffc56101e0820151527f0eaba9f429c5f6fc3103d4cc4056c500ff42425d8e6465c5b8e145219f9c5cd360206101e083015101527f29ae351d09dcf41c0a80ab05393738358baab37e6fbc464b3bb13258994a1fa4610200820151527f2b7bc74608d7ec7dadd0597d6a4010d8bfc2b31900281901cedc42bdbb0fb8fc602061020083015101527f066802c7ceb9e913d4f65433a20661e097acac1affecbb534a54f76a29782226610220820151527f27ec80e811e636f3348267923c8e641bd98a7e37c5216670cbff14ae323f9e0e602061022083015101527f12604d1f87c583f6c9710c73eaf590af9d07aa743d1381d0e9dff0eab2614239610240820151527f1588579e6c3378ea32cb641205ef762a63cd353a0bd670394528ad2081ee8dd4602061024083015101527f247d65261d3a4ab042ba937331f6d0c0c5eb9ea78753a92084db1a6939e19e82610260820151527f2ce6cc664a32147bfe6a0c94a95bf0496679405ccae01648cd4ec021145120d56020610260830151015290565b6000611fd282612135565b611ff583600081518110611fe857611fe86154b3565b6020026020010151611090565b61200b83600181518110611fe857611fe86154b3565b61202183600281518110611fe857611fe86154b3565b61203783600381518110611fe857611fe86154b3565b61204d83600481518110611fe857611fe86154b3565b61206383600581518110611fe857611fe86154b3565b61207983600681518110611fe857611fe86154b3565b61208f83600781518110611fe857611fe86154b3565b600061209c85858561226d565b90506120a7816123b7565b9150505b9392505050565b6120bb82612816565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612100576115b78282612872565b610ac96128e8565b612110612907565b610b5857604051631afcd79f60e31b815260040160405180910390fd5b611028612108565b805161214090612921565b61214d8160200151612921565b61215a8160400151612921565b6121678160600151612921565b6121748160800151612921565b6121818160a00151612921565b61218e8160c00151612921565b61219b8160e00151612921565b6121a9816101000151612921565b6121b7816101200151612921565b6121c5816101400151612921565b6121d3816101600151612921565b6121e1816101800151612921565b6121ef816101a00151611090565b6121fd816101c00151611090565b61220b816101e00151611090565b612219816102000151611090565b612227816102200151611090565b612235816102400151611090565b612243816102600151611090565b612251816102800151611090565b61225f816102a00151611090565b61105b816102c00151611090565b612275614e88565b836020015183511461229a576040516320fa9d8960e11b815260040160405180910390fd5b60006122a78585856129af565b905060006122b88660000151612cce565b905060006122cb828460a0015188613099565b60408051601e8082526103e0820190925291925060009190602082016103c080368337505060408051601e8082526103e082019092529293506000929150602082015b612316614ec2565b81526020019060019003908161230e579050509050600061233b8a858a8987876130f9565b60a08701516060870151919250906000805160206158f5833981519152600081838509604080516101008101825260e09c8d0151815260208101969096528501525050506060810191909152608081019290925260a082015261016086015160c082015261018090950151928501929092525091949350505050565b60006000805160206158f58339815191526123d0614ec2565b6123d8614ec2565b6040805160028082526060820183526000926020830190803683375050604080516002808252606082019092529293506000929150602082015b61241a614ec2565b8152602001906001900390816124125790505090506000600190508083600081518110612449576124496154b3565b6020026020010181815250508760c001518260008151811061246d5761246d6154b3565b6020026020010181905250876000015183600181518110612490576124906154b3565b6020026020010181815250508760e00151826001815181106124b4576124b46154b3565b60200260200101819052506124c9828461312e565b60808901515190955060609350839250905060006124e8826002615519565b6124f3906001615519565b9050806001600160401b0381111561250d5761250d614f5e565b604051908082528060200260200182016040528015612536578160200160208202803683370190505b509350806001600160401b0381111561255157612551614f5e565b60405190808252806020026020018201604052801561258a57816020015b612577614ec2565b81526020019060019003908161256f5790505b509250505060008060005b89608001515181101561262e57896080015181815181106125b8576125b86154b3565b60200260200101518583815181106125d2576125d26154b3565b6020026020010181815250508960a0015181815181106125f4576125f46154b3565b602002602001015184838151811061260e5761260e6154b3565b6020908102919091010152612624600183615519565b9150600101612595565b508860200151848281518110612646576126466154b3565b6020026020010181815250508860c00151838281518110612669576126696154b3565b602090810291909101015261267f600182615519565b895160408b0151919250906000898284099050808785815181106126a5576126a56154b3565b6020026020010181815250505050508860e001518382815181106126cb576126cb6154b3565b60209081029190910101526126e1600182615519565b60608a0151909150878184089250506126f98261321c565b84828151811061270b5761270b6154b3565b60200260200101818152505061271f61324e565b838281518110612731576127316154b3565b602002602001018190525061274e612749848661312e565b61326f565b945050505050600060405180608001604052807f0118c4d5b837bcc2bc89b5b398b5974e9f5944073b32078b7e231fec938883b081526020017f260e01b251f6f1c7e7ff4e580791dee8ea51d87a358e038b4efe30fac09383c181526020017f22febda3c0c0632a56475b4214e5615e11e6dd3f96e6cea2854a87d4dacc5e5581526020017f04fc6369f7110fe3d25156c1bb9a72859cf2a04641f99ba4ee413c80da6a5fe4815250905061280c8382846128076132dc565b6133ad565b9695505050505050565b806001600160a01b03163b6000036128435780604051634c9c8ce360e01b815260040161085b9190614f4a565b6000805160206158d583398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161288f919061552c565b600060405180830381855af49150503d80600081146128ca576040519150601f19603f3d011682016040523d82523d6000602084013e6128cf565b606091505b50915091506128df858383613490565b95945050505050565b3415610b585760405163b398979f60e01b815260040160405180910390fd5b6000612911611685565b54600160401b900460ff16919050565b600060008051602061587583398151915261293b836134e3565b1561294557505050565b8251602084015182600384858586098509088382830914838210848410161693505050816115b75760405162461bcd60e51b8152602060048201526017602482015276109b8c8d4d0e881a5b9d985b1a590811cc481c1bda5b9d604a1b604482015260640161085b565b6129f760405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805180820190915260608152600060208201526000805160206158f5833981519152612a268287876134f2565b81518451612a339061388b565b612a40866020015161388b565b612a4d876040015161388b565b612a5a886060015161388b565b612a67896080015161388b565b604051602001612a7c96959493929190615548565b60408051601f198184030181529190528252612a9782613900565b50612aa182613900565b6060840152612aaf82613900565b6080840152815160a0850151612ac49061388b565b604051602001612ad59291906155c7565b60408051601f198184030181529190528252612af082613900565b8352815160c0850151612b029061388b565b612b0f8660e0015161388b565b612b1d87610100015161388b565b612b2b88610120015161388b565b612b3989610140015161388b565b604051602001612b4e96959493929190615548565b60408051601f198184030181529190528252612b6982613900565b60a084015281516101a0850151612b7f90613962565b612b8d866101c00151613962565b612b9b876101e00151613962565b612ba9886102000151613962565b612bb7896102200151613962565b604051602001612bcc969594939291906155f6565b60408051601f19818403018152919052808352610240850151612bee90613962565b612bfc866102600151613962565b612c0a876102800151613962565b612c18886102a00151613962565b612c26896102c00151613962565b604051602001612c3b969594939291906155f6565b60408051601f198184030181529190528252612c5682613900565b60c08401528151610160850151612c6c9061388b565b612c7a86610180015161388b565b604051602001612c8c93929190615632565b60408051601f198184030181529190528252612ca782613900565b60e08401528251818180098282820960208601919091526040850152509195945050505050565b612d006040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b816201000003612d9457506040805160a0810182526010815260208101929092527f30641e0e92bebef818268d663bcad6dbcfd6c0149170f6d7d350b1b1fa6c1001908201527eeeb2cb5981ed45649abebde081dcff16c8601de4347e7dd1628ba2daac43b760608201527f0b5d56b77fe704e8e92338c0082f37e091126414c830e4c6922d5ac802d842d4608082015290565b816202000003612e2957506040805160a0810182526011815260208101929092527f30643640b9f82f90e83b698e5ea6179c7c05542e859533b48b9953a2f5360801908201527f1bf82deba7d74902c3708cc6e70e61f30512eca95655210e276e5858ce8f58e560608201527f244cf010c43ca87237d8b00bf9dd50c4c01c7f086bd4e8c920e75251d96f0d22608082015290565b816204000003612ebe57506040805160a0810182526012815260208101929092527f30644259cd94e7dd5045d7a27013b7fcd21c9e3b7fa75222e7bda49b729b0401908201527f19ddbcaf3a8d46c15c0176fbb5b95e4dc57088ff13f4d1bd84c6bfa57dcdc0e060608201527f036853f083780e87f8d7c71d111119c57dbe118c22d5ad707a82317466c5174c608082015290565b816208000003612f5357506040805160a0810182526013815260208101929092527f3064486657634403844b0eac78ca882cfd284341fcb0615a15cfcd17b14d8201908201527f2260e724844bca5251829353968e4915305258418357473a5c1d597f613f6cbd60608201527f06e402c0a314fb67a15cf806664ae1b722dbc0efe66e6c81d98f9924ca535321608082015290565b816210000003612fe857506040805160a0810182526014815260208101929092527f30644b6c9c4a72169e4daa317d25f04512ae15c53b34e8f5acd8e155d0a6c101908201527f26125da10a0ed06327508aba06d1e303ac616632dbed349f53422da95333785760608201527f100c332d2100895fab6473bc2c51bfca521f45cb3baca6260852a8fde26c91f3608082015290565b8160200361307b57506040805160a0810182526005815260208101929092527f2ee12bff4a2813286a8dc388cd754d9a3ef2490635eba50cb9c2e5e750800001908201527f09c532c6306b93d29678200d47c0b2a99c18d51b838eeb1d3eed4c533bb512d060608201527f2724713603bfbd790aeaf3e7df25d8e7ef8f311334905b4d8c99980cf210979d608082015290565b60405163e2ef09e560e01b815260040160405180910390fd5b919050565b6130bd60405180606001604052806000815260200160008152602001600081525090565b6130c78484613a99565b8082526130d79085908590613aed565b602082015280516130ed90859084908690613b51565b60408201529392505050565b600080613107858789613ca7565b9050613117888689898888613d93565b61312281878661409f565b98975050505050505050565b613136614ec2565b82518251146131875760405162461bcd60e51b815260206004820181905260248201527f4d534d206572726f723a206c656e67746820646f6573206e6f74206d61746368604482015260640161085b565b6131c58360008151811061319d5761319d6154b3565b6020026020010151836000815181106131b8576131b86154b3565b60200260200101516140ef565b905060015b82518110156132155761320b826132068684815181106131ec576131ec6154b3565b60200260200101518685815181106131b8576131b86154b3565b614183565b91506001016131ca565b5092915050565b60006132366000805160206158f583398151915283615675565b61101a906000805160206158f58339815191526154a0565b613256614ec2565b5060408051808201909152600181526002602082015290565b613277614ec2565b613280826134e3565b15613289575090565b60405180604001604052808360000151815260200160008051602061587583398151915284602001516132bc9190615675565b6132d4906000805160206158758339815191526154a0565b905292915050565b6133076040518060800160405280600081526020016000815260200160008152602001600081525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b60008060006040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e08201526020850151610100820152845161012082015260608501516101408201526040850151610160820152602060006101808360085afa9150506000519150806134825760405162461bcd60e51b815260206004820152601c60248201527b426e3235343a2050616972696e6720636865636b206661696c65642160201b604482015260640161085b565b50151590505b949350505050565b6060826134a5576134a08261421e565b6120ab565b81511580156134bc57506001600160a01b0384163b155b156134dc5783604051639996b31560e01b815260040161085b9190614f4a565b50806120ab565b80516020909101511590151690565b825160fe9061352d61350383613962565b60405160200161351591815260200190565b60405160208183030381529060405260006004614247565b61356761353d8660000151613962565b60405160200161354f91815260200190565b60405160208183030381529060405260006008614247565b61357761353d8760200151613962565b60405160200161358a9493929190615697565b60408051601f198184030181529190528085526135a76001613962565b6135be600080516020615995833981519152613962565b6135d5600080516020615935833981519152613962565b6135ec600080516020615975833981519152613962565b6136036000805160206158b5833981519152613962565b604051602001613618969594939291906155f6565b60408051601f1981840301815291905280855260e08401516136399061388b565b61364785610100015161388b565b61365586610120015161388b565b61366387610140015161388b565b61367188610160015161388b565b61367f89610180015161388b565b61368d8a6101e0015161388b565b6040516020016136a49897969594939291906156ee565b60408051601f198184030181529190528085526102008401516136c69061388b565b6136d485610220015161388b565b6136e286610240015161388b565b6136f0876101a0015161388b565b6136fe886101c0015161388b565b61370c89610260015161388b565b6040516020016137229796959493929190615793565b60408051601f198184030181529181528186528401516137419061388b565b61374e856060015161388b565b61375b866080015161388b565b6137688760a0015161388b565b6137758860c0015161388b565b60405160200161378a96959493929190615548565b60408051601f1981840301815291905280855282516137c19084906000906137b4576137b46154b3565b6020026020010151613962565b6137d7846001815181106137b4576137b46154b3565b6137ed856002815181106137b4576137b46154b3565b613803866003815181106137b4576137b46154b3565b613819876004815181106137b4576137b46154b3565b61382f886005815181106137b4576137b46154b3565b613845896006815181106137b4576137b46154b3565b61385b8a6007815181106137b4576137b46154b3565b60405160200161387399989796959493929190615825565b60408051601f19818403018152919052909352505050565b60606000613898836134e3565b156138a457600160fe1b175b602083015160008051602061587583398151915260019190911b106138ca5750600160ff1b5b82516138d7908217613962565b6040516020016138e991815260200190565b604051602081830303815290604052915050919050565b602080820151825180516040518381526000948594939291908101855b83811015613937576020818601810151838301520161391d565b5050602091820190209086018190529250600061280c6000805160206158f583398151915285615675565b60008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008827fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010827dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1916901c1790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020827bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1916901c1790506040816001600160401b03600160801b03600160c01b0316901b6040826001600160401b03600160801b03600160c01b031916901c179050608081901b608082901c179050919050565b81516000906000805160206158f583398151915290838015613add5784935060005b82811015613ad157838586099450600101613abb565b50600184039350613ae4565b6001830393505b50505092915050565b600081600003613aff575060006120ab565b60408401516000805160206158f583398151915290600090828186099050858015613b2f57600187039250613b36565b6001840392505b50613b4082614354565b915082828209979650505050505050565b600081600003613b6357506000613488565b835160408601516000805160206158f58339815191529190600090819081908180613b8e8d886143fa565b90506000876001600160401b03811115613baa57613baa614f5e565b604051908082528060200260200182016040528015613bd3578160200160208202803683370190505b509050888b850993506001925060005b88811015613c1857602081026020840101519550898d878c030896508987850960208281028401018890529350600101613be3565b50613c2283614354565b925060005b88811015613c955760208102602084010151955089868609975089848909975060005b89811015613c7457808214613c6c576020810260208401015197508a888a0998505b600101613c4a565b506020810260208f010151955089868909975089888c089a50600101613c27565b50505050505050505050949350505050565b6000806000805160206158f58339815191529050600083602001519050600084604001519050600060019050606088015160808901516101a08901516102408a0151878889838709858501088609945050506101c08901516102608a0151878889838709858501088609945050506101e08901516102808a0151878889838709858501088609945050506102008901516102a08a01518788898387098585010886099450505061022089015191506102c0890151868782898587080985099350505050875160208901518586868309870385089650508485838309860387089998505050505050505050565b613da18686868685876144bf565b60c085015182516000805160206158f583398151915291908190819086906014908110613dd057613dd06154b3565b602002602001018181525050856000015184601481518110613df457613df46154b3565b60200260200101819052508282820990508085601581518110613e1957613e196154b3565b602002602001018181525050856020015184601581518110613e3d57613e3d6154b3565b60200260200101819052508282820990508085601681518110613e6257613e626154b3565b602002602001018181525050856040015184601681518110613e8657613e866154b3565b60200260200101819052508282820990508085601781518110613eab57613eab6154b3565b602002602001018181525050856060015184601781518110613ecf57613ecf6154b3565b60200260200101819052508282820990508085601881518110613ef457613ef46154b3565b602002602001018181525050856080015184601881518110613f1857613f186154b3565b60200260200101819052508282820990508085601981518110613f3d57613f3d6154b3565b602002602001018181525050886040015184601981518110613f6157613f616154b3565b60200260200101819052508282820990508085601a81518110613f8657613f866154b3565b602002602001018181525050886060015184601a81518110613faa57613faa6154b3565b60200260200101819052508282820990508085601b81518110613fcf57613fcf6154b3565b602002602001018181525050886080015184601b81518110613ff357613ff36154b3565b60200260200101819052508282820990508085601c81518110614018576140186154b3565b6020026020010181815250508860a0015184601c8151811061403c5761403c6154b3565b60200260200101819052508282820990508760e0015185601d81518110614065576140656154b3565b6020026020010181815250508560a0015184601d81518110614089576140896154b3565b6020026020010181905250505050505050505050565b6000805160206158f58339815191528381039060005b600a8110156140e65760206015820102840151602082026101a00186015183848284098608945050506001016140b5565b50509392505050565b6140f7614ec2565b6140ff614edc565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa9050808061413157600080fd5b508061417b5760405162461bcd60e51b8152602060048201526019602482015278426e3235343a207363616c6172206d756c206661696c65642160381b604482015260640161085b565b505092915050565b61418b614ec2565b614193614efa565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa905080806141d057600080fd5b508061417b5760405162461bcd60e51b815260206004820152601d60248201527f426e3235343a2067726f7570206164646974696f6e206661696c656421000000604482015260640161085b565b80511561422e5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60608161425581601f615519565b10156142945760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015260640161085b565b61429e8284615519565b845110156142e25760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015260640161085b565b606082158015614301576040519150600082526020820160405261434b565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561433a578051835260209283019201614322565b5050858452601f01601f1916604052505b50949350505050565b60008060006000805160206158f5833981519152905060405160208152602080820152602060408201528460608201526002820360808201528160a08201526020600060c08360055afa9250506000519250816143f35760405162461bcd60e51b815260206004820152601d60248201527f426e3235343a20706f7720707265636f6d70696c65206661696c656421000000604482015260640161085b565b5050919050565b6060826020015182111561442157604051638c5e11f160e01b815260040160405180910390fd5b606083015160016000805160206158f5833981519152846001600160401b0381111561444f5761444f614f5e565b604051908082528060200260200182016040528015614478578160200160208202803683370190505b50935084151915613ae45760208401856020028101600182526020820191505b808210156144b457828585099350838252602082019150614498565b505050505092915050565b6000806000806000806000805160206158f583398151915290508060208b015160208d01510995508a5193508060a08c015160608d0151099250806101a08a0151840891508060808c0151830891508084830993508060008051602061599583398151915284099150806101c08a0151830891508060808c0151830891508084830993508060008051602061593583398151915284099150806101e08a0151830891508060808c0151830891508084830993508060008051602061597583398151915284099150806102008a0151830891508060808c015183089150808483099350806000805160206158b583398151915284099150806102208a0151830891508060808c0151830891508084830993508084870895508860a00151886000815181106145ee576145ee6154b3565b6020026020010181905250858760008151811061460d5761460d6154b3565b6020026020010181815250508060608c01518c51099450806102c08a015186099450806102408a015160608d0151099250806101a08a0151840892508060808c015184089250808386099450806102608a015160608d0151099250806101c08a0151840892508060808c015184089250808386099450806102808a015160608d0151099250806101e08a0151840892508060808c015184089250808386099450806102a08a015160608d0151099250806102008a0151840892508060808c0151840892508083860994508b60c00151886001815181106146ef576146ef6154b3565b602090810291909101015261470485826154a0565b87600181518110614717576147176154b3565b602002602001018181525050886101a001518760028151811061473c5761473c6154b3565b602002602001018181525050886101c0015187600381518110614761576147616154b3565b602002602001018181525050886101e0015187600481518110614786576147866154b3565b602002602001018181525050886102000151876005815181106147ab576147ab6154b3565b6020026020010181815250508b60e00151886002815181106147cf576147cf6154b3565b60200260200101819052508b6101000151886003815181106147f3576147f36154b3565b60200260200101819052508b610120015188600481518110614817576148176154b3565b60200260200101819052508b61014001518860058151811061483b5761483b6154b3565b6020026020010181905250806101c08a01516101a08b0151099250828760068151811061486a5761486a6154b3565b6020026020010181815250508b61016001518860068151811061488f5761488f6154b3565b6020026020010181905250806102008a01516101e08b015109925082876007815181106148be576148be6154b3565b6020026020010181815250508b6101800151886007815181106148e3576148e36154b3565b60200260200101819052506101a08901519250808384099150808283099150808284099250828760088151811061491c5761491c6154b3565b6020026020010181815250508b6101e0015188600881518110614941576149416154b3565b60200260200101819052506101c08901519250808384099150808283099150808284099250828760098151811061497a5761497a6154b3565b6020026020010181815250508b61020001518860098151811061499f5761499f6154b3565b60200260200101819052506101e089015192508083840991508082830991508082840992508287600a815181106149d8576149d86154b3565b6020026020010181815250508b610220015188600a815181106149fd576149fd6154b3565b602002602001018190525061020089015192508083840991508082830991508082840992508287600b81518110614a3657614a366154b3565b6020026020010181815250508b610240015188600b81518110614a5b57614a5b6154b3565b602002602001018190525088610220015181614a7791906154a0565b87600c81518110614a8a57614a8a6154b3565b6020026020010181815250508b6101a0015188600c81518110614aaf57614aaf6154b3565b6020026020010181905250600187600d81518110614acf57614acf6154b3565b6020026020010181815250508b6101c0015188600d81518110614af457614af46154b3565b6020026020010181905250806101c08a01516101a08b0151099250806101e08a015184099250806102008a015184099250806102208a0151840992508287600e81518110614b4457614b446154b3565b6020026020010181815250508b610260015188600e81518110614b6957614b696154b3565b60209081029190910101528951614b8090826154a0565b87600f81518110614b9357614b936154b3565b6020026020010181815250508860c0015188600f81518110614bb757614bb76154b3565b60200260200101819052508060018b510860a08c0151909350819080099150808284099250808360206010028901510991508187601081518110614bfd57614bfd6154b3565b6020026020010181815250508860e0015188601081518110614c2157614c216154b3565b6020026020010181905250808360206011028901510991508187601181518110614c4d57614c4d6154b3565b60200260200101818152505088610100015188601181518110614c7257614c726154b3565b6020026020010181905250808360206012028901510991508187601281518110614c9e57614c9e6154b3565b60200260200101818152505088610120015188601281518110614cc357614cc36154b3565b6020026020010181905250808360206013028901510991508187601381518110614cef57614cef6154b3565b60200260200101818152505088610140015188601381518110614d1457614d146154b3565b6020026020010181905250505050505050505050505050565b60405180610100016040528060006001600160401b0316815260200160006001600160401b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040518061028001604052806000815260200160008152602001614da6614ec2565b8152602001614db3614ec2565b8152602001614dc0614ec2565b8152602001614dcd614ec2565b8152602001614dda614ec2565b8152602001614de7614ec2565b8152602001614df4614ec2565b8152602001614e01614ec2565b8152602001614e0e614ec2565b8152602001614e1b614ec2565b8152602001614e28614ec2565b8152602001614e35614ec2565b8152602001614e42614ec2565b8152602001614e4f614ec2565b8152602001614e5c614ec2565b8152602001614e69614ec2565b8152602001614e76614ec2565b8152602001614e83614ec2565b905290565b604051806101000160405280600081526020016000815260200160008152602001600081526020016060815260200160608152602001614e765b604051806040016040528060008152602001600081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b80356001600160a01b038116811461309457600080fd5b600060208284031215614f4157600080fd5b6120ab82614f18565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b6040516102e081016001600160401b0381118282101715614f9757614f97614f5e565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614fc557614fc5614f5e565b604052919050565b80356001600160401b038116811461309457600080fd5b6000610100808385031215614ff857600080fd5b604051908101906001600160401b038211818310171561501a5761501a614f5e565b8160405280925061502a84614fcd565b815261503860208501614fcd565b602082015260408401356040820152606084013560608201526080840135608082015260a084013560a082015260c084013560c082015260e084013560e0820152505092915050565b60006040828403121561509357600080fd5b604080519081016001600160401b03811182821017156150b5576150b5614f5e565b604052823581526020928301359281019290925250919050565b6000808284036105808112156150e457600080fd5b6150ee8585614fe4565b92506101006104808060ff198401121561510757600080fd5b61510f614f74565b925061511d87838801615081565b835261014061512e88828901615081565b602085015261018061514289828a01615081565b60408601526101c06151568a828b01615081565b606087015261020061516a8b828c01615081565b608088015261024061517e8c828d01615081565b60a08901526102806151928d828e01615081565b60c08a01526102c06151a68e828f01615081565b60e08b01526151b98e6103008f01615081565b898b01526151cb8e6103408f01615081565b6101208b01526151df8e6103808f01615081565b878b01526151f18e6103c08f01615081565b6101608b01526152058e6104008f01615081565b868b01526104408d01356101a08b01526104608d0135858b0152878d01356101e08b01526104a08d0135848b01526104c08d01356102208b01526104e08d0135838b01526105008d01356102608b01526105208d0135828b01526105408d01356102a08b01526105608d0135818b0152505050505050505050809150509250929050565b6000806040838503121561529c57600080fd5b6152a583614f18565b91506020838101356001600160401b03808211156152c257600080fd5b818601915086601f8301126152d657600080fd5b8135818111156152e8576152e8614f5e565b6152fa601f8201601f19168501614f9d565b9150808252878482850101111561531057600080fd5b80848401858401376000848284010152508093505050509250929050565b6001600160401b0391909116815260200190565b803563ffffffff8116811461309457600080fd5b60006020828403121561536857600080fd5b6120ab82615342565b60006020828403121561538357600080fd5b5035919050565b600080600061014084860312156153a057600080fd5b6153aa8585614fe4565b92506153b96101008501615342565b91506153c86101208501614f18565b90509250925092565b600061010082840312156153e457600080fd5b6120ab8383614fe4565b60005b838110156154095781810151838201526020016153f1565b50506000910152565b60208152600082518060208401526154318160408501602087016153ee565b601f01601f19169190910160400192915050565b6000806040838503121561545857600080fd5b50508035926020909101359150565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821602808216919082811461417b5761417b615467565b8181038181111561101a5761101a615467565b634e487b7160e01b600052603260045260246000fd5b6000816154d8576154d8615467565b506000190190565b6001600160401b0381811683821601908082111561321557613215615467565b60006020828403121561551257600080fd5b5051919050565b8082018082111561101a5761101a615467565b6000825161553e8184602087016153ee565b9190910192915050565b60008751602061555b8285838d016153ee565b88519184019161556e8184848d016153ee565b88519201916155808184848c016153ee565b87519201916155928184848b016153ee565b86519201916155a48184848a016153ee565b85519201916155b681848489016153ee565b919091019998505050505050505050565b600083516155d98184602088016153ee565b8351908301906155ed8183602088016153ee565b01949350505050565b60008751615608818460208c016153ee565b9190910195865250602085019390935260408401919091526060830152608082015260a001919050565b600084516156448184602089016153ee565b8451908301906156588183602089016153ee565b845191019061566b8183602088016153ee565b0195945050505050565b60008261569257634e487b7160e01b600052601260045260246000fd5b500690565b600085516156a9818460208a016153ee565b8551908301906156bd818360208a016153ee565b85519101906156d08183602089016153ee565b84519101906156e38183602088016153ee565b019695505050505050565b6000895160206157018285838f016153ee565b8a51918401916157148184848f016153ee565b8a519201916157268184848e016153ee565b89519201916157388184848d016153ee565b885192019161574a8184848c016153ee565b875192019161575c8184848b016153ee565b865192019161576e8184848a016153ee565b855192019161578081848489016153ee565b919091019b9a5050505050505050505050565b6000885160206157a68285838e016153ee565b8951918401916157b98184848e016153ee565b89519201916157cb8184848d016153ee565b88519201916157dd8184848c016153ee565b87519201916157ef8184848b016153ee565b86519201916158018184848a016153ee565b855192019161581381848489016153ee565b919091019a9950505050505050505050565b60008a51615837818460208f016153ee565b9190910198895250602088019690965260408701949094526060860192909252608085015260a084015260c083015260e08201526101000191905056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6882e2b91456103698adf57b799969dea1c8f739da5d8d40dd3eb9222db7c81e881360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001f3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee31ee678a0470a75a6eaa8fe837060498ba828a3703b311d0f77f010424afeb025f3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee42042a587a90c187b0a087c03e29c968b950b1db26d5c82d666905a6895790c0a2f8dd1f1a7583c42c4e12a44e110404c73ca6c94813f85835da4fb7bb1301d4aa164736f6c6343000817000a", + "nonce": "0x0", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf42793ff21170c2af2d5a76308b93f125c7b2af036385234e0754120051c1f2b", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0x2630d223087a13978413709ea1d43bea79dc16d1", + "function": null, + "arguments": [ + "0xad3ECFfcB19bcB3464ec5e02Af565bCC08b63afF", + "0xa244d5960000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004d2000000000000000000000000000000000000000000000000000000000000162e219a25b0eb67ec09251a6f5abc377de144a6e81b7f0c4a01aa8eba3801f89dce2599254c85754d3eb4cb4f899ae0a9368251832178d80a16ab726e4ad6f3839d1e0aee7dd5ea868686d43f25e553e9a4b91f9aac89f451f5fc55a66889f3af100000000000000000000000000000000000000000000000000000000000000015000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000042ba5a503f27f4d1e21a5a09c9edd3ea1d273876" + ], + "transaction": { + "from": "0x42ba5a503f27f4d1e21a5a09c9edd3ea1d273876", + "gas": "0xce99b", + "value": "0x0", + "input": "0x60806040526040516103e73803806103e78339810160408190526100229161025a565b61002c8282610033565b5050610358565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610086576100818282610109565b505050565b61008e610180565b5050565b806001600160a01b03163b6000036100c85780604051634c9c8ce360e01b81526004016100bf9190610328565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610126919061033c565b600060405180830381855af49150503d8060008114610161576040519150601f19603f3d011682016040523d82523d6000602084013e610166565b606091505b5090925090506101778583836101a1565b95945050505050565b341561019f5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b6576101b1826101f7565b6101f0565b81511580156101cd57506001600160a01b0384163b155b156101ed5783604051639996b31560e01b81526004016100bf9190610328565b50805b9392505050565b8051156102075780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b83811015610251578181015183820152602001610239565b50506000910152565b6000806040838503121561026d57600080fd5b82516001600160a01b038116811461028457600080fd5b60208401519092506001600160401b03808211156102a157600080fd5b818501915085601f8301126102b557600080fd5b8151818111156102c7576102c7610220565b604051601f8201601f19908116603f011681019083821181831017156102ef576102ef610220565b8160405282815288602084870101111561030857600080fd5b610319836020830160208801610236565b80955050505050509250929050565b6001600160a01b0391909116815260200190565b6000825161034e818460208701610236565b9190910192915050565b6081806103666000396000f3fe6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea164736f6c6343000817000a000000000000000000000000ad3ecffcb19bcb3464ec5e02af565bcc08b63aff00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000144a244d5960000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004d2000000000000000000000000000000000000000000000000000000000000162e219a25b0eb67ec09251a6f5abc377de144a6e81b7f0c4a01aa8eba3801f89dce2599254c85754d3eb4cb4f899ae0a9368251832178d80a16ab726e4ad6f3839d1e0aee7dd5ea868686d43f25e553e9a4b91f9aac89f451f5fc55a66889f3af100000000000000000000000000000000000000000000000000000000000000015000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000042ba5a503f27f4d1e21a5a09c9edd3ea1d27387600000000000000000000000000000000000000000000000000000000", + "nonce": "0x1", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xd70b5a", + "logs": [ + { + "address": "0xad3ecffcb19bcb3464ec5e02af565bcc08b63aff", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x4982923014bfd512113084a29fb3b956cdbf85be776eac7b26b9ea277554ba82", + "blockNumber": "0x6000b2", + "transactionHash": "0xd3a615e5e1565625a38c1068a1f27f1813db90dbfb61ab93a273a06e32df2a23", + "transactionIndex": "0x4b", + "logIndex": "0x7d", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000080000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0", + "transactionHash": "0xd3a615e5e1565625a38c1068a1f27f1813db90dbfb61ab93a273a06e32df2a23", + "transactionIndex": "0x4b", + "blockHash": "0x4982923014bfd512113084a29fb3b956cdbf85be776eac7b26b9ea277554ba82", + "blockNumber": "0x6000b2", + "gasUsed": "0x4cf45c", + "effectiveGasPrice": "0x834824ce", + "from": "0x42ba5a503f27f4d1e21a5a09c9edd3ea1d273876", + "to": null, + "contractAddress": "0xad3ecffcb19bcb3464ec5e02af565bcc08b63aff" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xe0fa7c", + "logs": [ + { + "address": "0x2630d223087a13978413709ea1d43bea79dc16d1", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000ad3ecffcb19bcb3464ec5e02af565bcc08b63aff" + ], + "data": "0x", + "blockHash": "0x4982923014bfd512113084a29fb3b956cdbf85be776eac7b26b9ea277554ba82", + "blockNumber": "0x6000b2", + "transactionHash": "0xf42793ff21170c2af2d5a76308b93f125c7b2af036385234e0754120051c1f2b", + "transactionIndex": "0x4c", + "logIndex": "0x7e", + "removed": false + }, + { + "address": "0x2630d223087a13978413709ea1d43bea79dc16d1", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x00000000000000000000000042ba5a503f27f4d1e21a5a09c9edd3ea1d273876" + ], + "data": "0x", + "blockHash": "0x4982923014bfd512113084a29fb3b956cdbf85be776eac7b26b9ea277554ba82", + "blockNumber": "0x6000b2", + "transactionHash": "0xf42793ff21170c2af2d5a76308b93f125c7b2af036385234e0754120051c1f2b", + "transactionIndex": "0x4c", + "logIndex": "0x7f", + "removed": false + }, + { + "address": "0x2630d223087a13978413709ea1d43bea79dc16d1", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x4982923014bfd512113084a29fb3b956cdbf85be776eac7b26b9ea277554ba82", + "blockNumber": "0x6000b2", + "transactionHash": "0xf42793ff21170c2af2d5a76308b93f125c7b2af036385234e0754120051c1f2b", + "transactionIndex": "0x4c", + "logIndex": "0x80", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000200800000400000000000000000800000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000002000001000000000000000000000000000000000000020000000000000000000820000000000000000000000000000000400000000000000000000800000000000000000000000080000000000040000000000000000000000000000000000000000000000000000000000000000000800000000020100000000000000000000000000000000004000000000080000020000000000000000000000000000000000000000000000000000000040000000000", + "type": "0x0", + "transactionHash": "0xf42793ff21170c2af2d5a76308b93f125c7b2af036385234e0754120051c1f2b", + "transactionIndex": "0x4c", + "blockHash": "0x4982923014bfd512113084a29fb3b956cdbf85be776eac7b26b9ea277554ba82", + "blockNumber": "0x6000b2", + "gasUsed": "0x9ef22", + "effectiveGasPrice": "0x834824ce", + "from": "0x42ba5a503f27f4d1e21a5a09c9edd3ea1d273876", + "to": null, + "contractAddress": "0x2630d223087a13978413709ea1d43bea79dc16d1" + } + ], + "libraries": [], + "pending": [], + "returns": { + "proxyAddress": { + "internal_type": "address payable", + "value": "0x2630D223087A13978413709ea1D43BEA79dC16d1" + }, + "admin": { + "internal_type": "address", + "value": "0x42Ba5A503F27F4D1E21a5a09c9EdD3eA1d273876" + }, + "2": { + "internal_type": "struct LightClient.LightClientState", + "value": "(0, 0, 1234, 5678, 15198678585580246251692354046620241178086945668772252070628837665439280045518, 17006160426117517054610525022479724455324142717962158209641183699803667923869, 13588699936297641358648475784636038162266787982044803430220317237560319651600, 21)" + } + }, + "timestamp": 1720726496, + "chain": 11155111, + "commit": "d482b424" +} \ No newline at end of file diff --git a/contracts/broadcast/LightClient.s.sol/11155111/run-latest.json b/contracts/broadcast/LightClient.s.sol/11155111/run-latest.json new file mode 100644 index 0000000000..e4439f88a1 --- /dev/null +++ b/contracts/broadcast/LightClient.s.sol/11155111/run-latest.json @@ -0,0 +1,153 @@ +{ + "transactions": [ + { + "hash": "0xd3a615e5e1565625a38c1068a1f27f1813db90dbfb61ab93a273a06e32df2a23", + "transactionType": "CREATE", + "contractName": "LightClient", + "contractAddress": "0xad3ecffcb19bcb3464ec5e02af565bcc08b63aff", + "function": null, + "arguments": null, + "transaction": { + "from": "0x42ba5a503f27f4d1e21a5a09c9edd3ea1d273876", + "gas": "0x640315", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516159c162000104600039600081816114320152818161145b01526115c701526159c16000f3fe6080604052600436106101525760003560e01c8063013fa5fc146101575780630d8e6e2c14610179578063313df7b1146101ab578063382b215a146101d8578063409939b7146101fc5780634847ae5d1461021c5780634f1ef2861461029e57806352d1902d146102b157806354646085146102c657806362827733146102db57806369cc6a04146102f15780637053fc5114610306578063715018a61461031b578063766718081461033057806376b6b7cb146103645780637f17baad1461037a57806382d07ff31461042d5780638584d23f146104425780638da5cb5b14610486578063a244d5961461049b578063a51e6fea146104bb578063aa922732146104db578063ad3cb1cc146104fb578063bd32519a14610539578063ca6fe8551461056a578063db13b60a14610580578063e0303301146105bf578063f0682054146105df578063f2fde38b14610611575b600080fd5b34801561016357600080fd5b50610177610172366004614f2f565b610631565b005b34801561018557600080fd5b506040805160018152600060208201819052918101919091526060015b60405180910390f35b3480156101b757600080fd5b506006546101cb906001600160a01b031681565b6040516101a29190614f4a565b3480156101e457600080fd5b506101ee60035481565b6040519081526020016101a2565b34801561020857600080fd5b506101776102173660046150cf565b6106f1565b34801561022857600080fd5b50610231610a1c565b6040516101a2919060006101008201905060018060401b038084511683528060208501511660208401525060408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b6101776102ac366004615289565b610aae565b3480156102bd57600080fd5b506101ee610acd565b3480156102d257600080fd5b506008546101ee565b3480156102e757600080fd5b506101ee60025481565b3480156102fd57600080fd5b50610177610aea565b34801561031257600080fd5b506007546101ee565b34801561032757600080fd5b50610177610b5a565b34801561033c57600080fd5b5060005461035790600160601b90046001600160401b031681565b6040516101a2919061532e565b34801561037057600080fd5b506101ee60015481565b34801561038657600080fd5b506103e7610395366004615356565b600560208190526000918252604090912080546001820154600283015460038401546004850154958501546006909501546001600160401b0380861697600160401b9096041695939492939192919088565b604080516001600160401b03998a168152989097166020890152958701949094526060860192909252608085015260a084015260c083015260e0820152610100016101a2565b34801561043957600080fd5b50610231610b6c565b34801561044e57600080fd5b5061046261045d366004615371565b610bfc565b6040805182516001600160401b0316815260209283015192810192909252016101a2565b34801561049257600080fd5b506101cb610d56565b3480156104a757600080fd5b506101776104b636600461538a565b610d71565b3480156104c757600080fd5b506101ee6104d6366004615371565b610e9c565b3480156104e757600080fd5b506101ee6104f63660046153d1565b610ebd565b34801561050757600080fd5b5061052c604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101a29190615412565b34801561054557600080fd5b5060065461055a90600160a01b900460ff1681565b60405190151581526020016101a2565b34801561057657600080fd5b506101ee60045481565b34801561058c57600080fd5b506105a061059b366004615371565b610f05565b604080516001600160401b0390931683526020830191909152016101a2565b3480156105cb57600080fd5b5061055a6105da366004615445565b610f3d565b3480156105eb57600080fd5b506000546105fc9063ffffffff1681565b60405163ffffffff90911681526020016101a2565b34801561061d57600080fd5b5061017761062c366004614f2f565b611020565b61063961105e565b6001600160a01b0381166106605760405163e6c4247b60e01b815260040160405180910390fd5b6006546001600160a01b039081169082160361068f5760405163a863aec960e01b815260040160405180910390fd5b600680546001600160a81b0319166001600160a01b0380841691909117600160a01b17918290556040517f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072926106e6921690614f4a565b60405180910390a150565b600654600160a01b900460ff16801561071557506006546001600160a01b03163314155b1561075c576006546001600160a01b0316610743576040516312e6d1e760e11b815260040160405180910390fd5b6040516301474c8f60e71b815260040160405180910390fd5b610764610b6c565b5182516001600160401b0391821691161115806107a25750610784610b6c565b602001516001600160401b031682602001516001600160401b031611155b156107c05760405163051c46ef60e01b815260040160405180910390fd5b600080546107e59063ffffffff811690600160601b90046001600160401b031661547d565b6000805463ffffffff600160401b91829004168252600560205260409091205491925090046001600160401b039081169082161480158161083b5750816001600160401b031684602001516001600160401b0316115b15610864578160405163036466bf60e31b815260040161085b919061532e565b60405180910390fd5b6108718460400151611090565b61087e8460600151611090565b61088b8460800151611090565b6108988460a00151611090565b6108a58460c00151611090565b80156108b3576108b36110ec565b6108bd8484611237565b60008054600160401b9081900463ffffffff168252600560208181526040808520895181548b850180516001600160401b039384166001600160801b0319909316929092179183169097021782558a8301805160018085019190915560608d015160028086019190915560808e0151600386015560a08e0151600486015560c08e01519785019790975560e08d01516006909401939093556007805480850182559089524360008051602061589583398151915290910155835180850185528751831681528151818701908152600880549586018155909952516000805160206159158339815191529390960292830180546001600160401b03191696831696909617909555955160008051602061595583398151915290910155925188519251935193845284169391909116917fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6910160405180910390a350505050565b610a24614d2d565b5060008054600160201b900463ffffffff1681526005602081815260409283902083516101008101855281546001600160401b038082168352600160401b90910416928101929092526001810154938201939093526002830154606082015260038301546080820152600483015460a08201529082015460c082015260069091015460e082015290565b610ab6611427565b610abf826114cc565b610ac98282611503565b5050565b6000610ad76115bc565b506000805160206158d583398151915290565b610af261105e565b600654600160a01b900460ff1615610b3f57600680546001600160a81b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c0245090600090a1565b60405163a863aec960e01b815260040160405180910390fd5b565b610b6261105e565b610b586000611605565b610b74614d2d565b506000805463ffffffff600160401b918290041682526005602081815260409384902084516101008101865281546001600160401b038082168352959004909416918401919091526001810154938301939093526002830154606083015260038301546080830152600483015460a083015282015460c082015260069091015460e082015290565b60408051808201909152600080825260208201526008805490610c206001836154a0565b81548110610c3057610c306154b3565b60009182526020909120600290910201546001600160401b03168310610c6957604051631856a49960e21b815260040160405180910390fd5b60005b81811015610cfe578360088281548110610c8857610c886154b3565b60009182526020909120600290910201546001600160401b03161115610cf65760088181548110610cbb57610cbb6154b3565b60009182526020918290206040805180820190915260029092020180546001600160401b031682526001015491810191909152949350505050565b600101610c6c565b506008610d0c6001836154a0565b81548110610d1c57610d1c6154b3565b60009182526020918290206040805180820190915260029092020180546001600160401b0316825260010154918101919091529392505050565b600080610d61611661565b546001600160a01b031692915050565b6000610d7b611685565b805490915060ff600160401b82041615906001600160401b0316600081158015610da25750825b90506000826001600160401b03166001148015610dbe5750303b155b905081158015610dcc575080155b15610dea5760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b03191660011785558315610e1357845460ff60401b1916600160401b1785555b610e1c866116a9565b610e246116ba565b60008054600160201b600160601b031916600160401b179055610e4788886116c2565b8315610e9257845460ff60401b191685556040517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290610e899060019061532e565b60405180910390a15b5050505050505050565b60078181548110610eac57600080fd5b600091825260209091200154905081565b60808082015160a083015160c0840151604080516020810194909452830191909152606082015260009101604051602081830303815290604052805190602001209050919050565b60088181548110610f1557600080fd5b6000918252602090912060029091020180546001909101546001600160401b03909116915082565b60075460009043841180610f515750600381105b15610f6f5760405163b0b4387760e01b815260040160405180910390fd5b60008080610f7e6001856154a0565b90505b81610fe9578660078281548110610f9a57610f9a6154b3565b906000526020600020015411610fcf576001915060078181548110610fc157610fc16154b3565b906000526020600020015492505b60028110610fe95780610fe1816154c9565b915050610f81565b816110075760405163b0b4387760e01b815260040160405180910390fd5b8561101284896154a0565b119450505050505b92915050565b61102861105e565b6001600160a01b038116611052576000604051631e4fbdf760e01b815260040161085b9190614f4a565b61105b81611605565b50565b33611067610d56565b6001600160a01b031614610b58573360405163118cdaa760e01b815260040161085b9190614f4a565b6000805160206158f5833981519152811080610ac95760405162461bcd60e51b815260206004820152601b60248201527a109b8c8d4d0e881a5b9d985b1a59081cd8d85b185c88199a595b19602a1b604482015260640161085b565b6000805463ffffffff600160401b9182900416825260056020818152604080852081516101008101835281546001600160401b038082168352969004909516928501929092526001820154908401526002810154606084015260038101546080840152600481015460a08401529081015460c08301526006015460e082015261117490610ebd565b600380546001908155908290556004805460025560008054600160401b810463ffffffff16825260056020526040822060060154909255929350909190600c906111cf908490600160601b90046001600160401b03166154e0565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fdb3558259e039d7e50e816b9dcce30fb114d8a9c86eca5ab14b60194d6945d3f6000600c9054906101000a90046001600160401b03166040516106e6919061532e565b60006112416119e5565b604080516008808252610120820190925291925060009190602082016101008036833701905050905060025481600081518110611280576112806154b3565b60200260200101818152505083600001516001600160401b0316816001815181106112ad576112ad6154b3565b60200260200101818152505083602001516001600160401b0316816002815181106112da576112da6154b3565b6020026020010181815250508360400151816003815181106112fe576112fe6154b3565b602002602001018181525050836060015181600481518110611322576113226154b3565b60209081029190910181019190915260008054600160401b900463ffffffff16815260059182905260409020600301548251909183918110611366576113666154b3565b60209081029190910181019190915260008054600160401b900463ffffffff168152600590915260409020600401548151829060069081106113aa576113aa6154b3565b60209081029190910181019190915260008054600160401b900463ffffffff1681526005918290526040902001548151829060079081106113ed576113ed6154b3565b602002602001018181525050611404828285611fc7565b611421576040516309bde33960e01b815260040160405180910390fd5b50505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806114ae57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114a26000805160206158d5833981519152546001600160a01b031690565b6001600160a01b031614155b15610b585760405163703e46dd60e11b815260040160405180910390fd5b6114d461105e565b7ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d816040516106e69190614f4a565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561155d575060408051601f3d908101601f1916820190925261155a91810190615500565b60015b61157c5781604051634c9c8ce360e01b815260040161085b9190614f4a565b6000805160206158d583398151915281146115ad57604051632a87526960e21b81526004810182905260240161085b565b6115b783836120b2565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b585760405163703e46dd60e11b815260040160405180910390fd5b600061160f611661565b80546001600160a01b038481166001600160a01b031983168117845560405193945091169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b6116b1612108565b61105b8161212d565b610b58612108565b81516001600160401b03161515806116e6575060208201516001600160401b031615155b806116f357506080820151155b80611700575060a0820151155b8061170d575060c0820151155b8061171a575060e0820151155b80611729575063ffffffff8116155b15611747576040516350dd03f760e11b815260040160405180910390fd5b81600560008060049054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160010155606082015181600201556080820151816003015560a0820151816004015560c0820151816005015560e0820151816006015590505081600560008060089054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160010155606082015181600201556080820151816003015560a0820151816004015560c0820151816005015560e08201518160060155905050600080600c6101000a8154816001600160401b0302191690836001600160401b03160217905550806000806101000a81548163ffffffff021916908363ffffffff160217905550600061192d83610ebd565b600181815560e08501516002818155600393909355600455600780548083018255600091825243600080516020615895833981519152909101556040805180820182526020808901516001600160401b039081168352929098015197810197885260088054948501815590925290516000805160206159158339815191529290930291820180546001600160401b03191693909116929092179091559251600080516020615955833981519152909301929092555050565b6119ed614d84565b621000008152600860208201527f20c9403133dfde9a9d382df76fb0523571648725abc0a7c12830bb690ec83b336040820151527f03a0a9acc3e3815a7ed6cb1379f7d157e6343164729376392a693acbd3ec283c6020604083015101527f2866c18ad1df10ef13542cce6250ce02cb2a6b72ae00a9852e271187e9e4e0db6060820151527f21be232a42246a5663ebf483470cca666ffe9d4f0e63b929c596a7658714e9706020606083015101527f07d77873b9860074118e75808c79468b83c8ed64ba14db5cb5afa8e534de7b996080820151527f0be0f448839080132d47de17de0099b4cd74ae1e6b71cdda06cdebb868a50c6d6020608083015101527f13bd45a023491eadea44cc3f24cfbd1796eade9c0e39ee81d9f63ea0a580662560a0820151527f18f95cdda42ce11d9d10a3b335acc214e3807c578c5359405d810c208df60093602060a083015101527f0970d978763461f09e9ec63454073497386e4d282fedc2ac5b967cb9fd3fa8a960c0820151527f28c2217f7bacf6f8b2b8ee4a90fcf8b5bca04205ea84e8e1eb54b85dd41bde28602060c083015101527f02fe3d02988db718380052970aba46a3296df5f29b736ba1f2c4ccffc8b5969360e0820151527f202c3e390cee7c5c8525da2329a19f4936f6f71ca97dde6c6fa32b382d5acc03602060e083015101527f23ac10ae6ca5cacee8744bb939aaa835390954b91ae668a2c8d0edda558a89e7610100820151527f1c8c2b856cdade256ba3237f39afd5e170a9532012f7aecae49d459b29f6f6ad602061010083015101527f16ec03d260bd7ac1c50ffa63565d5274b4582ceea52ff40b81cdfe8f444f01e4610120820151527f29392152723097e07113c3d7786d245ec40c30928015cd50b5668a4f4ea17031602061012083015101527f2cdbfb3a4053c8489b0c94e74338ac19118df7a06bc56b1eb4d0e0dc4eae7248610140820151527f07fea127dae943b8dc148f1408d40cff465c9c4721943669b1e4fd5a39db7036602061014083015101527f031455a79a2e0ce78a6cb53526ec04ac19716a86b08a93df48d178f8b77e5619610160820151527f118623e6bc136ee6d3f9907cd4ad04a9418ea03ba99ad753227cdfee598e8415602061016083015101527f0861d1997761a852226aac7ba9717bf6ae56451099be774cdf02ef352a58cbc8610180820151527f0805e392bcbc12e40a722778632d73fe981e4bc6fa6d1178b70af7be1cb9a3a3602061018083015101527f101d1e3978cb9f1e303d413144ebe67682c9eb0cfe11242959aa6029d78cdbbc6101a0820151527f089eb9c727e6cb07082bc3e6f40cf04f439fe48000602b584774dad7efc6607c60206101a083015101527f2d489f2493263aa873bcd94f21efb45bf257a61d81c0c95c3297916506653b406101c0820151527f18e45d627aadd4df2794ecd9909fac1a753f0c6fa8a9c6654a7a58b0912fffd560206101c083015101527f0e43e3a4b13cb438e2ad924614261ad0240214fa1c83fcda6a0bf779eb39ffc56101e0820151527f0eaba9f429c5f6fc3103d4cc4056c500ff42425d8e6465c5b8e145219f9c5cd360206101e083015101527f29ae351d09dcf41c0a80ab05393738358baab37e6fbc464b3bb13258994a1fa4610200820151527f2b7bc74608d7ec7dadd0597d6a4010d8bfc2b31900281901cedc42bdbb0fb8fc602061020083015101527f066802c7ceb9e913d4f65433a20661e097acac1affecbb534a54f76a29782226610220820151527f27ec80e811e636f3348267923c8e641bd98a7e37c5216670cbff14ae323f9e0e602061022083015101527f12604d1f87c583f6c9710c73eaf590af9d07aa743d1381d0e9dff0eab2614239610240820151527f1588579e6c3378ea32cb641205ef762a63cd353a0bd670394528ad2081ee8dd4602061024083015101527f247d65261d3a4ab042ba937331f6d0c0c5eb9ea78753a92084db1a6939e19e82610260820151527f2ce6cc664a32147bfe6a0c94a95bf0496679405ccae01648cd4ec021145120d56020610260830151015290565b6000611fd282612135565b611ff583600081518110611fe857611fe86154b3565b6020026020010151611090565b61200b83600181518110611fe857611fe86154b3565b61202183600281518110611fe857611fe86154b3565b61203783600381518110611fe857611fe86154b3565b61204d83600481518110611fe857611fe86154b3565b61206383600581518110611fe857611fe86154b3565b61207983600681518110611fe857611fe86154b3565b61208f83600781518110611fe857611fe86154b3565b600061209c85858561226d565b90506120a7816123b7565b9150505b9392505050565b6120bb82612816565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612100576115b78282612872565b610ac96128e8565b612110612907565b610b5857604051631afcd79f60e31b815260040160405180910390fd5b611028612108565b805161214090612921565b61214d8160200151612921565b61215a8160400151612921565b6121678160600151612921565b6121748160800151612921565b6121818160a00151612921565b61218e8160c00151612921565b61219b8160e00151612921565b6121a9816101000151612921565b6121b7816101200151612921565b6121c5816101400151612921565b6121d3816101600151612921565b6121e1816101800151612921565b6121ef816101a00151611090565b6121fd816101c00151611090565b61220b816101e00151611090565b612219816102000151611090565b612227816102200151611090565b612235816102400151611090565b612243816102600151611090565b612251816102800151611090565b61225f816102a00151611090565b61105b816102c00151611090565b612275614e88565b836020015183511461229a576040516320fa9d8960e11b815260040160405180910390fd5b60006122a78585856129af565b905060006122b88660000151612cce565b905060006122cb828460a0015188613099565b60408051601e8082526103e0820190925291925060009190602082016103c080368337505060408051601e8082526103e082019092529293506000929150602082015b612316614ec2565b81526020019060019003908161230e579050509050600061233b8a858a8987876130f9565b60a08701516060870151919250906000805160206158f5833981519152600081838509604080516101008101825260e09c8d0151815260208101969096528501525050506060810191909152608081019290925260a082015261016086015160c082015261018090950151928501929092525091949350505050565b60006000805160206158f58339815191526123d0614ec2565b6123d8614ec2565b6040805160028082526060820183526000926020830190803683375050604080516002808252606082019092529293506000929150602082015b61241a614ec2565b8152602001906001900390816124125790505090506000600190508083600081518110612449576124496154b3565b6020026020010181815250508760c001518260008151811061246d5761246d6154b3565b6020026020010181905250876000015183600181518110612490576124906154b3565b6020026020010181815250508760e00151826001815181106124b4576124b46154b3565b60200260200101819052506124c9828461312e565b60808901515190955060609350839250905060006124e8826002615519565b6124f3906001615519565b9050806001600160401b0381111561250d5761250d614f5e565b604051908082528060200260200182016040528015612536578160200160208202803683370190505b509350806001600160401b0381111561255157612551614f5e565b60405190808252806020026020018201604052801561258a57816020015b612577614ec2565b81526020019060019003908161256f5790505b509250505060008060005b89608001515181101561262e57896080015181815181106125b8576125b86154b3565b60200260200101518583815181106125d2576125d26154b3565b6020026020010181815250508960a0015181815181106125f4576125f46154b3565b602002602001015184838151811061260e5761260e6154b3565b6020908102919091010152612624600183615519565b9150600101612595565b508860200151848281518110612646576126466154b3565b6020026020010181815250508860c00151838281518110612669576126696154b3565b602090810291909101015261267f600182615519565b895160408b0151919250906000898284099050808785815181106126a5576126a56154b3565b6020026020010181815250505050508860e001518382815181106126cb576126cb6154b3565b60209081029190910101526126e1600182615519565b60608a0151909150878184089250506126f98261321c565b84828151811061270b5761270b6154b3565b60200260200101818152505061271f61324e565b838281518110612731576127316154b3565b602002602001018190525061274e612749848661312e565b61326f565b945050505050600060405180608001604052807f0118c4d5b837bcc2bc89b5b398b5974e9f5944073b32078b7e231fec938883b081526020017f260e01b251f6f1c7e7ff4e580791dee8ea51d87a358e038b4efe30fac09383c181526020017f22febda3c0c0632a56475b4214e5615e11e6dd3f96e6cea2854a87d4dacc5e5581526020017f04fc6369f7110fe3d25156c1bb9a72859cf2a04641f99ba4ee413c80da6a5fe4815250905061280c8382846128076132dc565b6133ad565b9695505050505050565b806001600160a01b03163b6000036128435780604051634c9c8ce360e01b815260040161085b9190614f4a565b6000805160206158d583398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161288f919061552c565b600060405180830381855af49150503d80600081146128ca576040519150601f19603f3d011682016040523d82523d6000602084013e6128cf565b606091505b50915091506128df858383613490565b95945050505050565b3415610b585760405163b398979f60e01b815260040160405180910390fd5b6000612911611685565b54600160401b900460ff16919050565b600060008051602061587583398151915261293b836134e3565b1561294557505050565b8251602084015182600384858586098509088382830914838210848410161693505050816115b75760405162461bcd60e51b8152602060048201526017602482015276109b8c8d4d0e881a5b9d985b1a590811cc481c1bda5b9d604a1b604482015260640161085b565b6129f760405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805180820190915260608152600060208201526000805160206158f5833981519152612a268287876134f2565b81518451612a339061388b565b612a40866020015161388b565b612a4d876040015161388b565b612a5a886060015161388b565b612a67896080015161388b565b604051602001612a7c96959493929190615548565b60408051601f198184030181529190528252612a9782613900565b50612aa182613900565b6060840152612aaf82613900565b6080840152815160a0850151612ac49061388b565b604051602001612ad59291906155c7565b60408051601f198184030181529190528252612af082613900565b8352815160c0850151612b029061388b565b612b0f8660e0015161388b565b612b1d87610100015161388b565b612b2b88610120015161388b565b612b3989610140015161388b565b604051602001612b4e96959493929190615548565b60408051601f198184030181529190528252612b6982613900565b60a084015281516101a0850151612b7f90613962565b612b8d866101c00151613962565b612b9b876101e00151613962565b612ba9886102000151613962565b612bb7896102200151613962565b604051602001612bcc969594939291906155f6565b60408051601f19818403018152919052808352610240850151612bee90613962565b612bfc866102600151613962565b612c0a876102800151613962565b612c18886102a00151613962565b612c26896102c00151613962565b604051602001612c3b969594939291906155f6565b60408051601f198184030181529190528252612c5682613900565b60c08401528151610160850151612c6c9061388b565b612c7a86610180015161388b565b604051602001612c8c93929190615632565b60408051601f198184030181529190528252612ca782613900565b60e08401528251818180098282820960208601919091526040850152509195945050505050565b612d006040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b816201000003612d9457506040805160a0810182526010815260208101929092527f30641e0e92bebef818268d663bcad6dbcfd6c0149170f6d7d350b1b1fa6c1001908201527eeeb2cb5981ed45649abebde081dcff16c8601de4347e7dd1628ba2daac43b760608201527f0b5d56b77fe704e8e92338c0082f37e091126414c830e4c6922d5ac802d842d4608082015290565b816202000003612e2957506040805160a0810182526011815260208101929092527f30643640b9f82f90e83b698e5ea6179c7c05542e859533b48b9953a2f5360801908201527f1bf82deba7d74902c3708cc6e70e61f30512eca95655210e276e5858ce8f58e560608201527f244cf010c43ca87237d8b00bf9dd50c4c01c7f086bd4e8c920e75251d96f0d22608082015290565b816204000003612ebe57506040805160a0810182526012815260208101929092527f30644259cd94e7dd5045d7a27013b7fcd21c9e3b7fa75222e7bda49b729b0401908201527f19ddbcaf3a8d46c15c0176fbb5b95e4dc57088ff13f4d1bd84c6bfa57dcdc0e060608201527f036853f083780e87f8d7c71d111119c57dbe118c22d5ad707a82317466c5174c608082015290565b816208000003612f5357506040805160a0810182526013815260208101929092527f3064486657634403844b0eac78ca882cfd284341fcb0615a15cfcd17b14d8201908201527f2260e724844bca5251829353968e4915305258418357473a5c1d597f613f6cbd60608201527f06e402c0a314fb67a15cf806664ae1b722dbc0efe66e6c81d98f9924ca535321608082015290565b816210000003612fe857506040805160a0810182526014815260208101929092527f30644b6c9c4a72169e4daa317d25f04512ae15c53b34e8f5acd8e155d0a6c101908201527f26125da10a0ed06327508aba06d1e303ac616632dbed349f53422da95333785760608201527f100c332d2100895fab6473bc2c51bfca521f45cb3baca6260852a8fde26c91f3608082015290565b8160200361307b57506040805160a0810182526005815260208101929092527f2ee12bff4a2813286a8dc388cd754d9a3ef2490635eba50cb9c2e5e750800001908201527f09c532c6306b93d29678200d47c0b2a99c18d51b838eeb1d3eed4c533bb512d060608201527f2724713603bfbd790aeaf3e7df25d8e7ef8f311334905b4d8c99980cf210979d608082015290565b60405163e2ef09e560e01b815260040160405180910390fd5b919050565b6130bd60405180606001604052806000815260200160008152602001600081525090565b6130c78484613a99565b8082526130d79085908590613aed565b602082015280516130ed90859084908690613b51565b60408201529392505050565b600080613107858789613ca7565b9050613117888689898888613d93565b61312281878661409f565b98975050505050505050565b613136614ec2565b82518251146131875760405162461bcd60e51b815260206004820181905260248201527f4d534d206572726f723a206c656e67746820646f6573206e6f74206d61746368604482015260640161085b565b6131c58360008151811061319d5761319d6154b3565b6020026020010151836000815181106131b8576131b86154b3565b60200260200101516140ef565b905060015b82518110156132155761320b826132068684815181106131ec576131ec6154b3565b60200260200101518685815181106131b8576131b86154b3565b614183565b91506001016131ca565b5092915050565b60006132366000805160206158f583398151915283615675565b61101a906000805160206158f58339815191526154a0565b613256614ec2565b5060408051808201909152600181526002602082015290565b613277614ec2565b613280826134e3565b15613289575090565b60405180604001604052808360000151815260200160008051602061587583398151915284602001516132bc9190615675565b6132d4906000805160206158758339815191526154a0565b905292915050565b6133076040518060800160405280600081526020016000815260200160008152602001600081525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b60008060006040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e08201526020850151610100820152845161012082015260608501516101408201526040850151610160820152602060006101808360085afa9150506000519150806134825760405162461bcd60e51b815260206004820152601c60248201527b426e3235343a2050616972696e6720636865636b206661696c65642160201b604482015260640161085b565b50151590505b949350505050565b6060826134a5576134a08261421e565b6120ab565b81511580156134bc57506001600160a01b0384163b155b156134dc5783604051639996b31560e01b815260040161085b9190614f4a565b50806120ab565b80516020909101511590151690565b825160fe9061352d61350383613962565b60405160200161351591815260200190565b60405160208183030381529060405260006004614247565b61356761353d8660000151613962565b60405160200161354f91815260200190565b60405160208183030381529060405260006008614247565b61357761353d8760200151613962565b60405160200161358a9493929190615697565b60408051601f198184030181529190528085526135a76001613962565b6135be600080516020615995833981519152613962565b6135d5600080516020615935833981519152613962565b6135ec600080516020615975833981519152613962565b6136036000805160206158b5833981519152613962565b604051602001613618969594939291906155f6565b60408051601f1981840301815291905280855260e08401516136399061388b565b61364785610100015161388b565b61365586610120015161388b565b61366387610140015161388b565b61367188610160015161388b565b61367f89610180015161388b565b61368d8a6101e0015161388b565b6040516020016136a49897969594939291906156ee565b60408051601f198184030181529190528085526102008401516136c69061388b565b6136d485610220015161388b565b6136e286610240015161388b565b6136f0876101a0015161388b565b6136fe886101c0015161388b565b61370c89610260015161388b565b6040516020016137229796959493929190615793565b60408051601f198184030181529181528186528401516137419061388b565b61374e856060015161388b565b61375b866080015161388b565b6137688760a0015161388b565b6137758860c0015161388b565b60405160200161378a96959493929190615548565b60408051601f1981840301815291905280855282516137c19084906000906137b4576137b46154b3565b6020026020010151613962565b6137d7846001815181106137b4576137b46154b3565b6137ed856002815181106137b4576137b46154b3565b613803866003815181106137b4576137b46154b3565b613819876004815181106137b4576137b46154b3565b61382f886005815181106137b4576137b46154b3565b613845896006815181106137b4576137b46154b3565b61385b8a6007815181106137b4576137b46154b3565b60405160200161387399989796959493929190615825565b60408051601f19818403018152919052909352505050565b60606000613898836134e3565b156138a457600160fe1b175b602083015160008051602061587583398151915260019190911b106138ca5750600160ff1b5b82516138d7908217613962565b6040516020016138e991815260200190565b604051602081830303815290604052915050919050565b602080820151825180516040518381526000948594939291908101855b83811015613937576020818601810151838301520161391d565b5050602091820190209086018190529250600061280c6000805160206158f583398151915285615675565b60008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008827fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010827dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1916901c1790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020827bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1916901c1790506040816001600160401b03600160801b03600160c01b0316901b6040826001600160401b03600160801b03600160c01b031916901c179050608081901b608082901c179050919050565b81516000906000805160206158f583398151915290838015613add5784935060005b82811015613ad157838586099450600101613abb565b50600184039350613ae4565b6001830393505b50505092915050565b600081600003613aff575060006120ab565b60408401516000805160206158f583398151915290600090828186099050858015613b2f57600187039250613b36565b6001840392505b50613b4082614354565b915082828209979650505050505050565b600081600003613b6357506000613488565b835160408601516000805160206158f58339815191529190600090819081908180613b8e8d886143fa565b90506000876001600160401b03811115613baa57613baa614f5e565b604051908082528060200260200182016040528015613bd3578160200160208202803683370190505b509050888b850993506001925060005b88811015613c1857602081026020840101519550898d878c030896508987850960208281028401018890529350600101613be3565b50613c2283614354565b925060005b88811015613c955760208102602084010151955089868609975089848909975060005b89811015613c7457808214613c6c576020810260208401015197508a888a0998505b600101613c4a565b506020810260208f010151955089868909975089888c089a50600101613c27565b50505050505050505050949350505050565b6000806000805160206158f58339815191529050600083602001519050600084604001519050600060019050606088015160808901516101a08901516102408a0151878889838709858501088609945050506101c08901516102608a0151878889838709858501088609945050506101e08901516102808a0151878889838709858501088609945050506102008901516102a08a01518788898387098585010886099450505061022089015191506102c0890151868782898587080985099350505050875160208901518586868309870385089650508485838309860387089998505050505050505050565b613da18686868685876144bf565b60c085015182516000805160206158f583398151915291908190819086906014908110613dd057613dd06154b3565b602002602001018181525050856000015184601481518110613df457613df46154b3565b60200260200101819052508282820990508085601581518110613e1957613e196154b3565b602002602001018181525050856020015184601581518110613e3d57613e3d6154b3565b60200260200101819052508282820990508085601681518110613e6257613e626154b3565b602002602001018181525050856040015184601681518110613e8657613e866154b3565b60200260200101819052508282820990508085601781518110613eab57613eab6154b3565b602002602001018181525050856060015184601781518110613ecf57613ecf6154b3565b60200260200101819052508282820990508085601881518110613ef457613ef46154b3565b602002602001018181525050856080015184601881518110613f1857613f186154b3565b60200260200101819052508282820990508085601981518110613f3d57613f3d6154b3565b602002602001018181525050886040015184601981518110613f6157613f616154b3565b60200260200101819052508282820990508085601a81518110613f8657613f866154b3565b602002602001018181525050886060015184601a81518110613faa57613faa6154b3565b60200260200101819052508282820990508085601b81518110613fcf57613fcf6154b3565b602002602001018181525050886080015184601b81518110613ff357613ff36154b3565b60200260200101819052508282820990508085601c81518110614018576140186154b3565b6020026020010181815250508860a0015184601c8151811061403c5761403c6154b3565b60200260200101819052508282820990508760e0015185601d81518110614065576140656154b3565b6020026020010181815250508560a0015184601d81518110614089576140896154b3565b6020026020010181905250505050505050505050565b6000805160206158f58339815191528381039060005b600a8110156140e65760206015820102840151602082026101a00186015183848284098608945050506001016140b5565b50509392505050565b6140f7614ec2565b6140ff614edc565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa9050808061413157600080fd5b508061417b5760405162461bcd60e51b8152602060048201526019602482015278426e3235343a207363616c6172206d756c206661696c65642160381b604482015260640161085b565b505092915050565b61418b614ec2565b614193614efa565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa905080806141d057600080fd5b508061417b5760405162461bcd60e51b815260206004820152601d60248201527f426e3235343a2067726f7570206164646974696f6e206661696c656421000000604482015260640161085b565b80511561422e5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60608161425581601f615519565b10156142945760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015260640161085b565b61429e8284615519565b845110156142e25760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015260640161085b565b606082158015614301576040519150600082526020820160405261434b565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561433a578051835260209283019201614322565b5050858452601f01601f1916604052505b50949350505050565b60008060006000805160206158f5833981519152905060405160208152602080820152602060408201528460608201526002820360808201528160a08201526020600060c08360055afa9250506000519250816143f35760405162461bcd60e51b815260206004820152601d60248201527f426e3235343a20706f7720707265636f6d70696c65206661696c656421000000604482015260640161085b565b5050919050565b6060826020015182111561442157604051638c5e11f160e01b815260040160405180910390fd5b606083015160016000805160206158f5833981519152846001600160401b0381111561444f5761444f614f5e565b604051908082528060200260200182016040528015614478578160200160208202803683370190505b50935084151915613ae45760208401856020028101600182526020820191505b808210156144b457828585099350838252602082019150614498565b505050505092915050565b6000806000806000806000805160206158f583398151915290508060208b015160208d01510995508a5193508060a08c015160608d0151099250806101a08a0151840891508060808c0151830891508084830993508060008051602061599583398151915284099150806101c08a0151830891508060808c0151830891508084830993508060008051602061593583398151915284099150806101e08a0151830891508060808c0151830891508084830993508060008051602061597583398151915284099150806102008a0151830891508060808c015183089150808483099350806000805160206158b583398151915284099150806102208a0151830891508060808c0151830891508084830993508084870895508860a00151886000815181106145ee576145ee6154b3565b6020026020010181905250858760008151811061460d5761460d6154b3565b6020026020010181815250508060608c01518c51099450806102c08a015186099450806102408a015160608d0151099250806101a08a0151840892508060808c015184089250808386099450806102608a015160608d0151099250806101c08a0151840892508060808c015184089250808386099450806102808a015160608d0151099250806101e08a0151840892508060808c015184089250808386099450806102a08a015160608d0151099250806102008a0151840892508060808c0151840892508083860994508b60c00151886001815181106146ef576146ef6154b3565b602090810291909101015261470485826154a0565b87600181518110614717576147176154b3565b602002602001018181525050886101a001518760028151811061473c5761473c6154b3565b602002602001018181525050886101c0015187600381518110614761576147616154b3565b602002602001018181525050886101e0015187600481518110614786576147866154b3565b602002602001018181525050886102000151876005815181106147ab576147ab6154b3565b6020026020010181815250508b60e00151886002815181106147cf576147cf6154b3565b60200260200101819052508b6101000151886003815181106147f3576147f36154b3565b60200260200101819052508b610120015188600481518110614817576148176154b3565b60200260200101819052508b61014001518860058151811061483b5761483b6154b3565b6020026020010181905250806101c08a01516101a08b0151099250828760068151811061486a5761486a6154b3565b6020026020010181815250508b61016001518860068151811061488f5761488f6154b3565b6020026020010181905250806102008a01516101e08b015109925082876007815181106148be576148be6154b3565b6020026020010181815250508b6101800151886007815181106148e3576148e36154b3565b60200260200101819052506101a08901519250808384099150808283099150808284099250828760088151811061491c5761491c6154b3565b6020026020010181815250508b6101e0015188600881518110614941576149416154b3565b60200260200101819052506101c08901519250808384099150808283099150808284099250828760098151811061497a5761497a6154b3565b6020026020010181815250508b61020001518860098151811061499f5761499f6154b3565b60200260200101819052506101e089015192508083840991508082830991508082840992508287600a815181106149d8576149d86154b3565b6020026020010181815250508b610220015188600a815181106149fd576149fd6154b3565b602002602001018190525061020089015192508083840991508082830991508082840992508287600b81518110614a3657614a366154b3565b6020026020010181815250508b610240015188600b81518110614a5b57614a5b6154b3565b602002602001018190525088610220015181614a7791906154a0565b87600c81518110614a8a57614a8a6154b3565b6020026020010181815250508b6101a0015188600c81518110614aaf57614aaf6154b3565b6020026020010181905250600187600d81518110614acf57614acf6154b3565b6020026020010181815250508b6101c0015188600d81518110614af457614af46154b3565b6020026020010181905250806101c08a01516101a08b0151099250806101e08a015184099250806102008a015184099250806102208a0151840992508287600e81518110614b4457614b446154b3565b6020026020010181815250508b610260015188600e81518110614b6957614b696154b3565b60209081029190910101528951614b8090826154a0565b87600f81518110614b9357614b936154b3565b6020026020010181815250508860c0015188600f81518110614bb757614bb76154b3565b60200260200101819052508060018b510860a08c0151909350819080099150808284099250808360206010028901510991508187601081518110614bfd57614bfd6154b3565b6020026020010181815250508860e0015188601081518110614c2157614c216154b3565b6020026020010181905250808360206011028901510991508187601181518110614c4d57614c4d6154b3565b60200260200101818152505088610100015188601181518110614c7257614c726154b3565b6020026020010181905250808360206012028901510991508187601281518110614c9e57614c9e6154b3565b60200260200101818152505088610120015188601281518110614cc357614cc36154b3565b6020026020010181905250808360206013028901510991508187601381518110614cef57614cef6154b3565b60200260200101818152505088610140015188601381518110614d1457614d146154b3565b6020026020010181905250505050505050505050505050565b60405180610100016040528060006001600160401b0316815260200160006001600160401b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040518061028001604052806000815260200160008152602001614da6614ec2565b8152602001614db3614ec2565b8152602001614dc0614ec2565b8152602001614dcd614ec2565b8152602001614dda614ec2565b8152602001614de7614ec2565b8152602001614df4614ec2565b8152602001614e01614ec2565b8152602001614e0e614ec2565b8152602001614e1b614ec2565b8152602001614e28614ec2565b8152602001614e35614ec2565b8152602001614e42614ec2565b8152602001614e4f614ec2565b8152602001614e5c614ec2565b8152602001614e69614ec2565b8152602001614e76614ec2565b8152602001614e83614ec2565b905290565b604051806101000160405280600081526020016000815260200160008152602001600081526020016060815260200160608152602001614e765b604051806040016040528060008152602001600081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b80356001600160a01b038116811461309457600080fd5b600060208284031215614f4157600080fd5b6120ab82614f18565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b6040516102e081016001600160401b0381118282101715614f9757614f97614f5e565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614fc557614fc5614f5e565b604052919050565b80356001600160401b038116811461309457600080fd5b6000610100808385031215614ff857600080fd5b604051908101906001600160401b038211818310171561501a5761501a614f5e565b8160405280925061502a84614fcd565b815261503860208501614fcd565b602082015260408401356040820152606084013560608201526080840135608082015260a084013560a082015260c084013560c082015260e084013560e0820152505092915050565b60006040828403121561509357600080fd5b604080519081016001600160401b03811182821017156150b5576150b5614f5e565b604052823581526020928301359281019290925250919050565b6000808284036105808112156150e457600080fd5b6150ee8585614fe4565b92506101006104808060ff198401121561510757600080fd5b61510f614f74565b925061511d87838801615081565b835261014061512e88828901615081565b602085015261018061514289828a01615081565b60408601526101c06151568a828b01615081565b606087015261020061516a8b828c01615081565b608088015261024061517e8c828d01615081565b60a08901526102806151928d828e01615081565b60c08a01526102c06151a68e828f01615081565b60e08b01526151b98e6103008f01615081565b898b01526151cb8e6103408f01615081565b6101208b01526151df8e6103808f01615081565b878b01526151f18e6103c08f01615081565b6101608b01526152058e6104008f01615081565b868b01526104408d01356101a08b01526104608d0135858b0152878d01356101e08b01526104a08d0135848b01526104c08d01356102208b01526104e08d0135838b01526105008d01356102608b01526105208d0135828b01526105408d01356102a08b01526105608d0135818b0152505050505050505050809150509250929050565b6000806040838503121561529c57600080fd5b6152a583614f18565b91506020838101356001600160401b03808211156152c257600080fd5b818601915086601f8301126152d657600080fd5b8135818111156152e8576152e8614f5e565b6152fa601f8201601f19168501614f9d565b9150808252878482850101111561531057600080fd5b80848401858401376000848284010152508093505050509250929050565b6001600160401b0391909116815260200190565b803563ffffffff8116811461309457600080fd5b60006020828403121561536857600080fd5b6120ab82615342565b60006020828403121561538357600080fd5b5035919050565b600080600061014084860312156153a057600080fd5b6153aa8585614fe4565b92506153b96101008501615342565b91506153c86101208501614f18565b90509250925092565b600061010082840312156153e457600080fd5b6120ab8383614fe4565b60005b838110156154095781810151838201526020016153f1565b50506000910152565b60208152600082518060208401526154318160408501602087016153ee565b601f01601f19169190910160400192915050565b6000806040838503121561545857600080fd5b50508035926020909101359150565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821602808216919082811461417b5761417b615467565b8181038181111561101a5761101a615467565b634e487b7160e01b600052603260045260246000fd5b6000816154d8576154d8615467565b506000190190565b6001600160401b0381811683821601908082111561321557613215615467565b60006020828403121561551257600080fd5b5051919050565b8082018082111561101a5761101a615467565b6000825161553e8184602087016153ee565b9190910192915050565b60008751602061555b8285838d016153ee565b88519184019161556e8184848d016153ee565b88519201916155808184848c016153ee565b87519201916155928184848b016153ee565b86519201916155a48184848a016153ee565b85519201916155b681848489016153ee565b919091019998505050505050505050565b600083516155d98184602088016153ee565b8351908301906155ed8183602088016153ee565b01949350505050565b60008751615608818460208c016153ee565b9190910195865250602085019390935260408401919091526060830152608082015260a001919050565b600084516156448184602089016153ee565b8451908301906156588183602089016153ee565b845191019061566b8183602088016153ee565b0195945050505050565b60008261569257634e487b7160e01b600052601260045260246000fd5b500690565b600085516156a9818460208a016153ee565b8551908301906156bd818360208a016153ee565b85519101906156d08183602089016153ee565b84519101906156e38183602088016153ee565b019695505050505050565b6000895160206157018285838f016153ee565b8a51918401916157148184848f016153ee565b8a519201916157268184848e016153ee565b89519201916157388184848d016153ee565b885192019161574a8184848c016153ee565b875192019161575c8184848b016153ee565b865192019161576e8184848a016153ee565b855192019161578081848489016153ee565b919091019b9a5050505050505050505050565b6000885160206157a68285838e016153ee565b8951918401916157b98184848e016153ee565b89519201916157cb8184848d016153ee565b88519201916157dd8184848c016153ee565b87519201916157ef8184848b016153ee565b86519201916158018184848a016153ee565b855192019161581381848489016153ee565b919091019a9950505050505050505050565b60008a51615837818460208f016153ee565b9190910198895250602088019690965260408701949094526060860192909252608085015260a084015260c083015260e08201526101000191905056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6882e2b91456103698adf57b799969dea1c8f739da5d8d40dd3eb9222db7c81e881360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001f3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee31ee678a0470a75a6eaa8fe837060498ba828a3703b311d0f77f010424afeb025f3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee42042a587a90c187b0a087c03e29c968b950b1db26d5c82d666905a6895790c0a2f8dd1f1a7583c42c4e12a44e110404c73ca6c94813f85835da4fb7bb1301d4aa164736f6c6343000817000a", + "nonce": "0x0", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf42793ff21170c2af2d5a76308b93f125c7b2af036385234e0754120051c1f2b", + "transactionType": "CREATE", + "contractName": "ERC1967Proxy", + "contractAddress": "0x2630d223087a13978413709ea1d43bea79dc16d1", + "function": null, + "arguments": [ + "0xad3ECFfcB19bcB3464ec5e02Af565bCC08b63afF", + "0xa244d5960000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004d2000000000000000000000000000000000000000000000000000000000000162e219a25b0eb67ec09251a6f5abc377de144a6e81b7f0c4a01aa8eba3801f89dce2599254c85754d3eb4cb4f899ae0a9368251832178d80a16ab726e4ad6f3839d1e0aee7dd5ea868686d43f25e553e9a4b91f9aac89f451f5fc55a66889f3af100000000000000000000000000000000000000000000000000000000000000015000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000042ba5a503f27f4d1e21a5a09c9edd3ea1d273876" + ], + "transaction": { + "from": "0x42ba5a503f27f4d1e21a5a09c9edd3ea1d273876", + "gas": "0xce99b", + "value": "0x0", + "input": "0x60806040526040516103e73803806103e78339810160408190526100229161025a565b61002c8282610033565b5050610358565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610086576100818282610109565b505050565b61008e610180565b5050565b806001600160a01b03163b6000036100c85780604051634c9c8ce360e01b81526004016100bf9190610328565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610126919061033c565b600060405180830381855af49150503d8060008114610161576040519150601f19603f3d011682016040523d82523d6000602084013e610166565b606091505b5090925090506101778583836101a1565b95945050505050565b341561019f5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b6576101b1826101f7565b6101f0565b81511580156101cd57506001600160a01b0384163b155b156101ed5783604051639996b31560e01b81526004016100bf9190610328565b50805b9392505050565b8051156102075780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b83811015610251578181015183820152602001610239565b50506000910152565b6000806040838503121561026d57600080fd5b82516001600160a01b038116811461028457600080fd5b60208401519092506001600160401b03808211156102a157600080fd5b818501915085601f8301126102b557600080fd5b8151818111156102c7576102c7610220565b604051601f8201601f19908116603f011681019083821181831017156102ef576102ef610220565b8160405282815288602084870101111561030857600080fd5b610319836020830160208801610236565b80955050505050509250929050565b6001600160a01b0391909116815260200190565b6000825161034e818460208701610236565b9190910192915050565b6081806103666000396000f3fe6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea164736f6c6343000817000a000000000000000000000000ad3ecffcb19bcb3464ec5e02af565bcc08b63aff00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000144a244d5960000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004d2000000000000000000000000000000000000000000000000000000000000162e219a25b0eb67ec09251a6f5abc377de144a6e81b7f0c4a01aa8eba3801f89dce2599254c85754d3eb4cb4f899ae0a9368251832178d80a16ab726e4ad6f3839d1e0aee7dd5ea868686d43f25e553e9a4b91f9aac89f451f5fc55a66889f3af100000000000000000000000000000000000000000000000000000000000000015000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000042ba5a503f27f4d1e21a5a09c9edd3ea1d27387600000000000000000000000000000000000000000000000000000000", + "nonce": "0x1", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xd70b5a", + "logs": [ + { + "address": "0xad3ecffcb19bcb3464ec5e02af565bcc08b63aff", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x4982923014bfd512113084a29fb3b956cdbf85be776eac7b26b9ea277554ba82", + "blockNumber": "0x6000b2", + "transactionHash": "0xd3a615e5e1565625a38c1068a1f27f1813db90dbfb61ab93a273a06e32df2a23", + "transactionIndex": "0x4b", + "logIndex": "0x7d", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000080000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0", + "transactionHash": "0xd3a615e5e1565625a38c1068a1f27f1813db90dbfb61ab93a273a06e32df2a23", + "transactionIndex": "0x4b", + "blockHash": "0x4982923014bfd512113084a29fb3b956cdbf85be776eac7b26b9ea277554ba82", + "blockNumber": "0x6000b2", + "gasUsed": "0x4cf45c", + "effectiveGasPrice": "0x834824ce", + "from": "0x42ba5a503f27f4d1e21a5a09c9edd3ea1d273876", + "to": null, + "contractAddress": "0xad3ecffcb19bcb3464ec5e02af565bcc08b63aff" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xe0fa7c", + "logs": [ + { + "address": "0x2630d223087a13978413709ea1d43bea79dc16d1", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000ad3ecffcb19bcb3464ec5e02af565bcc08b63aff" + ], + "data": "0x", + "blockHash": "0x4982923014bfd512113084a29fb3b956cdbf85be776eac7b26b9ea277554ba82", + "blockNumber": "0x6000b2", + "transactionHash": "0xf42793ff21170c2af2d5a76308b93f125c7b2af036385234e0754120051c1f2b", + "transactionIndex": "0x4c", + "logIndex": "0x7e", + "removed": false + }, + { + "address": "0x2630d223087a13978413709ea1d43bea79dc16d1", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x00000000000000000000000042ba5a503f27f4d1e21a5a09c9edd3ea1d273876" + ], + "data": "0x", + "blockHash": "0x4982923014bfd512113084a29fb3b956cdbf85be776eac7b26b9ea277554ba82", + "blockNumber": "0x6000b2", + "transactionHash": "0xf42793ff21170c2af2d5a76308b93f125c7b2af036385234e0754120051c1f2b", + "transactionIndex": "0x4c", + "logIndex": "0x7f", + "removed": false + }, + { + "address": "0x2630d223087a13978413709ea1d43bea79dc16d1", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x4982923014bfd512113084a29fb3b956cdbf85be776eac7b26b9ea277554ba82", + "blockNumber": "0x6000b2", + "transactionHash": "0xf42793ff21170c2af2d5a76308b93f125c7b2af036385234e0754120051c1f2b", + "transactionIndex": "0x4c", + "logIndex": "0x80", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000200800000400000000000000000800000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000002000001000000000000000000000000000000000000020000000000000000000820000000000000000000000000000000400000000000000000000800000000000000000000000080000000000040000000000000000000000000000000000000000000000000000000000000000000800000000020100000000000000000000000000000000004000000000080000020000000000000000000000000000000000000000000000000000000040000000000", + "type": "0x0", + "transactionHash": "0xf42793ff21170c2af2d5a76308b93f125c7b2af036385234e0754120051c1f2b", + "transactionIndex": "0x4c", + "blockHash": "0x4982923014bfd512113084a29fb3b956cdbf85be776eac7b26b9ea277554ba82", + "blockNumber": "0x6000b2", + "gasUsed": "0x9ef22", + "effectiveGasPrice": "0x834824ce", + "from": "0x42ba5a503f27f4d1e21a5a09c9edd3ea1d273876", + "to": null, + "contractAddress": "0x2630d223087a13978413709ea1d43bea79dc16d1" + } + ], + "libraries": [], + "pending": [], + "returns": { + "proxyAddress": { + "internal_type": "address payable", + "value": "0x2630D223087A13978413709ea1D43BEA79dC16d1" + }, + "admin": { + "internal_type": "address", + "value": "0x42Ba5A503F27F4D1E21a5a09c9EdD3eA1d273876" + }, + "2": { + "internal_type": "struct LightClient.LightClientState", + "value": "(0, 0, 1234, 5678, 15198678585580246251692354046620241178086945668772252070628837665439280045518, 17006160426117517054610525022479724455324142717962158209641183699803667923869, 13588699936297641358648475784636038162266787982044803430220317237560319651600, 21)" + } + }, + "timestamp": 1720726496, + "chain": 11155111, + "commit": "d482b424" +} \ No newline at end of file diff --git a/contracts/broadcast/UpgradeLightClient.s.sol/11155111/run-1720727659.json b/contracts/broadcast/UpgradeLightClient.s.sol/11155111/run-1720727659.json new file mode 100644 index 0000000000..94c8766f80 --- /dev/null +++ b/contracts/broadcast/UpgradeLightClient.s.sol/11155111/run-1720727659.json @@ -0,0 +1,56 @@ +{ + "transactions": [ + { + "hash": null, + "transactionType": "CREATE", + "contractName": "LightClient", + "contractAddress": "0xa79d3f934469d73c96b64efb0b0fb7a8469897fb", + "function": null, + "arguments": null, + "transaction": { + "from": "0x42ba5a503f27f4d1e21a5a09c9edd3ea1d273876", + "gas": "0x640315", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516159c162000104600039600081816114320152818161145b01526115c701526159c16000f3fe6080604052600436106101525760003560e01c8063013fa5fc146101575780630d8e6e2c14610179578063313df7b1146101ab578063382b215a146101d8578063409939b7146101fc5780634847ae5d1461021c5780634f1ef2861461029e57806352d1902d146102b157806354646085146102c657806362827733146102db57806369cc6a04146102f15780637053fc5114610306578063715018a61461031b578063766718081461033057806376b6b7cb146103645780637f17baad1461037a57806382d07ff31461042d5780638584d23f146104425780638da5cb5b14610486578063a244d5961461049b578063a51e6fea146104bb578063aa922732146104db578063ad3cb1cc146104fb578063bd32519a14610539578063ca6fe8551461056a578063db13b60a14610580578063e0303301146105bf578063f0682054146105df578063f2fde38b14610611575b600080fd5b34801561016357600080fd5b50610177610172366004614f2f565b610631565b005b34801561018557600080fd5b506040805160018152600060208201819052918101919091526060015b60405180910390f35b3480156101b757600080fd5b506006546101cb906001600160a01b031681565b6040516101a29190614f4a565b3480156101e457600080fd5b506101ee60035481565b6040519081526020016101a2565b34801561020857600080fd5b506101776102173660046150cf565b6106f1565b34801561022857600080fd5b50610231610a1c565b6040516101a2919060006101008201905060018060401b038084511683528060208501511660208401525060408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b6101776102ac366004615289565b610aae565b3480156102bd57600080fd5b506101ee610acd565b3480156102d257600080fd5b506008546101ee565b3480156102e757600080fd5b506101ee60025481565b3480156102fd57600080fd5b50610177610aea565b34801561031257600080fd5b506007546101ee565b34801561032757600080fd5b50610177610b5a565b34801561033c57600080fd5b5060005461035790600160601b90046001600160401b031681565b6040516101a2919061532e565b34801561037057600080fd5b506101ee60015481565b34801561038657600080fd5b506103e7610395366004615356565b600560208190526000918252604090912080546001820154600283015460038401546004850154958501546006909501546001600160401b0380861697600160401b9096041695939492939192919088565b604080516001600160401b03998a168152989097166020890152958701949094526060860192909252608085015260a084015260c083015260e0820152610100016101a2565b34801561043957600080fd5b50610231610b6c565b34801561044e57600080fd5b5061046261045d366004615371565b610bfc565b6040805182516001600160401b0316815260209283015192810192909252016101a2565b34801561049257600080fd5b506101cb610d56565b3480156104a757600080fd5b506101776104b636600461538a565b610d71565b3480156104c757600080fd5b506101ee6104d6366004615371565b610e9c565b3480156104e757600080fd5b506101ee6104f63660046153d1565b610ebd565b34801561050757600080fd5b5061052c604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101a29190615412565b34801561054557600080fd5b5060065461055a90600160a01b900460ff1681565b60405190151581526020016101a2565b34801561057657600080fd5b506101ee60045481565b34801561058c57600080fd5b506105a061059b366004615371565b610f05565b604080516001600160401b0390931683526020830191909152016101a2565b3480156105cb57600080fd5b5061055a6105da366004615445565b610f3d565b3480156105eb57600080fd5b506000546105fc9063ffffffff1681565b60405163ffffffff90911681526020016101a2565b34801561061d57600080fd5b5061017761062c366004614f2f565b611020565b61063961105e565b6001600160a01b0381166106605760405163e6c4247b60e01b815260040160405180910390fd5b6006546001600160a01b039081169082160361068f5760405163a863aec960e01b815260040160405180910390fd5b600680546001600160a81b0319166001600160a01b0380841691909117600160a01b17918290556040517f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072926106e6921690614f4a565b60405180910390a150565b600654600160a01b900460ff16801561071557506006546001600160a01b03163314155b1561075c576006546001600160a01b0316610743576040516312e6d1e760e11b815260040160405180910390fd5b6040516301474c8f60e71b815260040160405180910390fd5b610764610b6c565b5182516001600160401b0391821691161115806107a25750610784610b6c565b602001516001600160401b031682602001516001600160401b031611155b156107c05760405163051c46ef60e01b815260040160405180910390fd5b600080546107e59063ffffffff811690600160601b90046001600160401b031661547d565b6000805463ffffffff600160401b91829004168252600560205260409091205491925090046001600160401b039081169082161480158161083b5750816001600160401b031684602001516001600160401b0316115b15610864578160405163036466bf60e31b815260040161085b919061532e565b60405180910390fd5b6108718460400151611090565b61087e8460600151611090565b61088b8460800151611090565b6108988460a00151611090565b6108a58460c00151611090565b80156108b3576108b36110ec565b6108bd8484611237565b60008054600160401b9081900463ffffffff168252600560208181526040808520895181548b850180516001600160401b039384166001600160801b0319909316929092179183169097021782558a8301805160018085019190915560608d015160028086019190915560808e0151600386015560a08e0151600486015560c08e01519785019790975560e08d01516006909401939093556007805480850182559089524360008051602061589583398151915290910155835180850185528751831681528151818701908152600880549586018155909952516000805160206159158339815191529390960292830180546001600160401b03191696831696909617909555955160008051602061595583398151915290910155925188519251935193845284169391909116917fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6910160405180910390a350505050565b610a24614d2d565b5060008054600160201b900463ffffffff1681526005602081815260409283902083516101008101855281546001600160401b038082168352600160401b90910416928101929092526001810154938201939093526002830154606082015260038301546080820152600483015460a08201529082015460c082015260069091015460e082015290565b610ab6611427565b610abf826114cc565b610ac98282611503565b5050565b6000610ad76115bc565b506000805160206158d583398151915290565b610af261105e565b600654600160a01b900460ff1615610b3f57600680546001600160a81b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c0245090600090a1565b60405163a863aec960e01b815260040160405180910390fd5b565b610b6261105e565b610b586000611605565b610b74614d2d565b506000805463ffffffff600160401b918290041682526005602081815260409384902084516101008101865281546001600160401b038082168352959004909416918401919091526001810154938301939093526002830154606083015260038301546080830152600483015460a083015282015460c082015260069091015460e082015290565b60408051808201909152600080825260208201526008805490610c206001836154a0565b81548110610c3057610c306154b3565b60009182526020909120600290910201546001600160401b03168310610c6957604051631856a49960e21b815260040160405180910390fd5b60005b81811015610cfe578360088281548110610c8857610c886154b3565b60009182526020909120600290910201546001600160401b03161115610cf65760088181548110610cbb57610cbb6154b3565b60009182526020918290206040805180820190915260029092020180546001600160401b031682526001015491810191909152949350505050565b600101610c6c565b506008610d0c6001836154a0565b81548110610d1c57610d1c6154b3565b60009182526020918290206040805180820190915260029092020180546001600160401b0316825260010154918101919091529392505050565b600080610d61611661565b546001600160a01b031692915050565b6000610d7b611685565b805490915060ff600160401b82041615906001600160401b0316600081158015610da25750825b90506000826001600160401b03166001148015610dbe5750303b155b905081158015610dcc575080155b15610dea5760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b03191660011785558315610e1357845460ff60401b1916600160401b1785555b610e1c866116a9565b610e246116ba565b60008054600160201b600160601b031916600160401b179055610e4788886116c2565b8315610e9257845460ff60401b191685556040517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290610e899060019061532e565b60405180910390a15b5050505050505050565b60078181548110610eac57600080fd5b600091825260209091200154905081565b60808082015160a083015160c0840151604080516020810194909452830191909152606082015260009101604051602081830303815290604052805190602001209050919050565b60088181548110610f1557600080fd5b6000918252602090912060029091020180546001909101546001600160401b03909116915082565b60075460009043841180610f515750600381105b15610f6f5760405163b0b4387760e01b815260040160405180910390fd5b60008080610f7e6001856154a0565b90505b81610fe9578660078281548110610f9a57610f9a6154b3565b906000526020600020015411610fcf576001915060078181548110610fc157610fc16154b3565b906000526020600020015492505b60028110610fe95780610fe1816154c9565b915050610f81565b816110075760405163b0b4387760e01b815260040160405180910390fd5b8561101284896154a0565b119450505050505b92915050565b61102861105e565b6001600160a01b038116611052576000604051631e4fbdf760e01b815260040161085b9190614f4a565b61105b81611605565b50565b33611067610d56565b6001600160a01b031614610b58573360405163118cdaa760e01b815260040161085b9190614f4a565b6000805160206158f5833981519152811080610ac95760405162461bcd60e51b815260206004820152601b60248201527a109b8c8d4d0e881a5b9d985b1a59081cd8d85b185c88199a595b19602a1b604482015260640161085b565b6000805463ffffffff600160401b9182900416825260056020818152604080852081516101008101835281546001600160401b038082168352969004909516928501929092526001820154908401526002810154606084015260038101546080840152600481015460a08401529081015460c08301526006015460e082015261117490610ebd565b600380546001908155908290556004805460025560008054600160401b810463ffffffff16825260056020526040822060060154909255929350909190600c906111cf908490600160601b90046001600160401b03166154e0565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fdb3558259e039d7e50e816b9dcce30fb114d8a9c86eca5ab14b60194d6945d3f6000600c9054906101000a90046001600160401b03166040516106e6919061532e565b60006112416119e5565b604080516008808252610120820190925291925060009190602082016101008036833701905050905060025481600081518110611280576112806154b3565b60200260200101818152505083600001516001600160401b0316816001815181106112ad576112ad6154b3565b60200260200101818152505083602001516001600160401b0316816002815181106112da576112da6154b3565b6020026020010181815250508360400151816003815181106112fe576112fe6154b3565b602002602001018181525050836060015181600481518110611322576113226154b3565b60209081029190910181019190915260008054600160401b900463ffffffff16815260059182905260409020600301548251909183918110611366576113666154b3565b60209081029190910181019190915260008054600160401b900463ffffffff168152600590915260409020600401548151829060069081106113aa576113aa6154b3565b60209081029190910181019190915260008054600160401b900463ffffffff1681526005918290526040902001548151829060079081106113ed576113ed6154b3565b602002602001018181525050611404828285611fc7565b611421576040516309bde33960e01b815260040160405180910390fd5b50505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806114ae57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114a26000805160206158d5833981519152546001600160a01b031690565b6001600160a01b031614155b15610b585760405163703e46dd60e11b815260040160405180910390fd5b6114d461105e565b7ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d816040516106e69190614f4a565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561155d575060408051601f3d908101601f1916820190925261155a91810190615500565b60015b61157c5781604051634c9c8ce360e01b815260040161085b9190614f4a565b6000805160206158d583398151915281146115ad57604051632a87526960e21b81526004810182905260240161085b565b6115b783836120b2565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b585760405163703e46dd60e11b815260040160405180910390fd5b600061160f611661565b80546001600160a01b038481166001600160a01b031983168117845560405193945091169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b6116b1612108565b61105b8161212d565b610b58612108565b81516001600160401b03161515806116e6575060208201516001600160401b031615155b806116f357506080820151155b80611700575060a0820151155b8061170d575060c0820151155b8061171a575060e0820151155b80611729575063ffffffff8116155b15611747576040516350dd03f760e11b815260040160405180910390fd5b81600560008060049054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160010155606082015181600201556080820151816003015560a0820151816004015560c0820151816005015560e0820151816006015590505081600560008060089054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160010155606082015181600201556080820151816003015560a0820151816004015560c0820151816005015560e08201518160060155905050600080600c6101000a8154816001600160401b0302191690836001600160401b03160217905550806000806101000a81548163ffffffff021916908363ffffffff160217905550600061192d83610ebd565b600181815560e08501516002818155600393909355600455600780548083018255600091825243600080516020615895833981519152909101556040805180820182526020808901516001600160401b039081168352929098015197810197885260088054948501815590925290516000805160206159158339815191529290930291820180546001600160401b03191693909116929092179091559251600080516020615955833981519152909301929092555050565b6119ed614d84565b621000008152600860208201527f20c9403133dfde9a9d382df76fb0523571648725abc0a7c12830bb690ec83b336040820151527f03a0a9acc3e3815a7ed6cb1379f7d157e6343164729376392a693acbd3ec283c6020604083015101527f2866c18ad1df10ef13542cce6250ce02cb2a6b72ae00a9852e271187e9e4e0db6060820151527f21be232a42246a5663ebf483470cca666ffe9d4f0e63b929c596a7658714e9706020606083015101527f07d77873b9860074118e75808c79468b83c8ed64ba14db5cb5afa8e534de7b996080820151527f0be0f448839080132d47de17de0099b4cd74ae1e6b71cdda06cdebb868a50c6d6020608083015101527f13bd45a023491eadea44cc3f24cfbd1796eade9c0e39ee81d9f63ea0a580662560a0820151527f18f95cdda42ce11d9d10a3b335acc214e3807c578c5359405d810c208df60093602060a083015101527f0970d978763461f09e9ec63454073497386e4d282fedc2ac5b967cb9fd3fa8a960c0820151527f28c2217f7bacf6f8b2b8ee4a90fcf8b5bca04205ea84e8e1eb54b85dd41bde28602060c083015101527f02fe3d02988db718380052970aba46a3296df5f29b736ba1f2c4ccffc8b5969360e0820151527f202c3e390cee7c5c8525da2329a19f4936f6f71ca97dde6c6fa32b382d5acc03602060e083015101527f23ac10ae6ca5cacee8744bb939aaa835390954b91ae668a2c8d0edda558a89e7610100820151527f1c8c2b856cdade256ba3237f39afd5e170a9532012f7aecae49d459b29f6f6ad602061010083015101527f16ec03d260bd7ac1c50ffa63565d5274b4582ceea52ff40b81cdfe8f444f01e4610120820151527f29392152723097e07113c3d7786d245ec40c30928015cd50b5668a4f4ea17031602061012083015101527f2cdbfb3a4053c8489b0c94e74338ac19118df7a06bc56b1eb4d0e0dc4eae7248610140820151527f07fea127dae943b8dc148f1408d40cff465c9c4721943669b1e4fd5a39db7036602061014083015101527f031455a79a2e0ce78a6cb53526ec04ac19716a86b08a93df48d178f8b77e5619610160820151527f118623e6bc136ee6d3f9907cd4ad04a9418ea03ba99ad753227cdfee598e8415602061016083015101527f0861d1997761a852226aac7ba9717bf6ae56451099be774cdf02ef352a58cbc8610180820151527f0805e392bcbc12e40a722778632d73fe981e4bc6fa6d1178b70af7be1cb9a3a3602061018083015101527f101d1e3978cb9f1e303d413144ebe67682c9eb0cfe11242959aa6029d78cdbbc6101a0820151527f089eb9c727e6cb07082bc3e6f40cf04f439fe48000602b584774dad7efc6607c60206101a083015101527f2d489f2493263aa873bcd94f21efb45bf257a61d81c0c95c3297916506653b406101c0820151527f18e45d627aadd4df2794ecd9909fac1a753f0c6fa8a9c6654a7a58b0912fffd560206101c083015101527f0e43e3a4b13cb438e2ad924614261ad0240214fa1c83fcda6a0bf779eb39ffc56101e0820151527f0eaba9f429c5f6fc3103d4cc4056c500ff42425d8e6465c5b8e145219f9c5cd360206101e083015101527f29ae351d09dcf41c0a80ab05393738358baab37e6fbc464b3bb13258994a1fa4610200820151527f2b7bc74608d7ec7dadd0597d6a4010d8bfc2b31900281901cedc42bdbb0fb8fc602061020083015101527f066802c7ceb9e913d4f65433a20661e097acac1affecbb534a54f76a29782226610220820151527f27ec80e811e636f3348267923c8e641bd98a7e37c5216670cbff14ae323f9e0e602061022083015101527f12604d1f87c583f6c9710c73eaf590af9d07aa743d1381d0e9dff0eab2614239610240820151527f1588579e6c3378ea32cb641205ef762a63cd353a0bd670394528ad2081ee8dd4602061024083015101527f247d65261d3a4ab042ba937331f6d0c0c5eb9ea78753a92084db1a6939e19e82610260820151527f2ce6cc664a32147bfe6a0c94a95bf0496679405ccae01648cd4ec021145120d56020610260830151015290565b6000611fd282612135565b611ff583600081518110611fe857611fe86154b3565b6020026020010151611090565b61200b83600181518110611fe857611fe86154b3565b61202183600281518110611fe857611fe86154b3565b61203783600381518110611fe857611fe86154b3565b61204d83600481518110611fe857611fe86154b3565b61206383600581518110611fe857611fe86154b3565b61207983600681518110611fe857611fe86154b3565b61208f83600781518110611fe857611fe86154b3565b600061209c85858561226d565b90506120a7816123b7565b9150505b9392505050565b6120bb82612816565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612100576115b78282612872565b610ac96128e8565b612110612907565b610b5857604051631afcd79f60e31b815260040160405180910390fd5b611028612108565b805161214090612921565b61214d8160200151612921565b61215a8160400151612921565b6121678160600151612921565b6121748160800151612921565b6121818160a00151612921565b61218e8160c00151612921565b61219b8160e00151612921565b6121a9816101000151612921565b6121b7816101200151612921565b6121c5816101400151612921565b6121d3816101600151612921565b6121e1816101800151612921565b6121ef816101a00151611090565b6121fd816101c00151611090565b61220b816101e00151611090565b612219816102000151611090565b612227816102200151611090565b612235816102400151611090565b612243816102600151611090565b612251816102800151611090565b61225f816102a00151611090565b61105b816102c00151611090565b612275614e88565b836020015183511461229a576040516320fa9d8960e11b815260040160405180910390fd5b60006122a78585856129af565b905060006122b88660000151612cce565b905060006122cb828460a0015188613099565b60408051601e8082526103e0820190925291925060009190602082016103c080368337505060408051601e8082526103e082019092529293506000929150602082015b612316614ec2565b81526020019060019003908161230e579050509050600061233b8a858a8987876130f9565b60a08701516060870151919250906000805160206158f5833981519152600081838509604080516101008101825260e09c8d0151815260208101969096528501525050506060810191909152608081019290925260a082015261016086015160c082015261018090950151928501929092525091949350505050565b60006000805160206158f58339815191526123d0614ec2565b6123d8614ec2565b6040805160028082526060820183526000926020830190803683375050604080516002808252606082019092529293506000929150602082015b61241a614ec2565b8152602001906001900390816124125790505090506000600190508083600081518110612449576124496154b3565b6020026020010181815250508760c001518260008151811061246d5761246d6154b3565b6020026020010181905250876000015183600181518110612490576124906154b3565b6020026020010181815250508760e00151826001815181106124b4576124b46154b3565b60200260200101819052506124c9828461312e565b60808901515190955060609350839250905060006124e8826002615519565b6124f3906001615519565b9050806001600160401b0381111561250d5761250d614f5e565b604051908082528060200260200182016040528015612536578160200160208202803683370190505b509350806001600160401b0381111561255157612551614f5e565b60405190808252806020026020018201604052801561258a57816020015b612577614ec2565b81526020019060019003908161256f5790505b509250505060008060005b89608001515181101561262e57896080015181815181106125b8576125b86154b3565b60200260200101518583815181106125d2576125d26154b3565b6020026020010181815250508960a0015181815181106125f4576125f46154b3565b602002602001015184838151811061260e5761260e6154b3565b6020908102919091010152612624600183615519565b9150600101612595565b508860200151848281518110612646576126466154b3565b6020026020010181815250508860c00151838281518110612669576126696154b3565b602090810291909101015261267f600182615519565b895160408b0151919250906000898284099050808785815181106126a5576126a56154b3565b6020026020010181815250505050508860e001518382815181106126cb576126cb6154b3565b60209081029190910101526126e1600182615519565b60608a0151909150878184089250506126f98261321c565b84828151811061270b5761270b6154b3565b60200260200101818152505061271f61324e565b838281518110612731576127316154b3565b602002602001018190525061274e612749848661312e565b61326f565b945050505050600060405180608001604052807f0118c4d5b837bcc2bc89b5b398b5974e9f5944073b32078b7e231fec938883b081526020017f260e01b251f6f1c7e7ff4e580791dee8ea51d87a358e038b4efe30fac09383c181526020017f22febda3c0c0632a56475b4214e5615e11e6dd3f96e6cea2854a87d4dacc5e5581526020017f04fc6369f7110fe3d25156c1bb9a72859cf2a04641f99ba4ee413c80da6a5fe4815250905061280c8382846128076132dc565b6133ad565b9695505050505050565b806001600160a01b03163b6000036128435780604051634c9c8ce360e01b815260040161085b9190614f4a565b6000805160206158d583398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161288f919061552c565b600060405180830381855af49150503d80600081146128ca576040519150601f19603f3d011682016040523d82523d6000602084013e6128cf565b606091505b50915091506128df858383613490565b95945050505050565b3415610b585760405163b398979f60e01b815260040160405180910390fd5b6000612911611685565b54600160401b900460ff16919050565b600060008051602061587583398151915261293b836134e3565b1561294557505050565b8251602084015182600384858586098509088382830914838210848410161693505050816115b75760405162461bcd60e51b8152602060048201526017602482015276109b8c8d4d0e881a5b9d985b1a590811cc481c1bda5b9d604a1b604482015260640161085b565b6129f760405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805180820190915260608152600060208201526000805160206158f5833981519152612a268287876134f2565b81518451612a339061388b565b612a40866020015161388b565b612a4d876040015161388b565b612a5a886060015161388b565b612a67896080015161388b565b604051602001612a7c96959493929190615548565b60408051601f198184030181529190528252612a9782613900565b50612aa182613900565b6060840152612aaf82613900565b6080840152815160a0850151612ac49061388b565b604051602001612ad59291906155c7565b60408051601f198184030181529190528252612af082613900565b8352815160c0850151612b029061388b565b612b0f8660e0015161388b565b612b1d87610100015161388b565b612b2b88610120015161388b565b612b3989610140015161388b565b604051602001612b4e96959493929190615548565b60408051601f198184030181529190528252612b6982613900565b60a084015281516101a0850151612b7f90613962565b612b8d866101c00151613962565b612b9b876101e00151613962565b612ba9886102000151613962565b612bb7896102200151613962565b604051602001612bcc969594939291906155f6565b60408051601f19818403018152919052808352610240850151612bee90613962565b612bfc866102600151613962565b612c0a876102800151613962565b612c18886102a00151613962565b612c26896102c00151613962565b604051602001612c3b969594939291906155f6565b60408051601f198184030181529190528252612c5682613900565b60c08401528151610160850151612c6c9061388b565b612c7a86610180015161388b565b604051602001612c8c93929190615632565b60408051601f198184030181529190528252612ca782613900565b60e08401528251818180098282820960208601919091526040850152509195945050505050565b612d006040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b816201000003612d9457506040805160a0810182526010815260208101929092527f30641e0e92bebef818268d663bcad6dbcfd6c0149170f6d7d350b1b1fa6c1001908201527eeeb2cb5981ed45649abebde081dcff16c8601de4347e7dd1628ba2daac43b760608201527f0b5d56b77fe704e8e92338c0082f37e091126414c830e4c6922d5ac802d842d4608082015290565b816202000003612e2957506040805160a0810182526011815260208101929092527f30643640b9f82f90e83b698e5ea6179c7c05542e859533b48b9953a2f5360801908201527f1bf82deba7d74902c3708cc6e70e61f30512eca95655210e276e5858ce8f58e560608201527f244cf010c43ca87237d8b00bf9dd50c4c01c7f086bd4e8c920e75251d96f0d22608082015290565b816204000003612ebe57506040805160a0810182526012815260208101929092527f30644259cd94e7dd5045d7a27013b7fcd21c9e3b7fa75222e7bda49b729b0401908201527f19ddbcaf3a8d46c15c0176fbb5b95e4dc57088ff13f4d1bd84c6bfa57dcdc0e060608201527f036853f083780e87f8d7c71d111119c57dbe118c22d5ad707a82317466c5174c608082015290565b816208000003612f5357506040805160a0810182526013815260208101929092527f3064486657634403844b0eac78ca882cfd284341fcb0615a15cfcd17b14d8201908201527f2260e724844bca5251829353968e4915305258418357473a5c1d597f613f6cbd60608201527f06e402c0a314fb67a15cf806664ae1b722dbc0efe66e6c81d98f9924ca535321608082015290565b816210000003612fe857506040805160a0810182526014815260208101929092527f30644b6c9c4a72169e4daa317d25f04512ae15c53b34e8f5acd8e155d0a6c101908201527f26125da10a0ed06327508aba06d1e303ac616632dbed349f53422da95333785760608201527f100c332d2100895fab6473bc2c51bfca521f45cb3baca6260852a8fde26c91f3608082015290565b8160200361307b57506040805160a0810182526005815260208101929092527f2ee12bff4a2813286a8dc388cd754d9a3ef2490635eba50cb9c2e5e750800001908201527f09c532c6306b93d29678200d47c0b2a99c18d51b838eeb1d3eed4c533bb512d060608201527f2724713603bfbd790aeaf3e7df25d8e7ef8f311334905b4d8c99980cf210979d608082015290565b60405163e2ef09e560e01b815260040160405180910390fd5b919050565b6130bd60405180606001604052806000815260200160008152602001600081525090565b6130c78484613a99565b8082526130d79085908590613aed565b602082015280516130ed90859084908690613b51565b60408201529392505050565b600080613107858789613ca7565b9050613117888689898888613d93565b61312281878661409f565b98975050505050505050565b613136614ec2565b82518251146131875760405162461bcd60e51b815260206004820181905260248201527f4d534d206572726f723a206c656e67746820646f6573206e6f74206d61746368604482015260640161085b565b6131c58360008151811061319d5761319d6154b3565b6020026020010151836000815181106131b8576131b86154b3565b60200260200101516140ef565b905060015b82518110156132155761320b826132068684815181106131ec576131ec6154b3565b60200260200101518685815181106131b8576131b86154b3565b614183565b91506001016131ca565b5092915050565b60006132366000805160206158f583398151915283615675565b61101a906000805160206158f58339815191526154a0565b613256614ec2565b5060408051808201909152600181526002602082015290565b613277614ec2565b613280826134e3565b15613289575090565b60405180604001604052808360000151815260200160008051602061587583398151915284602001516132bc9190615675565b6132d4906000805160206158758339815191526154a0565b905292915050565b6133076040518060800160405280600081526020016000815260200160008152602001600081525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b60008060006040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e08201526020850151610100820152845161012082015260608501516101408201526040850151610160820152602060006101808360085afa9150506000519150806134825760405162461bcd60e51b815260206004820152601c60248201527b426e3235343a2050616972696e6720636865636b206661696c65642160201b604482015260640161085b565b50151590505b949350505050565b6060826134a5576134a08261421e565b6120ab565b81511580156134bc57506001600160a01b0384163b155b156134dc5783604051639996b31560e01b815260040161085b9190614f4a565b50806120ab565b80516020909101511590151690565b825160fe9061352d61350383613962565b60405160200161351591815260200190565b60405160208183030381529060405260006004614247565b61356761353d8660000151613962565b60405160200161354f91815260200190565b60405160208183030381529060405260006008614247565b61357761353d8760200151613962565b60405160200161358a9493929190615697565b60408051601f198184030181529190528085526135a76001613962565b6135be600080516020615995833981519152613962565b6135d5600080516020615935833981519152613962565b6135ec600080516020615975833981519152613962565b6136036000805160206158b5833981519152613962565b604051602001613618969594939291906155f6565b60408051601f1981840301815291905280855260e08401516136399061388b565b61364785610100015161388b565b61365586610120015161388b565b61366387610140015161388b565b61367188610160015161388b565b61367f89610180015161388b565b61368d8a6101e0015161388b565b6040516020016136a49897969594939291906156ee565b60408051601f198184030181529190528085526102008401516136c69061388b565b6136d485610220015161388b565b6136e286610240015161388b565b6136f0876101a0015161388b565b6136fe886101c0015161388b565b61370c89610260015161388b565b6040516020016137229796959493929190615793565b60408051601f198184030181529181528186528401516137419061388b565b61374e856060015161388b565b61375b866080015161388b565b6137688760a0015161388b565b6137758860c0015161388b565b60405160200161378a96959493929190615548565b60408051601f1981840301815291905280855282516137c19084906000906137b4576137b46154b3565b6020026020010151613962565b6137d7846001815181106137b4576137b46154b3565b6137ed856002815181106137b4576137b46154b3565b613803866003815181106137b4576137b46154b3565b613819876004815181106137b4576137b46154b3565b61382f886005815181106137b4576137b46154b3565b613845896006815181106137b4576137b46154b3565b61385b8a6007815181106137b4576137b46154b3565b60405160200161387399989796959493929190615825565b60408051601f19818403018152919052909352505050565b60606000613898836134e3565b156138a457600160fe1b175b602083015160008051602061587583398151915260019190911b106138ca5750600160ff1b5b82516138d7908217613962565b6040516020016138e991815260200190565b604051602081830303815290604052915050919050565b602080820151825180516040518381526000948594939291908101855b83811015613937576020818601810151838301520161391d565b5050602091820190209086018190529250600061280c6000805160206158f583398151915285615675565b60008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008827fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010827dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1916901c1790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020827bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1916901c1790506040816001600160401b03600160801b03600160c01b0316901b6040826001600160401b03600160801b03600160c01b031916901c179050608081901b608082901c179050919050565b81516000906000805160206158f583398151915290838015613add5784935060005b82811015613ad157838586099450600101613abb565b50600184039350613ae4565b6001830393505b50505092915050565b600081600003613aff575060006120ab565b60408401516000805160206158f583398151915290600090828186099050858015613b2f57600187039250613b36565b6001840392505b50613b4082614354565b915082828209979650505050505050565b600081600003613b6357506000613488565b835160408601516000805160206158f58339815191529190600090819081908180613b8e8d886143fa565b90506000876001600160401b03811115613baa57613baa614f5e565b604051908082528060200260200182016040528015613bd3578160200160208202803683370190505b509050888b850993506001925060005b88811015613c1857602081026020840101519550898d878c030896508987850960208281028401018890529350600101613be3565b50613c2283614354565b925060005b88811015613c955760208102602084010151955089868609975089848909975060005b89811015613c7457808214613c6c576020810260208401015197508a888a0998505b600101613c4a565b506020810260208f010151955089868909975089888c089a50600101613c27565b50505050505050505050949350505050565b6000806000805160206158f58339815191529050600083602001519050600084604001519050600060019050606088015160808901516101a08901516102408a0151878889838709858501088609945050506101c08901516102608a0151878889838709858501088609945050506101e08901516102808a0151878889838709858501088609945050506102008901516102a08a01518788898387098585010886099450505061022089015191506102c0890151868782898587080985099350505050875160208901518586868309870385089650508485838309860387089998505050505050505050565b613da18686868685876144bf565b60c085015182516000805160206158f583398151915291908190819086906014908110613dd057613dd06154b3565b602002602001018181525050856000015184601481518110613df457613df46154b3565b60200260200101819052508282820990508085601581518110613e1957613e196154b3565b602002602001018181525050856020015184601581518110613e3d57613e3d6154b3565b60200260200101819052508282820990508085601681518110613e6257613e626154b3565b602002602001018181525050856040015184601681518110613e8657613e866154b3565b60200260200101819052508282820990508085601781518110613eab57613eab6154b3565b602002602001018181525050856060015184601781518110613ecf57613ecf6154b3565b60200260200101819052508282820990508085601881518110613ef457613ef46154b3565b602002602001018181525050856080015184601881518110613f1857613f186154b3565b60200260200101819052508282820990508085601981518110613f3d57613f3d6154b3565b602002602001018181525050886040015184601981518110613f6157613f616154b3565b60200260200101819052508282820990508085601a81518110613f8657613f866154b3565b602002602001018181525050886060015184601a81518110613faa57613faa6154b3565b60200260200101819052508282820990508085601b81518110613fcf57613fcf6154b3565b602002602001018181525050886080015184601b81518110613ff357613ff36154b3565b60200260200101819052508282820990508085601c81518110614018576140186154b3565b6020026020010181815250508860a0015184601c8151811061403c5761403c6154b3565b60200260200101819052508282820990508760e0015185601d81518110614065576140656154b3565b6020026020010181815250508560a0015184601d81518110614089576140896154b3565b6020026020010181905250505050505050505050565b6000805160206158f58339815191528381039060005b600a8110156140e65760206015820102840151602082026101a00186015183848284098608945050506001016140b5565b50509392505050565b6140f7614ec2565b6140ff614edc565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa9050808061413157600080fd5b508061417b5760405162461bcd60e51b8152602060048201526019602482015278426e3235343a207363616c6172206d756c206661696c65642160381b604482015260640161085b565b505092915050565b61418b614ec2565b614193614efa565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa905080806141d057600080fd5b508061417b5760405162461bcd60e51b815260206004820152601d60248201527f426e3235343a2067726f7570206164646974696f6e206661696c656421000000604482015260640161085b565b80511561422e5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60608161425581601f615519565b10156142945760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015260640161085b565b61429e8284615519565b845110156142e25760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015260640161085b565b606082158015614301576040519150600082526020820160405261434b565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561433a578051835260209283019201614322565b5050858452601f01601f1916604052505b50949350505050565b60008060006000805160206158f5833981519152905060405160208152602080820152602060408201528460608201526002820360808201528160a08201526020600060c08360055afa9250506000519250816143f35760405162461bcd60e51b815260206004820152601d60248201527f426e3235343a20706f7720707265636f6d70696c65206661696c656421000000604482015260640161085b565b5050919050565b6060826020015182111561442157604051638c5e11f160e01b815260040160405180910390fd5b606083015160016000805160206158f5833981519152846001600160401b0381111561444f5761444f614f5e565b604051908082528060200260200182016040528015614478578160200160208202803683370190505b50935084151915613ae45760208401856020028101600182526020820191505b808210156144b457828585099350838252602082019150614498565b505050505092915050565b6000806000806000806000805160206158f583398151915290508060208b015160208d01510995508a5193508060a08c015160608d0151099250806101a08a0151840891508060808c0151830891508084830993508060008051602061599583398151915284099150806101c08a0151830891508060808c0151830891508084830993508060008051602061593583398151915284099150806101e08a0151830891508060808c0151830891508084830993508060008051602061597583398151915284099150806102008a0151830891508060808c015183089150808483099350806000805160206158b583398151915284099150806102208a0151830891508060808c0151830891508084830993508084870895508860a00151886000815181106145ee576145ee6154b3565b6020026020010181905250858760008151811061460d5761460d6154b3565b6020026020010181815250508060608c01518c51099450806102c08a015186099450806102408a015160608d0151099250806101a08a0151840892508060808c015184089250808386099450806102608a015160608d0151099250806101c08a0151840892508060808c015184089250808386099450806102808a015160608d0151099250806101e08a0151840892508060808c015184089250808386099450806102a08a015160608d0151099250806102008a0151840892508060808c0151840892508083860994508b60c00151886001815181106146ef576146ef6154b3565b602090810291909101015261470485826154a0565b87600181518110614717576147176154b3565b602002602001018181525050886101a001518760028151811061473c5761473c6154b3565b602002602001018181525050886101c0015187600381518110614761576147616154b3565b602002602001018181525050886101e0015187600481518110614786576147866154b3565b602002602001018181525050886102000151876005815181106147ab576147ab6154b3565b6020026020010181815250508b60e00151886002815181106147cf576147cf6154b3565b60200260200101819052508b6101000151886003815181106147f3576147f36154b3565b60200260200101819052508b610120015188600481518110614817576148176154b3565b60200260200101819052508b61014001518860058151811061483b5761483b6154b3565b6020026020010181905250806101c08a01516101a08b0151099250828760068151811061486a5761486a6154b3565b6020026020010181815250508b61016001518860068151811061488f5761488f6154b3565b6020026020010181905250806102008a01516101e08b015109925082876007815181106148be576148be6154b3565b6020026020010181815250508b6101800151886007815181106148e3576148e36154b3565b60200260200101819052506101a08901519250808384099150808283099150808284099250828760088151811061491c5761491c6154b3565b6020026020010181815250508b6101e0015188600881518110614941576149416154b3565b60200260200101819052506101c08901519250808384099150808283099150808284099250828760098151811061497a5761497a6154b3565b6020026020010181815250508b61020001518860098151811061499f5761499f6154b3565b60200260200101819052506101e089015192508083840991508082830991508082840992508287600a815181106149d8576149d86154b3565b6020026020010181815250508b610220015188600a815181106149fd576149fd6154b3565b602002602001018190525061020089015192508083840991508082830991508082840992508287600b81518110614a3657614a366154b3565b6020026020010181815250508b610240015188600b81518110614a5b57614a5b6154b3565b602002602001018190525088610220015181614a7791906154a0565b87600c81518110614a8a57614a8a6154b3565b6020026020010181815250508b6101a0015188600c81518110614aaf57614aaf6154b3565b6020026020010181905250600187600d81518110614acf57614acf6154b3565b6020026020010181815250508b6101c0015188600d81518110614af457614af46154b3565b6020026020010181905250806101c08a01516101a08b0151099250806101e08a015184099250806102008a015184099250806102208a0151840992508287600e81518110614b4457614b446154b3565b6020026020010181815250508b610260015188600e81518110614b6957614b696154b3565b60209081029190910101528951614b8090826154a0565b87600f81518110614b9357614b936154b3565b6020026020010181815250508860c0015188600f81518110614bb757614bb76154b3565b60200260200101819052508060018b510860a08c0151909350819080099150808284099250808360206010028901510991508187601081518110614bfd57614bfd6154b3565b6020026020010181815250508860e0015188601081518110614c2157614c216154b3565b6020026020010181905250808360206011028901510991508187601181518110614c4d57614c4d6154b3565b60200260200101818152505088610100015188601181518110614c7257614c726154b3565b6020026020010181905250808360206012028901510991508187601281518110614c9e57614c9e6154b3565b60200260200101818152505088610120015188601281518110614cc357614cc36154b3565b6020026020010181905250808360206013028901510991508187601381518110614cef57614cef6154b3565b60200260200101818152505088610140015188601381518110614d1457614d146154b3565b6020026020010181905250505050505050505050505050565b60405180610100016040528060006001600160401b0316815260200160006001600160401b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040518061028001604052806000815260200160008152602001614da6614ec2565b8152602001614db3614ec2565b8152602001614dc0614ec2565b8152602001614dcd614ec2565b8152602001614dda614ec2565b8152602001614de7614ec2565b8152602001614df4614ec2565b8152602001614e01614ec2565b8152602001614e0e614ec2565b8152602001614e1b614ec2565b8152602001614e28614ec2565b8152602001614e35614ec2565b8152602001614e42614ec2565b8152602001614e4f614ec2565b8152602001614e5c614ec2565b8152602001614e69614ec2565b8152602001614e76614ec2565b8152602001614e83614ec2565b905290565b604051806101000160405280600081526020016000815260200160008152602001600081526020016060815260200160608152602001614e765b604051806040016040528060008152602001600081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b80356001600160a01b038116811461309457600080fd5b600060208284031215614f4157600080fd5b6120ab82614f18565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b6040516102e081016001600160401b0381118282101715614f9757614f97614f5e565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614fc557614fc5614f5e565b604052919050565b80356001600160401b038116811461309457600080fd5b6000610100808385031215614ff857600080fd5b604051908101906001600160401b038211818310171561501a5761501a614f5e565b8160405280925061502a84614fcd565b815261503860208501614fcd565b602082015260408401356040820152606084013560608201526080840135608082015260a084013560a082015260c084013560c082015260e084013560e0820152505092915050565b60006040828403121561509357600080fd5b604080519081016001600160401b03811182821017156150b5576150b5614f5e565b604052823581526020928301359281019290925250919050565b6000808284036105808112156150e457600080fd5b6150ee8585614fe4565b92506101006104808060ff198401121561510757600080fd5b61510f614f74565b925061511d87838801615081565b835261014061512e88828901615081565b602085015261018061514289828a01615081565b60408601526101c06151568a828b01615081565b606087015261020061516a8b828c01615081565b608088015261024061517e8c828d01615081565b60a08901526102806151928d828e01615081565b60c08a01526102c06151a68e828f01615081565b60e08b01526151b98e6103008f01615081565b898b01526151cb8e6103408f01615081565b6101208b01526151df8e6103808f01615081565b878b01526151f18e6103c08f01615081565b6101608b01526152058e6104008f01615081565b868b01526104408d01356101a08b01526104608d0135858b0152878d01356101e08b01526104a08d0135848b01526104c08d01356102208b01526104e08d0135838b01526105008d01356102608b01526105208d0135828b01526105408d01356102a08b01526105608d0135818b0152505050505050505050809150509250929050565b6000806040838503121561529c57600080fd5b6152a583614f18565b91506020838101356001600160401b03808211156152c257600080fd5b818601915086601f8301126152d657600080fd5b8135818111156152e8576152e8614f5e565b6152fa601f8201601f19168501614f9d565b9150808252878482850101111561531057600080fd5b80848401858401376000848284010152508093505050509250929050565b6001600160401b0391909116815260200190565b803563ffffffff8116811461309457600080fd5b60006020828403121561536857600080fd5b6120ab82615342565b60006020828403121561538357600080fd5b5035919050565b600080600061014084860312156153a057600080fd5b6153aa8585614fe4565b92506153b96101008501615342565b91506153c86101208501614f18565b90509250925092565b600061010082840312156153e457600080fd5b6120ab8383614fe4565b60005b838110156154095781810151838201526020016153f1565b50506000910152565b60208152600082518060208401526154318160408501602087016153ee565b601f01601f19169190910160400192915050565b6000806040838503121561545857600080fd5b50508035926020909101359150565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821602808216919082811461417b5761417b615467565b8181038181111561101a5761101a615467565b634e487b7160e01b600052603260045260246000fd5b6000816154d8576154d8615467565b506000190190565b6001600160401b0381811683821601908082111561321557613215615467565b60006020828403121561551257600080fd5b5051919050565b8082018082111561101a5761101a615467565b6000825161553e8184602087016153ee565b9190910192915050565b60008751602061555b8285838d016153ee565b88519184019161556e8184848d016153ee565b88519201916155808184848c016153ee565b87519201916155928184848b016153ee565b86519201916155a48184848a016153ee565b85519201916155b681848489016153ee565b919091019998505050505050505050565b600083516155d98184602088016153ee565b8351908301906155ed8183602088016153ee565b01949350505050565b60008751615608818460208c016153ee565b9190910195865250602085019390935260408401919091526060830152608082015260a001919050565b600084516156448184602089016153ee565b8451908301906156588183602089016153ee565b845191019061566b8183602088016153ee565b0195945050505050565b60008261569257634e487b7160e01b600052601260045260246000fd5b500690565b600085516156a9818460208a016153ee565b8551908301906156bd818360208a016153ee565b85519101906156d08183602089016153ee565b84519101906156e38183602088016153ee565b019695505050505050565b6000895160206157018285838f016153ee565b8a51918401916157148184848f016153ee565b8a519201916157268184848e016153ee565b89519201916157388184848d016153ee565b885192019161574a8184848c016153ee565b875192019161575c8184848b016153ee565b865192019161576e8184848a016153ee565b855192019161578081848489016153ee565b919091019b9a5050505050505050505050565b6000885160206157a68285838e016153ee565b8951918401916157b98184848e016153ee565b89519201916157cb8184848d016153ee565b88519201916157dd8184848c016153ee565b87519201916157ef8184848b016153ee565b86519201916158018184848a016153ee565b855192019161581381848489016153ee565b919091019a9950505050505050505050565b60008a51615837818460208f016153ee565b9190910198895250602088019690965260408701949094526060860192909252608085015260a084015260c083015260e08201526101000191905056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6882e2b91456103698adf57b799969dea1c8f739da5d8d40dd3eb9222db7c81e881360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001f3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee31ee678a0470a75a6eaa8fe837060498ba828a3703b311d0f77f010424afeb025f3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee42042a587a90c187b0a087c03e29c968b950b1db26d5c82d666905a6895790c0a2f8dd1f1a7583c42c4e12a44e110404c73ca6c94813f85835da4fb7bb1301d4aa164736f6c6343000817000a", + "nonce": "0x2", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": null, + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x2630d223087a13978413709ea1d43bea79dc16d1", + "function": "upgradeToAndCall(address,bytes)", + "arguments": [ + "0xa79d3F934469d73c96B64EFB0B0fB7A8469897fB", + "0x" + ], + "transaction": { + "from": "0x42ba5a503f27f4d1e21a5a09c9edd3ea1d273876", + "to": "0x2630d223087a13978413709ea1d43bea79dc16d1", + "gas": "0xd27e", + "value": "0x0", + "input": "0x4f1ef286000000000000000000000000a79d3f934469d73c96b64efb0b0fb7a8469897fb00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x3", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [], + "pending": [], + "returns": { + "0": { + "internal_type": "address", + "value": "0x2630D223087A13978413709ea1D43BEA79dC16d1" + } + }, + "timestamp": 1720727659, + "chain": 11155111, + "commit": "d482b424" +} \ No newline at end of file diff --git a/contracts/broadcast/UpgradeLightClient.s.sol/11155111/run-1720727923.json b/contracts/broadcast/UpgradeLightClient.s.sol/11155111/run-1720727923.json new file mode 100644 index 0000000000..6d1a7a3ace --- /dev/null +++ b/contracts/broadcast/UpgradeLightClient.s.sol/11155111/run-1720727923.json @@ -0,0 +1,131 @@ +{ + "transactions": [ + { + "hash": "0x4bd5f4c2e88dd5f176bd7cb96fdf93a11677d53de3f32531b051712ec6b5e5a9", + "transactionType": "CREATE", + "contractName": "LightClient", + "contractAddress": "0xa79d3f934469d73c96b64efb0b0fb7a8469897fb", + "function": null, + "arguments": null, + "transaction": { + "from": "0x42ba5a503f27f4d1e21a5a09c9edd3ea1d273876", + "gas": "0x640315", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516159c162000104600039600081816114320152818161145b01526115c701526159c16000f3fe6080604052600436106101525760003560e01c8063013fa5fc146101575780630d8e6e2c14610179578063313df7b1146101ab578063382b215a146101d8578063409939b7146101fc5780634847ae5d1461021c5780634f1ef2861461029e57806352d1902d146102b157806354646085146102c657806362827733146102db57806369cc6a04146102f15780637053fc5114610306578063715018a61461031b578063766718081461033057806376b6b7cb146103645780637f17baad1461037a57806382d07ff31461042d5780638584d23f146104425780638da5cb5b14610486578063a244d5961461049b578063a51e6fea146104bb578063aa922732146104db578063ad3cb1cc146104fb578063bd32519a14610539578063ca6fe8551461056a578063db13b60a14610580578063e0303301146105bf578063f0682054146105df578063f2fde38b14610611575b600080fd5b34801561016357600080fd5b50610177610172366004614f2f565b610631565b005b34801561018557600080fd5b506040805160018152600060208201819052918101919091526060015b60405180910390f35b3480156101b757600080fd5b506006546101cb906001600160a01b031681565b6040516101a29190614f4a565b3480156101e457600080fd5b506101ee60035481565b6040519081526020016101a2565b34801561020857600080fd5b506101776102173660046150cf565b6106f1565b34801561022857600080fd5b50610231610a1c565b6040516101a2919060006101008201905060018060401b038084511683528060208501511660208401525060408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b6101776102ac366004615289565b610aae565b3480156102bd57600080fd5b506101ee610acd565b3480156102d257600080fd5b506008546101ee565b3480156102e757600080fd5b506101ee60025481565b3480156102fd57600080fd5b50610177610aea565b34801561031257600080fd5b506007546101ee565b34801561032757600080fd5b50610177610b5a565b34801561033c57600080fd5b5060005461035790600160601b90046001600160401b031681565b6040516101a2919061532e565b34801561037057600080fd5b506101ee60015481565b34801561038657600080fd5b506103e7610395366004615356565b600560208190526000918252604090912080546001820154600283015460038401546004850154958501546006909501546001600160401b0380861697600160401b9096041695939492939192919088565b604080516001600160401b03998a168152989097166020890152958701949094526060860192909252608085015260a084015260c083015260e0820152610100016101a2565b34801561043957600080fd5b50610231610b6c565b34801561044e57600080fd5b5061046261045d366004615371565b610bfc565b6040805182516001600160401b0316815260209283015192810192909252016101a2565b34801561049257600080fd5b506101cb610d56565b3480156104a757600080fd5b506101776104b636600461538a565b610d71565b3480156104c757600080fd5b506101ee6104d6366004615371565b610e9c565b3480156104e757600080fd5b506101ee6104f63660046153d1565b610ebd565b34801561050757600080fd5b5061052c604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101a29190615412565b34801561054557600080fd5b5060065461055a90600160a01b900460ff1681565b60405190151581526020016101a2565b34801561057657600080fd5b506101ee60045481565b34801561058c57600080fd5b506105a061059b366004615371565b610f05565b604080516001600160401b0390931683526020830191909152016101a2565b3480156105cb57600080fd5b5061055a6105da366004615445565b610f3d565b3480156105eb57600080fd5b506000546105fc9063ffffffff1681565b60405163ffffffff90911681526020016101a2565b34801561061d57600080fd5b5061017761062c366004614f2f565b611020565b61063961105e565b6001600160a01b0381166106605760405163e6c4247b60e01b815260040160405180910390fd5b6006546001600160a01b039081169082160361068f5760405163a863aec960e01b815260040160405180910390fd5b600680546001600160a81b0319166001600160a01b0380841691909117600160a01b17918290556040517f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072926106e6921690614f4a565b60405180910390a150565b600654600160a01b900460ff16801561071557506006546001600160a01b03163314155b1561075c576006546001600160a01b0316610743576040516312e6d1e760e11b815260040160405180910390fd5b6040516301474c8f60e71b815260040160405180910390fd5b610764610b6c565b5182516001600160401b0391821691161115806107a25750610784610b6c565b602001516001600160401b031682602001516001600160401b031611155b156107c05760405163051c46ef60e01b815260040160405180910390fd5b600080546107e59063ffffffff811690600160601b90046001600160401b031661547d565b6000805463ffffffff600160401b91829004168252600560205260409091205491925090046001600160401b039081169082161480158161083b5750816001600160401b031684602001516001600160401b0316115b15610864578160405163036466bf60e31b815260040161085b919061532e565b60405180910390fd5b6108718460400151611090565b61087e8460600151611090565b61088b8460800151611090565b6108988460a00151611090565b6108a58460c00151611090565b80156108b3576108b36110ec565b6108bd8484611237565b60008054600160401b9081900463ffffffff168252600560208181526040808520895181548b850180516001600160401b039384166001600160801b0319909316929092179183169097021782558a8301805160018085019190915560608d015160028086019190915560808e0151600386015560a08e0151600486015560c08e01519785019790975560e08d01516006909401939093556007805480850182559089524360008051602061589583398151915290910155835180850185528751831681528151818701908152600880549586018155909952516000805160206159158339815191529390960292830180546001600160401b03191696831696909617909555955160008051602061595583398151915290910155925188519251935193845284169391909116917fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6910160405180910390a350505050565b610a24614d2d565b5060008054600160201b900463ffffffff1681526005602081815260409283902083516101008101855281546001600160401b038082168352600160401b90910416928101929092526001810154938201939093526002830154606082015260038301546080820152600483015460a08201529082015460c082015260069091015460e082015290565b610ab6611427565b610abf826114cc565b610ac98282611503565b5050565b6000610ad76115bc565b506000805160206158d583398151915290565b610af261105e565b600654600160a01b900460ff1615610b3f57600680546001600160a81b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c0245090600090a1565b60405163a863aec960e01b815260040160405180910390fd5b565b610b6261105e565b610b586000611605565b610b74614d2d565b506000805463ffffffff600160401b918290041682526005602081815260409384902084516101008101865281546001600160401b038082168352959004909416918401919091526001810154938301939093526002830154606083015260038301546080830152600483015460a083015282015460c082015260069091015460e082015290565b60408051808201909152600080825260208201526008805490610c206001836154a0565b81548110610c3057610c306154b3565b60009182526020909120600290910201546001600160401b03168310610c6957604051631856a49960e21b815260040160405180910390fd5b60005b81811015610cfe578360088281548110610c8857610c886154b3565b60009182526020909120600290910201546001600160401b03161115610cf65760088181548110610cbb57610cbb6154b3565b60009182526020918290206040805180820190915260029092020180546001600160401b031682526001015491810191909152949350505050565b600101610c6c565b506008610d0c6001836154a0565b81548110610d1c57610d1c6154b3565b60009182526020918290206040805180820190915260029092020180546001600160401b0316825260010154918101919091529392505050565b600080610d61611661565b546001600160a01b031692915050565b6000610d7b611685565b805490915060ff600160401b82041615906001600160401b0316600081158015610da25750825b90506000826001600160401b03166001148015610dbe5750303b155b905081158015610dcc575080155b15610dea5760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b03191660011785558315610e1357845460ff60401b1916600160401b1785555b610e1c866116a9565b610e246116ba565b60008054600160201b600160601b031916600160401b179055610e4788886116c2565b8315610e9257845460ff60401b191685556040517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290610e899060019061532e565b60405180910390a15b5050505050505050565b60078181548110610eac57600080fd5b600091825260209091200154905081565b60808082015160a083015160c0840151604080516020810194909452830191909152606082015260009101604051602081830303815290604052805190602001209050919050565b60088181548110610f1557600080fd5b6000918252602090912060029091020180546001909101546001600160401b03909116915082565b60075460009043841180610f515750600381105b15610f6f5760405163b0b4387760e01b815260040160405180910390fd5b60008080610f7e6001856154a0565b90505b81610fe9578660078281548110610f9a57610f9a6154b3565b906000526020600020015411610fcf576001915060078181548110610fc157610fc16154b3565b906000526020600020015492505b60028110610fe95780610fe1816154c9565b915050610f81565b816110075760405163b0b4387760e01b815260040160405180910390fd5b8561101284896154a0565b119450505050505b92915050565b61102861105e565b6001600160a01b038116611052576000604051631e4fbdf760e01b815260040161085b9190614f4a565b61105b81611605565b50565b33611067610d56565b6001600160a01b031614610b58573360405163118cdaa760e01b815260040161085b9190614f4a565b6000805160206158f5833981519152811080610ac95760405162461bcd60e51b815260206004820152601b60248201527a109b8c8d4d0e881a5b9d985b1a59081cd8d85b185c88199a595b19602a1b604482015260640161085b565b6000805463ffffffff600160401b9182900416825260056020818152604080852081516101008101835281546001600160401b038082168352969004909516928501929092526001820154908401526002810154606084015260038101546080840152600481015460a08401529081015460c08301526006015460e082015261117490610ebd565b600380546001908155908290556004805460025560008054600160401b810463ffffffff16825260056020526040822060060154909255929350909190600c906111cf908490600160601b90046001600160401b03166154e0565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fdb3558259e039d7e50e816b9dcce30fb114d8a9c86eca5ab14b60194d6945d3f6000600c9054906101000a90046001600160401b03166040516106e6919061532e565b60006112416119e5565b604080516008808252610120820190925291925060009190602082016101008036833701905050905060025481600081518110611280576112806154b3565b60200260200101818152505083600001516001600160401b0316816001815181106112ad576112ad6154b3565b60200260200101818152505083602001516001600160401b0316816002815181106112da576112da6154b3565b6020026020010181815250508360400151816003815181106112fe576112fe6154b3565b602002602001018181525050836060015181600481518110611322576113226154b3565b60209081029190910181019190915260008054600160401b900463ffffffff16815260059182905260409020600301548251909183918110611366576113666154b3565b60209081029190910181019190915260008054600160401b900463ffffffff168152600590915260409020600401548151829060069081106113aa576113aa6154b3565b60209081029190910181019190915260008054600160401b900463ffffffff1681526005918290526040902001548151829060079081106113ed576113ed6154b3565b602002602001018181525050611404828285611fc7565b611421576040516309bde33960e01b815260040160405180910390fd5b50505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806114ae57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114a26000805160206158d5833981519152546001600160a01b031690565b6001600160a01b031614155b15610b585760405163703e46dd60e11b815260040160405180910390fd5b6114d461105e565b7ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d816040516106e69190614f4a565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561155d575060408051601f3d908101601f1916820190925261155a91810190615500565b60015b61157c5781604051634c9c8ce360e01b815260040161085b9190614f4a565b6000805160206158d583398151915281146115ad57604051632a87526960e21b81526004810182905260240161085b565b6115b783836120b2565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b585760405163703e46dd60e11b815260040160405180910390fd5b600061160f611661565b80546001600160a01b038481166001600160a01b031983168117845560405193945091169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b6116b1612108565b61105b8161212d565b610b58612108565b81516001600160401b03161515806116e6575060208201516001600160401b031615155b806116f357506080820151155b80611700575060a0820151155b8061170d575060c0820151155b8061171a575060e0820151155b80611729575063ffffffff8116155b15611747576040516350dd03f760e11b815260040160405180910390fd5b81600560008060049054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160010155606082015181600201556080820151816003015560a0820151816004015560c0820151816005015560e0820151816006015590505081600560008060089054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160010155606082015181600201556080820151816003015560a0820151816004015560c0820151816005015560e08201518160060155905050600080600c6101000a8154816001600160401b0302191690836001600160401b03160217905550806000806101000a81548163ffffffff021916908363ffffffff160217905550600061192d83610ebd565b600181815560e08501516002818155600393909355600455600780548083018255600091825243600080516020615895833981519152909101556040805180820182526020808901516001600160401b039081168352929098015197810197885260088054948501815590925290516000805160206159158339815191529290930291820180546001600160401b03191693909116929092179091559251600080516020615955833981519152909301929092555050565b6119ed614d84565b621000008152600860208201527f20c9403133dfde9a9d382df76fb0523571648725abc0a7c12830bb690ec83b336040820151527f03a0a9acc3e3815a7ed6cb1379f7d157e6343164729376392a693acbd3ec283c6020604083015101527f2866c18ad1df10ef13542cce6250ce02cb2a6b72ae00a9852e271187e9e4e0db6060820151527f21be232a42246a5663ebf483470cca666ffe9d4f0e63b929c596a7658714e9706020606083015101527f07d77873b9860074118e75808c79468b83c8ed64ba14db5cb5afa8e534de7b996080820151527f0be0f448839080132d47de17de0099b4cd74ae1e6b71cdda06cdebb868a50c6d6020608083015101527f13bd45a023491eadea44cc3f24cfbd1796eade9c0e39ee81d9f63ea0a580662560a0820151527f18f95cdda42ce11d9d10a3b335acc214e3807c578c5359405d810c208df60093602060a083015101527f0970d978763461f09e9ec63454073497386e4d282fedc2ac5b967cb9fd3fa8a960c0820151527f28c2217f7bacf6f8b2b8ee4a90fcf8b5bca04205ea84e8e1eb54b85dd41bde28602060c083015101527f02fe3d02988db718380052970aba46a3296df5f29b736ba1f2c4ccffc8b5969360e0820151527f202c3e390cee7c5c8525da2329a19f4936f6f71ca97dde6c6fa32b382d5acc03602060e083015101527f23ac10ae6ca5cacee8744bb939aaa835390954b91ae668a2c8d0edda558a89e7610100820151527f1c8c2b856cdade256ba3237f39afd5e170a9532012f7aecae49d459b29f6f6ad602061010083015101527f16ec03d260bd7ac1c50ffa63565d5274b4582ceea52ff40b81cdfe8f444f01e4610120820151527f29392152723097e07113c3d7786d245ec40c30928015cd50b5668a4f4ea17031602061012083015101527f2cdbfb3a4053c8489b0c94e74338ac19118df7a06bc56b1eb4d0e0dc4eae7248610140820151527f07fea127dae943b8dc148f1408d40cff465c9c4721943669b1e4fd5a39db7036602061014083015101527f031455a79a2e0ce78a6cb53526ec04ac19716a86b08a93df48d178f8b77e5619610160820151527f118623e6bc136ee6d3f9907cd4ad04a9418ea03ba99ad753227cdfee598e8415602061016083015101527f0861d1997761a852226aac7ba9717bf6ae56451099be774cdf02ef352a58cbc8610180820151527f0805e392bcbc12e40a722778632d73fe981e4bc6fa6d1178b70af7be1cb9a3a3602061018083015101527f101d1e3978cb9f1e303d413144ebe67682c9eb0cfe11242959aa6029d78cdbbc6101a0820151527f089eb9c727e6cb07082bc3e6f40cf04f439fe48000602b584774dad7efc6607c60206101a083015101527f2d489f2493263aa873bcd94f21efb45bf257a61d81c0c95c3297916506653b406101c0820151527f18e45d627aadd4df2794ecd9909fac1a753f0c6fa8a9c6654a7a58b0912fffd560206101c083015101527f0e43e3a4b13cb438e2ad924614261ad0240214fa1c83fcda6a0bf779eb39ffc56101e0820151527f0eaba9f429c5f6fc3103d4cc4056c500ff42425d8e6465c5b8e145219f9c5cd360206101e083015101527f29ae351d09dcf41c0a80ab05393738358baab37e6fbc464b3bb13258994a1fa4610200820151527f2b7bc74608d7ec7dadd0597d6a4010d8bfc2b31900281901cedc42bdbb0fb8fc602061020083015101527f066802c7ceb9e913d4f65433a20661e097acac1affecbb534a54f76a29782226610220820151527f27ec80e811e636f3348267923c8e641bd98a7e37c5216670cbff14ae323f9e0e602061022083015101527f12604d1f87c583f6c9710c73eaf590af9d07aa743d1381d0e9dff0eab2614239610240820151527f1588579e6c3378ea32cb641205ef762a63cd353a0bd670394528ad2081ee8dd4602061024083015101527f247d65261d3a4ab042ba937331f6d0c0c5eb9ea78753a92084db1a6939e19e82610260820151527f2ce6cc664a32147bfe6a0c94a95bf0496679405ccae01648cd4ec021145120d56020610260830151015290565b6000611fd282612135565b611ff583600081518110611fe857611fe86154b3565b6020026020010151611090565b61200b83600181518110611fe857611fe86154b3565b61202183600281518110611fe857611fe86154b3565b61203783600381518110611fe857611fe86154b3565b61204d83600481518110611fe857611fe86154b3565b61206383600581518110611fe857611fe86154b3565b61207983600681518110611fe857611fe86154b3565b61208f83600781518110611fe857611fe86154b3565b600061209c85858561226d565b90506120a7816123b7565b9150505b9392505050565b6120bb82612816565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612100576115b78282612872565b610ac96128e8565b612110612907565b610b5857604051631afcd79f60e31b815260040160405180910390fd5b611028612108565b805161214090612921565b61214d8160200151612921565b61215a8160400151612921565b6121678160600151612921565b6121748160800151612921565b6121818160a00151612921565b61218e8160c00151612921565b61219b8160e00151612921565b6121a9816101000151612921565b6121b7816101200151612921565b6121c5816101400151612921565b6121d3816101600151612921565b6121e1816101800151612921565b6121ef816101a00151611090565b6121fd816101c00151611090565b61220b816101e00151611090565b612219816102000151611090565b612227816102200151611090565b612235816102400151611090565b612243816102600151611090565b612251816102800151611090565b61225f816102a00151611090565b61105b816102c00151611090565b612275614e88565b836020015183511461229a576040516320fa9d8960e11b815260040160405180910390fd5b60006122a78585856129af565b905060006122b88660000151612cce565b905060006122cb828460a0015188613099565b60408051601e8082526103e0820190925291925060009190602082016103c080368337505060408051601e8082526103e082019092529293506000929150602082015b612316614ec2565b81526020019060019003908161230e579050509050600061233b8a858a8987876130f9565b60a08701516060870151919250906000805160206158f5833981519152600081838509604080516101008101825260e09c8d0151815260208101969096528501525050506060810191909152608081019290925260a082015261016086015160c082015261018090950151928501929092525091949350505050565b60006000805160206158f58339815191526123d0614ec2565b6123d8614ec2565b6040805160028082526060820183526000926020830190803683375050604080516002808252606082019092529293506000929150602082015b61241a614ec2565b8152602001906001900390816124125790505090506000600190508083600081518110612449576124496154b3565b6020026020010181815250508760c001518260008151811061246d5761246d6154b3565b6020026020010181905250876000015183600181518110612490576124906154b3565b6020026020010181815250508760e00151826001815181106124b4576124b46154b3565b60200260200101819052506124c9828461312e565b60808901515190955060609350839250905060006124e8826002615519565b6124f3906001615519565b9050806001600160401b0381111561250d5761250d614f5e565b604051908082528060200260200182016040528015612536578160200160208202803683370190505b509350806001600160401b0381111561255157612551614f5e565b60405190808252806020026020018201604052801561258a57816020015b612577614ec2565b81526020019060019003908161256f5790505b509250505060008060005b89608001515181101561262e57896080015181815181106125b8576125b86154b3565b60200260200101518583815181106125d2576125d26154b3565b6020026020010181815250508960a0015181815181106125f4576125f46154b3565b602002602001015184838151811061260e5761260e6154b3565b6020908102919091010152612624600183615519565b9150600101612595565b508860200151848281518110612646576126466154b3565b6020026020010181815250508860c00151838281518110612669576126696154b3565b602090810291909101015261267f600182615519565b895160408b0151919250906000898284099050808785815181106126a5576126a56154b3565b6020026020010181815250505050508860e001518382815181106126cb576126cb6154b3565b60209081029190910101526126e1600182615519565b60608a0151909150878184089250506126f98261321c565b84828151811061270b5761270b6154b3565b60200260200101818152505061271f61324e565b838281518110612731576127316154b3565b602002602001018190525061274e612749848661312e565b61326f565b945050505050600060405180608001604052807f0118c4d5b837bcc2bc89b5b398b5974e9f5944073b32078b7e231fec938883b081526020017f260e01b251f6f1c7e7ff4e580791dee8ea51d87a358e038b4efe30fac09383c181526020017f22febda3c0c0632a56475b4214e5615e11e6dd3f96e6cea2854a87d4dacc5e5581526020017f04fc6369f7110fe3d25156c1bb9a72859cf2a04641f99ba4ee413c80da6a5fe4815250905061280c8382846128076132dc565b6133ad565b9695505050505050565b806001600160a01b03163b6000036128435780604051634c9c8ce360e01b815260040161085b9190614f4a565b6000805160206158d583398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161288f919061552c565b600060405180830381855af49150503d80600081146128ca576040519150601f19603f3d011682016040523d82523d6000602084013e6128cf565b606091505b50915091506128df858383613490565b95945050505050565b3415610b585760405163b398979f60e01b815260040160405180910390fd5b6000612911611685565b54600160401b900460ff16919050565b600060008051602061587583398151915261293b836134e3565b1561294557505050565b8251602084015182600384858586098509088382830914838210848410161693505050816115b75760405162461bcd60e51b8152602060048201526017602482015276109b8c8d4d0e881a5b9d985b1a590811cc481c1bda5b9d604a1b604482015260640161085b565b6129f760405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805180820190915260608152600060208201526000805160206158f5833981519152612a268287876134f2565b81518451612a339061388b565b612a40866020015161388b565b612a4d876040015161388b565b612a5a886060015161388b565b612a67896080015161388b565b604051602001612a7c96959493929190615548565b60408051601f198184030181529190528252612a9782613900565b50612aa182613900565b6060840152612aaf82613900565b6080840152815160a0850151612ac49061388b565b604051602001612ad59291906155c7565b60408051601f198184030181529190528252612af082613900565b8352815160c0850151612b029061388b565b612b0f8660e0015161388b565b612b1d87610100015161388b565b612b2b88610120015161388b565b612b3989610140015161388b565b604051602001612b4e96959493929190615548565b60408051601f198184030181529190528252612b6982613900565b60a084015281516101a0850151612b7f90613962565b612b8d866101c00151613962565b612b9b876101e00151613962565b612ba9886102000151613962565b612bb7896102200151613962565b604051602001612bcc969594939291906155f6565b60408051601f19818403018152919052808352610240850151612bee90613962565b612bfc866102600151613962565b612c0a876102800151613962565b612c18886102a00151613962565b612c26896102c00151613962565b604051602001612c3b969594939291906155f6565b60408051601f198184030181529190528252612c5682613900565b60c08401528151610160850151612c6c9061388b565b612c7a86610180015161388b565b604051602001612c8c93929190615632565b60408051601f198184030181529190528252612ca782613900565b60e08401528251818180098282820960208601919091526040850152509195945050505050565b612d006040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b816201000003612d9457506040805160a0810182526010815260208101929092527f30641e0e92bebef818268d663bcad6dbcfd6c0149170f6d7d350b1b1fa6c1001908201527eeeb2cb5981ed45649abebde081dcff16c8601de4347e7dd1628ba2daac43b760608201527f0b5d56b77fe704e8e92338c0082f37e091126414c830e4c6922d5ac802d842d4608082015290565b816202000003612e2957506040805160a0810182526011815260208101929092527f30643640b9f82f90e83b698e5ea6179c7c05542e859533b48b9953a2f5360801908201527f1bf82deba7d74902c3708cc6e70e61f30512eca95655210e276e5858ce8f58e560608201527f244cf010c43ca87237d8b00bf9dd50c4c01c7f086bd4e8c920e75251d96f0d22608082015290565b816204000003612ebe57506040805160a0810182526012815260208101929092527f30644259cd94e7dd5045d7a27013b7fcd21c9e3b7fa75222e7bda49b729b0401908201527f19ddbcaf3a8d46c15c0176fbb5b95e4dc57088ff13f4d1bd84c6bfa57dcdc0e060608201527f036853f083780e87f8d7c71d111119c57dbe118c22d5ad707a82317466c5174c608082015290565b816208000003612f5357506040805160a0810182526013815260208101929092527f3064486657634403844b0eac78ca882cfd284341fcb0615a15cfcd17b14d8201908201527f2260e724844bca5251829353968e4915305258418357473a5c1d597f613f6cbd60608201527f06e402c0a314fb67a15cf806664ae1b722dbc0efe66e6c81d98f9924ca535321608082015290565b816210000003612fe857506040805160a0810182526014815260208101929092527f30644b6c9c4a72169e4daa317d25f04512ae15c53b34e8f5acd8e155d0a6c101908201527f26125da10a0ed06327508aba06d1e303ac616632dbed349f53422da95333785760608201527f100c332d2100895fab6473bc2c51bfca521f45cb3baca6260852a8fde26c91f3608082015290565b8160200361307b57506040805160a0810182526005815260208101929092527f2ee12bff4a2813286a8dc388cd754d9a3ef2490635eba50cb9c2e5e750800001908201527f09c532c6306b93d29678200d47c0b2a99c18d51b838eeb1d3eed4c533bb512d060608201527f2724713603bfbd790aeaf3e7df25d8e7ef8f311334905b4d8c99980cf210979d608082015290565b60405163e2ef09e560e01b815260040160405180910390fd5b919050565b6130bd60405180606001604052806000815260200160008152602001600081525090565b6130c78484613a99565b8082526130d79085908590613aed565b602082015280516130ed90859084908690613b51565b60408201529392505050565b600080613107858789613ca7565b9050613117888689898888613d93565b61312281878661409f565b98975050505050505050565b613136614ec2565b82518251146131875760405162461bcd60e51b815260206004820181905260248201527f4d534d206572726f723a206c656e67746820646f6573206e6f74206d61746368604482015260640161085b565b6131c58360008151811061319d5761319d6154b3565b6020026020010151836000815181106131b8576131b86154b3565b60200260200101516140ef565b905060015b82518110156132155761320b826132068684815181106131ec576131ec6154b3565b60200260200101518685815181106131b8576131b86154b3565b614183565b91506001016131ca565b5092915050565b60006132366000805160206158f583398151915283615675565b61101a906000805160206158f58339815191526154a0565b613256614ec2565b5060408051808201909152600181526002602082015290565b613277614ec2565b613280826134e3565b15613289575090565b60405180604001604052808360000151815260200160008051602061587583398151915284602001516132bc9190615675565b6132d4906000805160206158758339815191526154a0565b905292915050565b6133076040518060800160405280600081526020016000815260200160008152602001600081525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b60008060006040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e08201526020850151610100820152845161012082015260608501516101408201526040850151610160820152602060006101808360085afa9150506000519150806134825760405162461bcd60e51b815260206004820152601c60248201527b426e3235343a2050616972696e6720636865636b206661696c65642160201b604482015260640161085b565b50151590505b949350505050565b6060826134a5576134a08261421e565b6120ab565b81511580156134bc57506001600160a01b0384163b155b156134dc5783604051639996b31560e01b815260040161085b9190614f4a565b50806120ab565b80516020909101511590151690565b825160fe9061352d61350383613962565b60405160200161351591815260200190565b60405160208183030381529060405260006004614247565b61356761353d8660000151613962565b60405160200161354f91815260200190565b60405160208183030381529060405260006008614247565b61357761353d8760200151613962565b60405160200161358a9493929190615697565b60408051601f198184030181529190528085526135a76001613962565b6135be600080516020615995833981519152613962565b6135d5600080516020615935833981519152613962565b6135ec600080516020615975833981519152613962565b6136036000805160206158b5833981519152613962565b604051602001613618969594939291906155f6565b60408051601f1981840301815291905280855260e08401516136399061388b565b61364785610100015161388b565b61365586610120015161388b565b61366387610140015161388b565b61367188610160015161388b565b61367f89610180015161388b565b61368d8a6101e0015161388b565b6040516020016136a49897969594939291906156ee565b60408051601f198184030181529190528085526102008401516136c69061388b565b6136d485610220015161388b565b6136e286610240015161388b565b6136f0876101a0015161388b565b6136fe886101c0015161388b565b61370c89610260015161388b565b6040516020016137229796959493929190615793565b60408051601f198184030181529181528186528401516137419061388b565b61374e856060015161388b565b61375b866080015161388b565b6137688760a0015161388b565b6137758860c0015161388b565b60405160200161378a96959493929190615548565b60408051601f1981840301815291905280855282516137c19084906000906137b4576137b46154b3565b6020026020010151613962565b6137d7846001815181106137b4576137b46154b3565b6137ed856002815181106137b4576137b46154b3565b613803866003815181106137b4576137b46154b3565b613819876004815181106137b4576137b46154b3565b61382f886005815181106137b4576137b46154b3565b613845896006815181106137b4576137b46154b3565b61385b8a6007815181106137b4576137b46154b3565b60405160200161387399989796959493929190615825565b60408051601f19818403018152919052909352505050565b60606000613898836134e3565b156138a457600160fe1b175b602083015160008051602061587583398151915260019190911b106138ca5750600160ff1b5b82516138d7908217613962565b6040516020016138e991815260200190565b604051602081830303815290604052915050919050565b602080820151825180516040518381526000948594939291908101855b83811015613937576020818601810151838301520161391d565b5050602091820190209086018190529250600061280c6000805160206158f583398151915285615675565b60008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008827fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010827dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1916901c1790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020827bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1916901c1790506040816001600160401b03600160801b03600160c01b0316901b6040826001600160401b03600160801b03600160c01b031916901c179050608081901b608082901c179050919050565b81516000906000805160206158f583398151915290838015613add5784935060005b82811015613ad157838586099450600101613abb565b50600184039350613ae4565b6001830393505b50505092915050565b600081600003613aff575060006120ab565b60408401516000805160206158f583398151915290600090828186099050858015613b2f57600187039250613b36565b6001840392505b50613b4082614354565b915082828209979650505050505050565b600081600003613b6357506000613488565b835160408601516000805160206158f58339815191529190600090819081908180613b8e8d886143fa565b90506000876001600160401b03811115613baa57613baa614f5e565b604051908082528060200260200182016040528015613bd3578160200160208202803683370190505b509050888b850993506001925060005b88811015613c1857602081026020840101519550898d878c030896508987850960208281028401018890529350600101613be3565b50613c2283614354565b925060005b88811015613c955760208102602084010151955089868609975089848909975060005b89811015613c7457808214613c6c576020810260208401015197508a888a0998505b600101613c4a565b506020810260208f010151955089868909975089888c089a50600101613c27565b50505050505050505050949350505050565b6000806000805160206158f58339815191529050600083602001519050600084604001519050600060019050606088015160808901516101a08901516102408a0151878889838709858501088609945050506101c08901516102608a0151878889838709858501088609945050506101e08901516102808a0151878889838709858501088609945050506102008901516102a08a01518788898387098585010886099450505061022089015191506102c0890151868782898587080985099350505050875160208901518586868309870385089650508485838309860387089998505050505050505050565b613da18686868685876144bf565b60c085015182516000805160206158f583398151915291908190819086906014908110613dd057613dd06154b3565b602002602001018181525050856000015184601481518110613df457613df46154b3565b60200260200101819052508282820990508085601581518110613e1957613e196154b3565b602002602001018181525050856020015184601581518110613e3d57613e3d6154b3565b60200260200101819052508282820990508085601681518110613e6257613e626154b3565b602002602001018181525050856040015184601681518110613e8657613e866154b3565b60200260200101819052508282820990508085601781518110613eab57613eab6154b3565b602002602001018181525050856060015184601781518110613ecf57613ecf6154b3565b60200260200101819052508282820990508085601881518110613ef457613ef46154b3565b602002602001018181525050856080015184601881518110613f1857613f186154b3565b60200260200101819052508282820990508085601981518110613f3d57613f3d6154b3565b602002602001018181525050886040015184601981518110613f6157613f616154b3565b60200260200101819052508282820990508085601a81518110613f8657613f866154b3565b602002602001018181525050886060015184601a81518110613faa57613faa6154b3565b60200260200101819052508282820990508085601b81518110613fcf57613fcf6154b3565b602002602001018181525050886080015184601b81518110613ff357613ff36154b3565b60200260200101819052508282820990508085601c81518110614018576140186154b3565b6020026020010181815250508860a0015184601c8151811061403c5761403c6154b3565b60200260200101819052508282820990508760e0015185601d81518110614065576140656154b3565b6020026020010181815250508560a0015184601d81518110614089576140896154b3565b6020026020010181905250505050505050505050565b6000805160206158f58339815191528381039060005b600a8110156140e65760206015820102840151602082026101a00186015183848284098608945050506001016140b5565b50509392505050565b6140f7614ec2565b6140ff614edc565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa9050808061413157600080fd5b508061417b5760405162461bcd60e51b8152602060048201526019602482015278426e3235343a207363616c6172206d756c206661696c65642160381b604482015260640161085b565b505092915050565b61418b614ec2565b614193614efa565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa905080806141d057600080fd5b508061417b5760405162461bcd60e51b815260206004820152601d60248201527f426e3235343a2067726f7570206164646974696f6e206661696c656421000000604482015260640161085b565b80511561422e5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60608161425581601f615519565b10156142945760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015260640161085b565b61429e8284615519565b845110156142e25760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015260640161085b565b606082158015614301576040519150600082526020820160405261434b565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561433a578051835260209283019201614322565b5050858452601f01601f1916604052505b50949350505050565b60008060006000805160206158f5833981519152905060405160208152602080820152602060408201528460608201526002820360808201528160a08201526020600060c08360055afa9250506000519250816143f35760405162461bcd60e51b815260206004820152601d60248201527f426e3235343a20706f7720707265636f6d70696c65206661696c656421000000604482015260640161085b565b5050919050565b6060826020015182111561442157604051638c5e11f160e01b815260040160405180910390fd5b606083015160016000805160206158f5833981519152846001600160401b0381111561444f5761444f614f5e565b604051908082528060200260200182016040528015614478578160200160208202803683370190505b50935084151915613ae45760208401856020028101600182526020820191505b808210156144b457828585099350838252602082019150614498565b505050505092915050565b6000806000806000806000805160206158f583398151915290508060208b015160208d01510995508a5193508060a08c015160608d0151099250806101a08a0151840891508060808c0151830891508084830993508060008051602061599583398151915284099150806101c08a0151830891508060808c0151830891508084830993508060008051602061593583398151915284099150806101e08a0151830891508060808c0151830891508084830993508060008051602061597583398151915284099150806102008a0151830891508060808c015183089150808483099350806000805160206158b583398151915284099150806102208a0151830891508060808c0151830891508084830993508084870895508860a00151886000815181106145ee576145ee6154b3565b6020026020010181905250858760008151811061460d5761460d6154b3565b6020026020010181815250508060608c01518c51099450806102c08a015186099450806102408a015160608d0151099250806101a08a0151840892508060808c015184089250808386099450806102608a015160608d0151099250806101c08a0151840892508060808c015184089250808386099450806102808a015160608d0151099250806101e08a0151840892508060808c015184089250808386099450806102a08a015160608d0151099250806102008a0151840892508060808c0151840892508083860994508b60c00151886001815181106146ef576146ef6154b3565b602090810291909101015261470485826154a0565b87600181518110614717576147176154b3565b602002602001018181525050886101a001518760028151811061473c5761473c6154b3565b602002602001018181525050886101c0015187600381518110614761576147616154b3565b602002602001018181525050886101e0015187600481518110614786576147866154b3565b602002602001018181525050886102000151876005815181106147ab576147ab6154b3565b6020026020010181815250508b60e00151886002815181106147cf576147cf6154b3565b60200260200101819052508b6101000151886003815181106147f3576147f36154b3565b60200260200101819052508b610120015188600481518110614817576148176154b3565b60200260200101819052508b61014001518860058151811061483b5761483b6154b3565b6020026020010181905250806101c08a01516101a08b0151099250828760068151811061486a5761486a6154b3565b6020026020010181815250508b61016001518860068151811061488f5761488f6154b3565b6020026020010181905250806102008a01516101e08b015109925082876007815181106148be576148be6154b3565b6020026020010181815250508b6101800151886007815181106148e3576148e36154b3565b60200260200101819052506101a08901519250808384099150808283099150808284099250828760088151811061491c5761491c6154b3565b6020026020010181815250508b6101e0015188600881518110614941576149416154b3565b60200260200101819052506101c08901519250808384099150808283099150808284099250828760098151811061497a5761497a6154b3565b6020026020010181815250508b61020001518860098151811061499f5761499f6154b3565b60200260200101819052506101e089015192508083840991508082830991508082840992508287600a815181106149d8576149d86154b3565b6020026020010181815250508b610220015188600a815181106149fd576149fd6154b3565b602002602001018190525061020089015192508083840991508082830991508082840992508287600b81518110614a3657614a366154b3565b6020026020010181815250508b610240015188600b81518110614a5b57614a5b6154b3565b602002602001018190525088610220015181614a7791906154a0565b87600c81518110614a8a57614a8a6154b3565b6020026020010181815250508b6101a0015188600c81518110614aaf57614aaf6154b3565b6020026020010181905250600187600d81518110614acf57614acf6154b3565b6020026020010181815250508b6101c0015188600d81518110614af457614af46154b3565b6020026020010181905250806101c08a01516101a08b0151099250806101e08a015184099250806102008a015184099250806102208a0151840992508287600e81518110614b4457614b446154b3565b6020026020010181815250508b610260015188600e81518110614b6957614b696154b3565b60209081029190910101528951614b8090826154a0565b87600f81518110614b9357614b936154b3565b6020026020010181815250508860c0015188600f81518110614bb757614bb76154b3565b60200260200101819052508060018b510860a08c0151909350819080099150808284099250808360206010028901510991508187601081518110614bfd57614bfd6154b3565b6020026020010181815250508860e0015188601081518110614c2157614c216154b3565b6020026020010181905250808360206011028901510991508187601181518110614c4d57614c4d6154b3565b60200260200101818152505088610100015188601181518110614c7257614c726154b3565b6020026020010181905250808360206012028901510991508187601281518110614c9e57614c9e6154b3565b60200260200101818152505088610120015188601281518110614cc357614cc36154b3565b6020026020010181905250808360206013028901510991508187601381518110614cef57614cef6154b3565b60200260200101818152505088610140015188601381518110614d1457614d146154b3565b6020026020010181905250505050505050505050505050565b60405180610100016040528060006001600160401b0316815260200160006001600160401b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040518061028001604052806000815260200160008152602001614da6614ec2565b8152602001614db3614ec2565b8152602001614dc0614ec2565b8152602001614dcd614ec2565b8152602001614dda614ec2565b8152602001614de7614ec2565b8152602001614df4614ec2565b8152602001614e01614ec2565b8152602001614e0e614ec2565b8152602001614e1b614ec2565b8152602001614e28614ec2565b8152602001614e35614ec2565b8152602001614e42614ec2565b8152602001614e4f614ec2565b8152602001614e5c614ec2565b8152602001614e69614ec2565b8152602001614e76614ec2565b8152602001614e83614ec2565b905290565b604051806101000160405280600081526020016000815260200160008152602001600081526020016060815260200160608152602001614e765b604051806040016040528060008152602001600081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b80356001600160a01b038116811461309457600080fd5b600060208284031215614f4157600080fd5b6120ab82614f18565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b6040516102e081016001600160401b0381118282101715614f9757614f97614f5e565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614fc557614fc5614f5e565b604052919050565b80356001600160401b038116811461309457600080fd5b6000610100808385031215614ff857600080fd5b604051908101906001600160401b038211818310171561501a5761501a614f5e565b8160405280925061502a84614fcd565b815261503860208501614fcd565b602082015260408401356040820152606084013560608201526080840135608082015260a084013560a082015260c084013560c082015260e084013560e0820152505092915050565b60006040828403121561509357600080fd5b604080519081016001600160401b03811182821017156150b5576150b5614f5e565b604052823581526020928301359281019290925250919050565b6000808284036105808112156150e457600080fd5b6150ee8585614fe4565b92506101006104808060ff198401121561510757600080fd5b61510f614f74565b925061511d87838801615081565b835261014061512e88828901615081565b602085015261018061514289828a01615081565b60408601526101c06151568a828b01615081565b606087015261020061516a8b828c01615081565b608088015261024061517e8c828d01615081565b60a08901526102806151928d828e01615081565b60c08a01526102c06151a68e828f01615081565b60e08b01526151b98e6103008f01615081565b898b01526151cb8e6103408f01615081565b6101208b01526151df8e6103808f01615081565b878b01526151f18e6103c08f01615081565b6101608b01526152058e6104008f01615081565b868b01526104408d01356101a08b01526104608d0135858b0152878d01356101e08b01526104a08d0135848b01526104c08d01356102208b01526104e08d0135838b01526105008d01356102608b01526105208d0135828b01526105408d01356102a08b01526105608d0135818b0152505050505050505050809150509250929050565b6000806040838503121561529c57600080fd5b6152a583614f18565b91506020838101356001600160401b03808211156152c257600080fd5b818601915086601f8301126152d657600080fd5b8135818111156152e8576152e8614f5e565b6152fa601f8201601f19168501614f9d565b9150808252878482850101111561531057600080fd5b80848401858401376000848284010152508093505050509250929050565b6001600160401b0391909116815260200190565b803563ffffffff8116811461309457600080fd5b60006020828403121561536857600080fd5b6120ab82615342565b60006020828403121561538357600080fd5b5035919050565b600080600061014084860312156153a057600080fd5b6153aa8585614fe4565b92506153b96101008501615342565b91506153c86101208501614f18565b90509250925092565b600061010082840312156153e457600080fd5b6120ab8383614fe4565b60005b838110156154095781810151838201526020016153f1565b50506000910152565b60208152600082518060208401526154318160408501602087016153ee565b601f01601f19169190910160400192915050565b6000806040838503121561545857600080fd5b50508035926020909101359150565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821602808216919082811461417b5761417b615467565b8181038181111561101a5761101a615467565b634e487b7160e01b600052603260045260246000fd5b6000816154d8576154d8615467565b506000190190565b6001600160401b0381811683821601908082111561321557613215615467565b60006020828403121561551257600080fd5b5051919050565b8082018082111561101a5761101a615467565b6000825161553e8184602087016153ee565b9190910192915050565b60008751602061555b8285838d016153ee565b88519184019161556e8184848d016153ee565b88519201916155808184848c016153ee565b87519201916155928184848b016153ee565b86519201916155a48184848a016153ee565b85519201916155b681848489016153ee565b919091019998505050505050505050565b600083516155d98184602088016153ee565b8351908301906155ed8183602088016153ee565b01949350505050565b60008751615608818460208c016153ee565b9190910195865250602085019390935260408401919091526060830152608082015260a001919050565b600084516156448184602089016153ee565b8451908301906156588183602089016153ee565b845191019061566b8183602088016153ee565b0195945050505050565b60008261569257634e487b7160e01b600052601260045260246000fd5b500690565b600085516156a9818460208a016153ee565b8551908301906156bd818360208a016153ee565b85519101906156d08183602089016153ee565b84519101906156e38183602088016153ee565b019695505050505050565b6000895160206157018285838f016153ee565b8a51918401916157148184848f016153ee565b8a519201916157268184848e016153ee565b89519201916157388184848d016153ee565b885192019161574a8184848c016153ee565b875192019161575c8184848b016153ee565b865192019161576e8184848a016153ee565b855192019161578081848489016153ee565b919091019b9a5050505050505050505050565b6000885160206157a68285838e016153ee565b8951918401916157b98184848e016153ee565b89519201916157cb8184848d016153ee565b88519201916157dd8184848c016153ee565b87519201916157ef8184848b016153ee565b86519201916158018184848a016153ee565b855192019161581381848489016153ee565b919091019a9950505050505050505050565b60008a51615837818460208f016153ee565b9190910198895250602088019690965260408701949094526060860192909252608085015260a084015260c083015260e08201526101000191905056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6882e2b91456103698adf57b799969dea1c8f739da5d8d40dd3eb9222db7c81e881360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001f3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee31ee678a0470a75a6eaa8fe837060498ba828a3703b311d0f77f010424afeb025f3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee42042a587a90c187b0a087c03e29c968b950b1db26d5c82d666905a6895790c0a2f8dd1f1a7583c42c4e12a44e110404c73ca6c94813f85835da4fb7bb1301d4aa164736f6c6343000817000a", + "nonce": "0x2", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x11f367ddd942b698f0e91e72c72148fc3a63d2eaa8060493a7b45e99899def73", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x2630d223087a13978413709ea1d43bea79dc16d1", + "function": "upgradeToAndCall(address,bytes)", + "arguments": [ + "0xa79d3F934469d73c96B64EFB0B0fB7A8469897fB", + "0x" + ], + "transaction": { + "from": "0x42ba5a503f27f4d1e21a5a09c9edd3ea1d273876", + "to": "0x2630d223087a13978413709ea1d43bea79dc16d1", + "gas": "0xd27e", + "value": "0x0", + "input": "0x4f1ef286000000000000000000000000a79d3f934469d73c96b64efb0b0fb7a8469897fb00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x3", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x104c0d0", + "logs": [ + { + "address": "0xa79d3f934469d73c96b64efb0b0fb7a8469897fb", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x902729cb1087fbb9475c27db8230aa5392003a0767742a950c4f0ec07f21b84d", + "blockNumber": "0x60011a", + "transactionHash": "0x4bd5f4c2e88dd5f176bd7cb96fdf93a11677d53de3f32531b051712ec6b5e5a9", + "transactionIndex": "0x53", + "logIndex": "0x91", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000004000000000000000000000000000000000000000000000000000000000000200000000000000000000000", + "type": "0x0", + "transactionHash": "0x4bd5f4c2e88dd5f176bd7cb96fdf93a11677d53de3f32531b051712ec6b5e5a9", + "transactionIndex": "0x53", + "blockHash": "0x902729cb1087fbb9475c27db8230aa5392003a0767742a950c4f0ec07f21b84d", + "blockNumber": "0x60011a", + "gasUsed": "0x4cf45c", + "effectiveGasPrice": "0xcb814287", + "from": "0x42ba5a503f27f4d1e21a5a09c9edd3ea1d273876", + "to": null, + "contractAddress": "0xa79d3f934469d73c96b64efb0b0fb7a8469897fb" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x1055935", + "logs": [ + { + "address": "0x2630d223087a13978413709ea1d43bea79dc16d1", + "topics": [ + "0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d" + ], + "data": "0x000000000000000000000000a79d3f934469d73c96b64efb0b0fb7a8469897fb", + "blockHash": "0x902729cb1087fbb9475c27db8230aa5392003a0767742a950c4f0ec07f21b84d", + "blockNumber": "0x60011a", + "transactionHash": "0x11f367ddd942b698f0e91e72c72148fc3a63d2eaa8060493a7b45e99899def73", + "transactionIndex": "0x54", + "logIndex": "0x92", + "removed": false + }, + { + "address": "0x2630d223087a13978413709ea1d43bea79dc16d1", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000a79d3f934469d73c96b64efb0b0fb7a8469897fb" + ], + "data": "0x", + "blockHash": "0x902729cb1087fbb9475c27db8230aa5392003a0767742a950c4f0ec07f21b84d", + "blockNumber": "0x60011a", + "transactionHash": "0x11f367ddd942b698f0e91e72c72148fc3a63d2eaa8060493a7b45e99899def73", + "transactionIndex": "0x54", + "logIndex": "0x93", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000020000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000040000000000000000400100000000000000000000000000000000000000000000000800002000020000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0", + "transactionHash": "0x11f367ddd942b698f0e91e72c72148fc3a63d2eaa8060493a7b45e99899def73", + "transactionIndex": "0x54", + "blockHash": "0x902729cb1087fbb9475c27db8230aa5392003a0767742a950c4f0ec07f21b84d", + "blockNumber": "0x60011a", + "gasUsed": "0x9865", + "effectiveGasPrice": "0xcb814287", + "from": "0x42ba5a503f27f4d1e21a5a09c9edd3ea1d273876", + "to": "0x2630d223087a13978413709ea1d43bea79dc16d1", + "contractAddress": null + } + ], + "libraries": [], + "pending": [], + "returns": { + "0": { + "internal_type": "address", + "value": "0x2630D223087A13978413709ea1D43BEA79dC16d1" + } + }, + "timestamp": 1720727923, + "chain": 11155111, + "commit": "d482b424" +} \ No newline at end of file diff --git a/contracts/broadcast/UpgradeLightClient.s.sol/11155111/run-latest.json b/contracts/broadcast/UpgradeLightClient.s.sol/11155111/run-latest.json new file mode 100644 index 0000000000..6d1a7a3ace --- /dev/null +++ b/contracts/broadcast/UpgradeLightClient.s.sol/11155111/run-latest.json @@ -0,0 +1,131 @@ +{ + "transactions": [ + { + "hash": "0x4bd5f4c2e88dd5f176bd7cb96fdf93a11677d53de3f32531b051712ec6b5e5a9", + "transactionType": "CREATE", + "contractName": "LightClient", + "contractAddress": "0xa79d3f934469d73c96b64efb0b0fb7a8469897fb", + "function": null, + "arguments": null, + "transaction": { + "from": "0x42ba5a503f27f4d1e21a5a09c9edd3ea1d273876", + "gas": "0x640315", + "value": "0x0", + "input": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516159c162000104600039600081816114320152818161145b01526115c701526159c16000f3fe6080604052600436106101525760003560e01c8063013fa5fc146101575780630d8e6e2c14610179578063313df7b1146101ab578063382b215a146101d8578063409939b7146101fc5780634847ae5d1461021c5780634f1ef2861461029e57806352d1902d146102b157806354646085146102c657806362827733146102db57806369cc6a04146102f15780637053fc5114610306578063715018a61461031b578063766718081461033057806376b6b7cb146103645780637f17baad1461037a57806382d07ff31461042d5780638584d23f146104425780638da5cb5b14610486578063a244d5961461049b578063a51e6fea146104bb578063aa922732146104db578063ad3cb1cc146104fb578063bd32519a14610539578063ca6fe8551461056a578063db13b60a14610580578063e0303301146105bf578063f0682054146105df578063f2fde38b14610611575b600080fd5b34801561016357600080fd5b50610177610172366004614f2f565b610631565b005b34801561018557600080fd5b506040805160018152600060208201819052918101919091526060015b60405180910390f35b3480156101b757600080fd5b506006546101cb906001600160a01b031681565b6040516101a29190614f4a565b3480156101e457600080fd5b506101ee60035481565b6040519081526020016101a2565b34801561020857600080fd5b506101776102173660046150cf565b6106f1565b34801561022857600080fd5b50610231610a1c565b6040516101a2919060006101008201905060018060401b038084511683528060208501511660208401525060408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b6101776102ac366004615289565b610aae565b3480156102bd57600080fd5b506101ee610acd565b3480156102d257600080fd5b506008546101ee565b3480156102e757600080fd5b506101ee60025481565b3480156102fd57600080fd5b50610177610aea565b34801561031257600080fd5b506007546101ee565b34801561032757600080fd5b50610177610b5a565b34801561033c57600080fd5b5060005461035790600160601b90046001600160401b031681565b6040516101a2919061532e565b34801561037057600080fd5b506101ee60015481565b34801561038657600080fd5b506103e7610395366004615356565b600560208190526000918252604090912080546001820154600283015460038401546004850154958501546006909501546001600160401b0380861697600160401b9096041695939492939192919088565b604080516001600160401b03998a168152989097166020890152958701949094526060860192909252608085015260a084015260c083015260e0820152610100016101a2565b34801561043957600080fd5b50610231610b6c565b34801561044e57600080fd5b5061046261045d366004615371565b610bfc565b6040805182516001600160401b0316815260209283015192810192909252016101a2565b34801561049257600080fd5b506101cb610d56565b3480156104a757600080fd5b506101776104b636600461538a565b610d71565b3480156104c757600080fd5b506101ee6104d6366004615371565b610e9c565b3480156104e757600080fd5b506101ee6104f63660046153d1565b610ebd565b34801561050757600080fd5b5061052c604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101a29190615412565b34801561054557600080fd5b5060065461055a90600160a01b900460ff1681565b60405190151581526020016101a2565b34801561057657600080fd5b506101ee60045481565b34801561058c57600080fd5b506105a061059b366004615371565b610f05565b604080516001600160401b0390931683526020830191909152016101a2565b3480156105cb57600080fd5b5061055a6105da366004615445565b610f3d565b3480156105eb57600080fd5b506000546105fc9063ffffffff1681565b60405163ffffffff90911681526020016101a2565b34801561061d57600080fd5b5061017761062c366004614f2f565b611020565b61063961105e565b6001600160a01b0381166106605760405163e6c4247b60e01b815260040160405180910390fd5b6006546001600160a01b039081169082160361068f5760405163a863aec960e01b815260040160405180910390fd5b600680546001600160a81b0319166001600160a01b0380841691909117600160a01b17918290556040517f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072926106e6921690614f4a565b60405180910390a150565b600654600160a01b900460ff16801561071557506006546001600160a01b03163314155b1561075c576006546001600160a01b0316610743576040516312e6d1e760e11b815260040160405180910390fd5b6040516301474c8f60e71b815260040160405180910390fd5b610764610b6c565b5182516001600160401b0391821691161115806107a25750610784610b6c565b602001516001600160401b031682602001516001600160401b031611155b156107c05760405163051c46ef60e01b815260040160405180910390fd5b600080546107e59063ffffffff811690600160601b90046001600160401b031661547d565b6000805463ffffffff600160401b91829004168252600560205260409091205491925090046001600160401b039081169082161480158161083b5750816001600160401b031684602001516001600160401b0316115b15610864578160405163036466bf60e31b815260040161085b919061532e565b60405180910390fd5b6108718460400151611090565b61087e8460600151611090565b61088b8460800151611090565b6108988460a00151611090565b6108a58460c00151611090565b80156108b3576108b36110ec565b6108bd8484611237565b60008054600160401b9081900463ffffffff168252600560208181526040808520895181548b850180516001600160401b039384166001600160801b0319909316929092179183169097021782558a8301805160018085019190915560608d015160028086019190915560808e0151600386015560a08e0151600486015560c08e01519785019790975560e08d01516006909401939093556007805480850182559089524360008051602061589583398151915290910155835180850185528751831681528151818701908152600880549586018155909952516000805160206159158339815191529390960292830180546001600160401b03191696831696909617909555955160008051602061595583398151915290910155925188519251935193845284169391909116917fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6910160405180910390a350505050565b610a24614d2d565b5060008054600160201b900463ffffffff1681526005602081815260409283902083516101008101855281546001600160401b038082168352600160401b90910416928101929092526001810154938201939093526002830154606082015260038301546080820152600483015460a08201529082015460c082015260069091015460e082015290565b610ab6611427565b610abf826114cc565b610ac98282611503565b5050565b6000610ad76115bc565b506000805160206158d583398151915290565b610af261105e565b600654600160a01b900460ff1615610b3f57600680546001600160a81b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c0245090600090a1565b60405163a863aec960e01b815260040160405180910390fd5b565b610b6261105e565b610b586000611605565b610b74614d2d565b506000805463ffffffff600160401b918290041682526005602081815260409384902084516101008101865281546001600160401b038082168352959004909416918401919091526001810154938301939093526002830154606083015260038301546080830152600483015460a083015282015460c082015260069091015460e082015290565b60408051808201909152600080825260208201526008805490610c206001836154a0565b81548110610c3057610c306154b3565b60009182526020909120600290910201546001600160401b03168310610c6957604051631856a49960e21b815260040160405180910390fd5b60005b81811015610cfe578360088281548110610c8857610c886154b3565b60009182526020909120600290910201546001600160401b03161115610cf65760088181548110610cbb57610cbb6154b3565b60009182526020918290206040805180820190915260029092020180546001600160401b031682526001015491810191909152949350505050565b600101610c6c565b506008610d0c6001836154a0565b81548110610d1c57610d1c6154b3565b60009182526020918290206040805180820190915260029092020180546001600160401b0316825260010154918101919091529392505050565b600080610d61611661565b546001600160a01b031692915050565b6000610d7b611685565b805490915060ff600160401b82041615906001600160401b0316600081158015610da25750825b90506000826001600160401b03166001148015610dbe5750303b155b905081158015610dcc575080155b15610dea5760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b03191660011785558315610e1357845460ff60401b1916600160401b1785555b610e1c866116a9565b610e246116ba565b60008054600160201b600160601b031916600160401b179055610e4788886116c2565b8315610e9257845460ff60401b191685556040517fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290610e899060019061532e565b60405180910390a15b5050505050505050565b60078181548110610eac57600080fd5b600091825260209091200154905081565b60808082015160a083015160c0840151604080516020810194909452830191909152606082015260009101604051602081830303815290604052805190602001209050919050565b60088181548110610f1557600080fd5b6000918252602090912060029091020180546001909101546001600160401b03909116915082565b60075460009043841180610f515750600381105b15610f6f5760405163b0b4387760e01b815260040160405180910390fd5b60008080610f7e6001856154a0565b90505b81610fe9578660078281548110610f9a57610f9a6154b3565b906000526020600020015411610fcf576001915060078181548110610fc157610fc16154b3565b906000526020600020015492505b60028110610fe95780610fe1816154c9565b915050610f81565b816110075760405163b0b4387760e01b815260040160405180910390fd5b8561101284896154a0565b119450505050505b92915050565b61102861105e565b6001600160a01b038116611052576000604051631e4fbdf760e01b815260040161085b9190614f4a565b61105b81611605565b50565b33611067610d56565b6001600160a01b031614610b58573360405163118cdaa760e01b815260040161085b9190614f4a565b6000805160206158f5833981519152811080610ac95760405162461bcd60e51b815260206004820152601b60248201527a109b8c8d4d0e881a5b9d985b1a59081cd8d85b185c88199a595b19602a1b604482015260640161085b565b6000805463ffffffff600160401b9182900416825260056020818152604080852081516101008101835281546001600160401b038082168352969004909516928501929092526001820154908401526002810154606084015260038101546080840152600481015460a08401529081015460c08301526006015460e082015261117490610ebd565b600380546001908155908290556004805460025560008054600160401b810463ffffffff16825260056020526040822060060154909255929350909190600c906111cf908490600160601b90046001600160401b03166154e0565b92506101000a8154816001600160401b0302191690836001600160401b031602179055507fdb3558259e039d7e50e816b9dcce30fb114d8a9c86eca5ab14b60194d6945d3f6000600c9054906101000a90046001600160401b03166040516106e6919061532e565b60006112416119e5565b604080516008808252610120820190925291925060009190602082016101008036833701905050905060025481600081518110611280576112806154b3565b60200260200101818152505083600001516001600160401b0316816001815181106112ad576112ad6154b3565b60200260200101818152505083602001516001600160401b0316816002815181106112da576112da6154b3565b6020026020010181815250508360400151816003815181106112fe576112fe6154b3565b602002602001018181525050836060015181600481518110611322576113226154b3565b60209081029190910181019190915260008054600160401b900463ffffffff16815260059182905260409020600301548251909183918110611366576113666154b3565b60209081029190910181019190915260008054600160401b900463ffffffff168152600590915260409020600401548151829060069081106113aa576113aa6154b3565b60209081029190910181019190915260008054600160401b900463ffffffff1681526005918290526040902001548151829060079081106113ed576113ed6154b3565b602002602001018181525050611404828285611fc7565b611421576040516309bde33960e01b815260040160405180910390fd5b50505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806114ae57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114a26000805160206158d5833981519152546001600160a01b031690565b6001600160a01b031614155b15610b585760405163703e46dd60e11b815260040160405180910390fd5b6114d461105e565b7ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d816040516106e69190614f4a565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561155d575060408051601f3d908101601f1916820190925261155a91810190615500565b60015b61157c5781604051634c9c8ce360e01b815260040161085b9190614f4a565b6000805160206158d583398151915281146115ad57604051632a87526960e21b81526004810182905260240161085b565b6115b783836120b2565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b585760405163703e46dd60e11b815260040160405180910390fd5b600061160f611661565b80546001600160a01b038481166001600160a01b031983168117845560405193945091169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b6116b1612108565b61105b8161212d565b610b58612108565b81516001600160401b03161515806116e6575060208201516001600160401b031615155b806116f357506080820151155b80611700575060a0820151155b8061170d575060c0820151155b8061171a575060e0820151155b80611729575063ffffffff8116155b15611747576040516350dd03f760e11b815260040160405180910390fd5b81600560008060049054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160010155606082015181600201556080820151816003015560a0820151816004015560c0820151816005015560e0820151816006015590505081600560008060089054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160010155606082015181600201556080820151816003015560a0820151816004015560c0820151816005015560e08201518160060155905050600080600c6101000a8154816001600160401b0302191690836001600160401b03160217905550806000806101000a81548163ffffffff021916908363ffffffff160217905550600061192d83610ebd565b600181815560e08501516002818155600393909355600455600780548083018255600091825243600080516020615895833981519152909101556040805180820182526020808901516001600160401b039081168352929098015197810197885260088054948501815590925290516000805160206159158339815191529290930291820180546001600160401b03191693909116929092179091559251600080516020615955833981519152909301929092555050565b6119ed614d84565b621000008152600860208201527f20c9403133dfde9a9d382df76fb0523571648725abc0a7c12830bb690ec83b336040820151527f03a0a9acc3e3815a7ed6cb1379f7d157e6343164729376392a693acbd3ec283c6020604083015101527f2866c18ad1df10ef13542cce6250ce02cb2a6b72ae00a9852e271187e9e4e0db6060820151527f21be232a42246a5663ebf483470cca666ffe9d4f0e63b929c596a7658714e9706020606083015101527f07d77873b9860074118e75808c79468b83c8ed64ba14db5cb5afa8e534de7b996080820151527f0be0f448839080132d47de17de0099b4cd74ae1e6b71cdda06cdebb868a50c6d6020608083015101527f13bd45a023491eadea44cc3f24cfbd1796eade9c0e39ee81d9f63ea0a580662560a0820151527f18f95cdda42ce11d9d10a3b335acc214e3807c578c5359405d810c208df60093602060a083015101527f0970d978763461f09e9ec63454073497386e4d282fedc2ac5b967cb9fd3fa8a960c0820151527f28c2217f7bacf6f8b2b8ee4a90fcf8b5bca04205ea84e8e1eb54b85dd41bde28602060c083015101527f02fe3d02988db718380052970aba46a3296df5f29b736ba1f2c4ccffc8b5969360e0820151527f202c3e390cee7c5c8525da2329a19f4936f6f71ca97dde6c6fa32b382d5acc03602060e083015101527f23ac10ae6ca5cacee8744bb939aaa835390954b91ae668a2c8d0edda558a89e7610100820151527f1c8c2b856cdade256ba3237f39afd5e170a9532012f7aecae49d459b29f6f6ad602061010083015101527f16ec03d260bd7ac1c50ffa63565d5274b4582ceea52ff40b81cdfe8f444f01e4610120820151527f29392152723097e07113c3d7786d245ec40c30928015cd50b5668a4f4ea17031602061012083015101527f2cdbfb3a4053c8489b0c94e74338ac19118df7a06bc56b1eb4d0e0dc4eae7248610140820151527f07fea127dae943b8dc148f1408d40cff465c9c4721943669b1e4fd5a39db7036602061014083015101527f031455a79a2e0ce78a6cb53526ec04ac19716a86b08a93df48d178f8b77e5619610160820151527f118623e6bc136ee6d3f9907cd4ad04a9418ea03ba99ad753227cdfee598e8415602061016083015101527f0861d1997761a852226aac7ba9717bf6ae56451099be774cdf02ef352a58cbc8610180820151527f0805e392bcbc12e40a722778632d73fe981e4bc6fa6d1178b70af7be1cb9a3a3602061018083015101527f101d1e3978cb9f1e303d413144ebe67682c9eb0cfe11242959aa6029d78cdbbc6101a0820151527f089eb9c727e6cb07082bc3e6f40cf04f439fe48000602b584774dad7efc6607c60206101a083015101527f2d489f2493263aa873bcd94f21efb45bf257a61d81c0c95c3297916506653b406101c0820151527f18e45d627aadd4df2794ecd9909fac1a753f0c6fa8a9c6654a7a58b0912fffd560206101c083015101527f0e43e3a4b13cb438e2ad924614261ad0240214fa1c83fcda6a0bf779eb39ffc56101e0820151527f0eaba9f429c5f6fc3103d4cc4056c500ff42425d8e6465c5b8e145219f9c5cd360206101e083015101527f29ae351d09dcf41c0a80ab05393738358baab37e6fbc464b3bb13258994a1fa4610200820151527f2b7bc74608d7ec7dadd0597d6a4010d8bfc2b31900281901cedc42bdbb0fb8fc602061020083015101527f066802c7ceb9e913d4f65433a20661e097acac1affecbb534a54f76a29782226610220820151527f27ec80e811e636f3348267923c8e641bd98a7e37c5216670cbff14ae323f9e0e602061022083015101527f12604d1f87c583f6c9710c73eaf590af9d07aa743d1381d0e9dff0eab2614239610240820151527f1588579e6c3378ea32cb641205ef762a63cd353a0bd670394528ad2081ee8dd4602061024083015101527f247d65261d3a4ab042ba937331f6d0c0c5eb9ea78753a92084db1a6939e19e82610260820151527f2ce6cc664a32147bfe6a0c94a95bf0496679405ccae01648cd4ec021145120d56020610260830151015290565b6000611fd282612135565b611ff583600081518110611fe857611fe86154b3565b6020026020010151611090565b61200b83600181518110611fe857611fe86154b3565b61202183600281518110611fe857611fe86154b3565b61203783600381518110611fe857611fe86154b3565b61204d83600481518110611fe857611fe86154b3565b61206383600581518110611fe857611fe86154b3565b61207983600681518110611fe857611fe86154b3565b61208f83600781518110611fe857611fe86154b3565b600061209c85858561226d565b90506120a7816123b7565b9150505b9392505050565b6120bb82612816565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612100576115b78282612872565b610ac96128e8565b612110612907565b610b5857604051631afcd79f60e31b815260040160405180910390fd5b611028612108565b805161214090612921565b61214d8160200151612921565b61215a8160400151612921565b6121678160600151612921565b6121748160800151612921565b6121818160a00151612921565b61218e8160c00151612921565b61219b8160e00151612921565b6121a9816101000151612921565b6121b7816101200151612921565b6121c5816101400151612921565b6121d3816101600151612921565b6121e1816101800151612921565b6121ef816101a00151611090565b6121fd816101c00151611090565b61220b816101e00151611090565b612219816102000151611090565b612227816102200151611090565b612235816102400151611090565b612243816102600151611090565b612251816102800151611090565b61225f816102a00151611090565b61105b816102c00151611090565b612275614e88565b836020015183511461229a576040516320fa9d8960e11b815260040160405180910390fd5b60006122a78585856129af565b905060006122b88660000151612cce565b905060006122cb828460a0015188613099565b60408051601e8082526103e0820190925291925060009190602082016103c080368337505060408051601e8082526103e082019092529293506000929150602082015b612316614ec2565b81526020019060019003908161230e579050509050600061233b8a858a8987876130f9565b60a08701516060870151919250906000805160206158f5833981519152600081838509604080516101008101825260e09c8d0151815260208101969096528501525050506060810191909152608081019290925260a082015261016086015160c082015261018090950151928501929092525091949350505050565b60006000805160206158f58339815191526123d0614ec2565b6123d8614ec2565b6040805160028082526060820183526000926020830190803683375050604080516002808252606082019092529293506000929150602082015b61241a614ec2565b8152602001906001900390816124125790505090506000600190508083600081518110612449576124496154b3565b6020026020010181815250508760c001518260008151811061246d5761246d6154b3565b6020026020010181905250876000015183600181518110612490576124906154b3565b6020026020010181815250508760e00151826001815181106124b4576124b46154b3565b60200260200101819052506124c9828461312e565b60808901515190955060609350839250905060006124e8826002615519565b6124f3906001615519565b9050806001600160401b0381111561250d5761250d614f5e565b604051908082528060200260200182016040528015612536578160200160208202803683370190505b509350806001600160401b0381111561255157612551614f5e565b60405190808252806020026020018201604052801561258a57816020015b612577614ec2565b81526020019060019003908161256f5790505b509250505060008060005b89608001515181101561262e57896080015181815181106125b8576125b86154b3565b60200260200101518583815181106125d2576125d26154b3565b6020026020010181815250508960a0015181815181106125f4576125f46154b3565b602002602001015184838151811061260e5761260e6154b3565b6020908102919091010152612624600183615519565b9150600101612595565b508860200151848281518110612646576126466154b3565b6020026020010181815250508860c00151838281518110612669576126696154b3565b602090810291909101015261267f600182615519565b895160408b0151919250906000898284099050808785815181106126a5576126a56154b3565b6020026020010181815250505050508860e001518382815181106126cb576126cb6154b3565b60209081029190910101526126e1600182615519565b60608a0151909150878184089250506126f98261321c565b84828151811061270b5761270b6154b3565b60200260200101818152505061271f61324e565b838281518110612731576127316154b3565b602002602001018190525061274e612749848661312e565b61326f565b945050505050600060405180608001604052807f0118c4d5b837bcc2bc89b5b398b5974e9f5944073b32078b7e231fec938883b081526020017f260e01b251f6f1c7e7ff4e580791dee8ea51d87a358e038b4efe30fac09383c181526020017f22febda3c0c0632a56475b4214e5615e11e6dd3f96e6cea2854a87d4dacc5e5581526020017f04fc6369f7110fe3d25156c1bb9a72859cf2a04641f99ba4ee413c80da6a5fe4815250905061280c8382846128076132dc565b6133ad565b9695505050505050565b806001600160a01b03163b6000036128435780604051634c9c8ce360e01b815260040161085b9190614f4a565b6000805160206158d583398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161288f919061552c565b600060405180830381855af49150503d80600081146128ca576040519150601f19603f3d011682016040523d82523d6000602084013e6128cf565b606091505b50915091506128df858383613490565b95945050505050565b3415610b585760405163b398979f60e01b815260040160405180910390fd5b6000612911611685565b54600160401b900460ff16919050565b600060008051602061587583398151915261293b836134e3565b1561294557505050565b8251602084015182600384858586098509088382830914838210848410161693505050816115b75760405162461bcd60e51b8152602060048201526017602482015276109b8c8d4d0e881a5b9d985b1a590811cc481c1bda5b9d604a1b604482015260640161085b565b6129f760405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805180820190915260608152600060208201526000805160206158f5833981519152612a268287876134f2565b81518451612a339061388b565b612a40866020015161388b565b612a4d876040015161388b565b612a5a886060015161388b565b612a67896080015161388b565b604051602001612a7c96959493929190615548565b60408051601f198184030181529190528252612a9782613900565b50612aa182613900565b6060840152612aaf82613900565b6080840152815160a0850151612ac49061388b565b604051602001612ad59291906155c7565b60408051601f198184030181529190528252612af082613900565b8352815160c0850151612b029061388b565b612b0f8660e0015161388b565b612b1d87610100015161388b565b612b2b88610120015161388b565b612b3989610140015161388b565b604051602001612b4e96959493929190615548565b60408051601f198184030181529190528252612b6982613900565b60a084015281516101a0850151612b7f90613962565b612b8d866101c00151613962565b612b9b876101e00151613962565b612ba9886102000151613962565b612bb7896102200151613962565b604051602001612bcc969594939291906155f6565b60408051601f19818403018152919052808352610240850151612bee90613962565b612bfc866102600151613962565b612c0a876102800151613962565b612c18886102a00151613962565b612c26896102c00151613962565b604051602001612c3b969594939291906155f6565b60408051601f198184030181529190528252612c5682613900565b60c08401528151610160850151612c6c9061388b565b612c7a86610180015161388b565b604051602001612c8c93929190615632565b60408051601f198184030181529190528252612ca782613900565b60e08401528251818180098282820960208601919091526040850152509195945050505050565b612d006040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b816201000003612d9457506040805160a0810182526010815260208101929092527f30641e0e92bebef818268d663bcad6dbcfd6c0149170f6d7d350b1b1fa6c1001908201527eeeb2cb5981ed45649abebde081dcff16c8601de4347e7dd1628ba2daac43b760608201527f0b5d56b77fe704e8e92338c0082f37e091126414c830e4c6922d5ac802d842d4608082015290565b816202000003612e2957506040805160a0810182526011815260208101929092527f30643640b9f82f90e83b698e5ea6179c7c05542e859533b48b9953a2f5360801908201527f1bf82deba7d74902c3708cc6e70e61f30512eca95655210e276e5858ce8f58e560608201527f244cf010c43ca87237d8b00bf9dd50c4c01c7f086bd4e8c920e75251d96f0d22608082015290565b816204000003612ebe57506040805160a0810182526012815260208101929092527f30644259cd94e7dd5045d7a27013b7fcd21c9e3b7fa75222e7bda49b729b0401908201527f19ddbcaf3a8d46c15c0176fbb5b95e4dc57088ff13f4d1bd84c6bfa57dcdc0e060608201527f036853f083780e87f8d7c71d111119c57dbe118c22d5ad707a82317466c5174c608082015290565b816208000003612f5357506040805160a0810182526013815260208101929092527f3064486657634403844b0eac78ca882cfd284341fcb0615a15cfcd17b14d8201908201527f2260e724844bca5251829353968e4915305258418357473a5c1d597f613f6cbd60608201527f06e402c0a314fb67a15cf806664ae1b722dbc0efe66e6c81d98f9924ca535321608082015290565b816210000003612fe857506040805160a0810182526014815260208101929092527f30644b6c9c4a72169e4daa317d25f04512ae15c53b34e8f5acd8e155d0a6c101908201527f26125da10a0ed06327508aba06d1e303ac616632dbed349f53422da95333785760608201527f100c332d2100895fab6473bc2c51bfca521f45cb3baca6260852a8fde26c91f3608082015290565b8160200361307b57506040805160a0810182526005815260208101929092527f2ee12bff4a2813286a8dc388cd754d9a3ef2490635eba50cb9c2e5e750800001908201527f09c532c6306b93d29678200d47c0b2a99c18d51b838eeb1d3eed4c533bb512d060608201527f2724713603bfbd790aeaf3e7df25d8e7ef8f311334905b4d8c99980cf210979d608082015290565b60405163e2ef09e560e01b815260040160405180910390fd5b919050565b6130bd60405180606001604052806000815260200160008152602001600081525090565b6130c78484613a99565b8082526130d79085908590613aed565b602082015280516130ed90859084908690613b51565b60408201529392505050565b600080613107858789613ca7565b9050613117888689898888613d93565b61312281878661409f565b98975050505050505050565b613136614ec2565b82518251146131875760405162461bcd60e51b815260206004820181905260248201527f4d534d206572726f723a206c656e67746820646f6573206e6f74206d61746368604482015260640161085b565b6131c58360008151811061319d5761319d6154b3565b6020026020010151836000815181106131b8576131b86154b3565b60200260200101516140ef565b905060015b82518110156132155761320b826132068684815181106131ec576131ec6154b3565b60200260200101518685815181106131b8576131b86154b3565b614183565b91506001016131ca565b5092915050565b60006132366000805160206158f583398151915283615675565b61101a906000805160206158f58339815191526154a0565b613256614ec2565b5060408051808201909152600181526002602082015290565b613277614ec2565b613280826134e3565b15613289575090565b60405180604001604052808360000151815260200160008051602061587583398151915284602001516132bc9190615675565b6132d4906000805160206158758339815191526154a0565b905292915050565b6133076040518060800160405280600081526020016000815260200160008152602001600081525090565b60405180608001604052807f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa81526020017f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b815250905090565b60008060006040518751815260208801516020820152602087015160408201528651606082015260608701516080820152604087015160a0820152855160c0820152602086015160e08201526020850151610100820152845161012082015260608501516101408201526040850151610160820152602060006101808360085afa9150506000519150806134825760405162461bcd60e51b815260206004820152601c60248201527b426e3235343a2050616972696e6720636865636b206661696c65642160201b604482015260640161085b565b50151590505b949350505050565b6060826134a5576134a08261421e565b6120ab565b81511580156134bc57506001600160a01b0384163b155b156134dc5783604051639996b31560e01b815260040161085b9190614f4a565b50806120ab565b80516020909101511590151690565b825160fe9061352d61350383613962565b60405160200161351591815260200190565b60405160208183030381529060405260006004614247565b61356761353d8660000151613962565b60405160200161354f91815260200190565b60405160208183030381529060405260006008614247565b61357761353d8760200151613962565b60405160200161358a9493929190615697565b60408051601f198184030181529190528085526135a76001613962565b6135be600080516020615995833981519152613962565b6135d5600080516020615935833981519152613962565b6135ec600080516020615975833981519152613962565b6136036000805160206158b5833981519152613962565b604051602001613618969594939291906155f6565b60408051601f1981840301815291905280855260e08401516136399061388b565b61364785610100015161388b565b61365586610120015161388b565b61366387610140015161388b565b61367188610160015161388b565b61367f89610180015161388b565b61368d8a6101e0015161388b565b6040516020016136a49897969594939291906156ee565b60408051601f198184030181529190528085526102008401516136c69061388b565b6136d485610220015161388b565b6136e286610240015161388b565b6136f0876101a0015161388b565b6136fe886101c0015161388b565b61370c89610260015161388b565b6040516020016137229796959493929190615793565b60408051601f198184030181529181528186528401516137419061388b565b61374e856060015161388b565b61375b866080015161388b565b6137688760a0015161388b565b6137758860c0015161388b565b60405160200161378a96959493929190615548565b60408051601f1981840301815291905280855282516137c19084906000906137b4576137b46154b3565b6020026020010151613962565b6137d7846001815181106137b4576137b46154b3565b6137ed856002815181106137b4576137b46154b3565b613803866003815181106137b4576137b46154b3565b613819876004815181106137b4576137b46154b3565b61382f886005815181106137b4576137b46154b3565b613845896006815181106137b4576137b46154b3565b61385b8a6007815181106137b4576137b46154b3565b60405160200161387399989796959493929190615825565b60408051601f19818403018152919052909352505050565b60606000613898836134e3565b156138a457600160fe1b175b602083015160008051602061587583398151915260019190911b106138ca5750600160ff1b5b82516138d7908217613962565b6040516020016138e991815260200190565b604051602081830303815290604052915050919050565b602080820151825180516040518381526000948594939291908101855b83811015613937576020818601810151838301520161391d565b5050602091820190209086018190529250600061280c6000805160206158f583398151915285615675565b60008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008827fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010827dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff1916901c1790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020827bffffffff00000000ffffffff00000000ffffffff00000000ffffffff1916901c1790506040816001600160401b03600160801b03600160c01b0316901b6040826001600160401b03600160801b03600160c01b031916901c179050608081901b608082901c179050919050565b81516000906000805160206158f583398151915290838015613add5784935060005b82811015613ad157838586099450600101613abb565b50600184039350613ae4565b6001830393505b50505092915050565b600081600003613aff575060006120ab565b60408401516000805160206158f583398151915290600090828186099050858015613b2f57600187039250613b36565b6001840392505b50613b4082614354565b915082828209979650505050505050565b600081600003613b6357506000613488565b835160408601516000805160206158f58339815191529190600090819081908180613b8e8d886143fa565b90506000876001600160401b03811115613baa57613baa614f5e565b604051908082528060200260200182016040528015613bd3578160200160208202803683370190505b509050888b850993506001925060005b88811015613c1857602081026020840101519550898d878c030896508987850960208281028401018890529350600101613be3565b50613c2283614354565b925060005b88811015613c955760208102602084010151955089868609975089848909975060005b89811015613c7457808214613c6c576020810260208401015197508a888a0998505b600101613c4a565b506020810260208f010151955089868909975089888c089a50600101613c27565b50505050505050505050949350505050565b6000806000805160206158f58339815191529050600083602001519050600084604001519050600060019050606088015160808901516101a08901516102408a0151878889838709858501088609945050506101c08901516102608a0151878889838709858501088609945050506101e08901516102808a0151878889838709858501088609945050506102008901516102a08a01518788898387098585010886099450505061022089015191506102c0890151868782898587080985099350505050875160208901518586868309870385089650508485838309860387089998505050505050505050565b613da18686868685876144bf565b60c085015182516000805160206158f583398151915291908190819086906014908110613dd057613dd06154b3565b602002602001018181525050856000015184601481518110613df457613df46154b3565b60200260200101819052508282820990508085601581518110613e1957613e196154b3565b602002602001018181525050856020015184601581518110613e3d57613e3d6154b3565b60200260200101819052508282820990508085601681518110613e6257613e626154b3565b602002602001018181525050856040015184601681518110613e8657613e866154b3565b60200260200101819052508282820990508085601781518110613eab57613eab6154b3565b602002602001018181525050856060015184601781518110613ecf57613ecf6154b3565b60200260200101819052508282820990508085601881518110613ef457613ef46154b3565b602002602001018181525050856080015184601881518110613f1857613f186154b3565b60200260200101819052508282820990508085601981518110613f3d57613f3d6154b3565b602002602001018181525050886040015184601981518110613f6157613f616154b3565b60200260200101819052508282820990508085601a81518110613f8657613f866154b3565b602002602001018181525050886060015184601a81518110613faa57613faa6154b3565b60200260200101819052508282820990508085601b81518110613fcf57613fcf6154b3565b602002602001018181525050886080015184601b81518110613ff357613ff36154b3565b60200260200101819052508282820990508085601c81518110614018576140186154b3565b6020026020010181815250508860a0015184601c8151811061403c5761403c6154b3565b60200260200101819052508282820990508760e0015185601d81518110614065576140656154b3565b6020026020010181815250508560a0015184601d81518110614089576140896154b3565b6020026020010181905250505050505050505050565b6000805160206158f58339815191528381039060005b600a8110156140e65760206015820102840151602082026101a00186015183848284098608945050506001016140b5565b50509392505050565b6140f7614ec2565b6140ff614edc565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa9050808061413157600080fd5b508061417b5760405162461bcd60e51b8152602060048201526019602482015278426e3235343a207363616c6172206d756c206661696c65642160381b604482015260640161085b565b505092915050565b61418b614ec2565b614193614efa565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa905080806141d057600080fd5b508061417b5760405162461bcd60e51b815260206004820152601d60248201527f426e3235343a2067726f7570206164646974696f6e206661696c656421000000604482015260640161085b565b80511561422e5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60608161425581601f615519565b10156142945760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015260640161085b565b61429e8284615519565b845110156142e25760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015260640161085b565b606082158015614301576040519150600082526020820160405261434b565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561433a578051835260209283019201614322565b5050858452601f01601f1916604052505b50949350505050565b60008060006000805160206158f5833981519152905060405160208152602080820152602060408201528460608201526002820360808201528160a08201526020600060c08360055afa9250506000519250816143f35760405162461bcd60e51b815260206004820152601d60248201527f426e3235343a20706f7720707265636f6d70696c65206661696c656421000000604482015260640161085b565b5050919050565b6060826020015182111561442157604051638c5e11f160e01b815260040160405180910390fd5b606083015160016000805160206158f5833981519152846001600160401b0381111561444f5761444f614f5e565b604051908082528060200260200182016040528015614478578160200160208202803683370190505b50935084151915613ae45760208401856020028101600182526020820191505b808210156144b457828585099350838252602082019150614498565b505050505092915050565b6000806000806000806000805160206158f583398151915290508060208b015160208d01510995508a5193508060a08c015160608d0151099250806101a08a0151840891508060808c0151830891508084830993508060008051602061599583398151915284099150806101c08a0151830891508060808c0151830891508084830993508060008051602061593583398151915284099150806101e08a0151830891508060808c0151830891508084830993508060008051602061597583398151915284099150806102008a0151830891508060808c015183089150808483099350806000805160206158b583398151915284099150806102208a0151830891508060808c0151830891508084830993508084870895508860a00151886000815181106145ee576145ee6154b3565b6020026020010181905250858760008151811061460d5761460d6154b3565b6020026020010181815250508060608c01518c51099450806102c08a015186099450806102408a015160608d0151099250806101a08a0151840892508060808c015184089250808386099450806102608a015160608d0151099250806101c08a0151840892508060808c015184089250808386099450806102808a015160608d0151099250806101e08a0151840892508060808c015184089250808386099450806102a08a015160608d0151099250806102008a0151840892508060808c0151840892508083860994508b60c00151886001815181106146ef576146ef6154b3565b602090810291909101015261470485826154a0565b87600181518110614717576147176154b3565b602002602001018181525050886101a001518760028151811061473c5761473c6154b3565b602002602001018181525050886101c0015187600381518110614761576147616154b3565b602002602001018181525050886101e0015187600481518110614786576147866154b3565b602002602001018181525050886102000151876005815181106147ab576147ab6154b3565b6020026020010181815250508b60e00151886002815181106147cf576147cf6154b3565b60200260200101819052508b6101000151886003815181106147f3576147f36154b3565b60200260200101819052508b610120015188600481518110614817576148176154b3565b60200260200101819052508b61014001518860058151811061483b5761483b6154b3565b6020026020010181905250806101c08a01516101a08b0151099250828760068151811061486a5761486a6154b3565b6020026020010181815250508b61016001518860068151811061488f5761488f6154b3565b6020026020010181905250806102008a01516101e08b015109925082876007815181106148be576148be6154b3565b6020026020010181815250508b6101800151886007815181106148e3576148e36154b3565b60200260200101819052506101a08901519250808384099150808283099150808284099250828760088151811061491c5761491c6154b3565b6020026020010181815250508b6101e0015188600881518110614941576149416154b3565b60200260200101819052506101c08901519250808384099150808283099150808284099250828760098151811061497a5761497a6154b3565b6020026020010181815250508b61020001518860098151811061499f5761499f6154b3565b60200260200101819052506101e089015192508083840991508082830991508082840992508287600a815181106149d8576149d86154b3565b6020026020010181815250508b610220015188600a815181106149fd576149fd6154b3565b602002602001018190525061020089015192508083840991508082830991508082840992508287600b81518110614a3657614a366154b3565b6020026020010181815250508b610240015188600b81518110614a5b57614a5b6154b3565b602002602001018190525088610220015181614a7791906154a0565b87600c81518110614a8a57614a8a6154b3565b6020026020010181815250508b6101a0015188600c81518110614aaf57614aaf6154b3565b6020026020010181905250600187600d81518110614acf57614acf6154b3565b6020026020010181815250508b6101c0015188600d81518110614af457614af46154b3565b6020026020010181905250806101c08a01516101a08b0151099250806101e08a015184099250806102008a015184099250806102208a0151840992508287600e81518110614b4457614b446154b3565b6020026020010181815250508b610260015188600e81518110614b6957614b696154b3565b60209081029190910101528951614b8090826154a0565b87600f81518110614b9357614b936154b3565b6020026020010181815250508860c0015188600f81518110614bb757614bb76154b3565b60200260200101819052508060018b510860a08c0151909350819080099150808284099250808360206010028901510991508187601081518110614bfd57614bfd6154b3565b6020026020010181815250508860e0015188601081518110614c2157614c216154b3565b6020026020010181905250808360206011028901510991508187601181518110614c4d57614c4d6154b3565b60200260200101818152505088610100015188601181518110614c7257614c726154b3565b6020026020010181905250808360206012028901510991508187601281518110614c9e57614c9e6154b3565b60200260200101818152505088610120015188601281518110614cc357614cc36154b3565b6020026020010181905250808360206013028901510991508187601381518110614cef57614cef6154b3565b60200260200101818152505088610140015188601381518110614d1457614d146154b3565b6020026020010181905250505050505050505050505050565b60405180610100016040528060006001600160401b0316815260200160006001600160401b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040518061028001604052806000815260200160008152602001614da6614ec2565b8152602001614db3614ec2565b8152602001614dc0614ec2565b8152602001614dcd614ec2565b8152602001614dda614ec2565b8152602001614de7614ec2565b8152602001614df4614ec2565b8152602001614e01614ec2565b8152602001614e0e614ec2565b8152602001614e1b614ec2565b8152602001614e28614ec2565b8152602001614e35614ec2565b8152602001614e42614ec2565b8152602001614e4f614ec2565b8152602001614e5c614ec2565b8152602001614e69614ec2565b8152602001614e76614ec2565b8152602001614e83614ec2565b905290565b604051806101000160405280600081526020016000815260200160008152602001600081526020016060815260200160608152602001614e765b604051806040016040528060008152602001600081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b80356001600160a01b038116811461309457600080fd5b600060208284031215614f4157600080fd5b6120ab82614f18565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b6040516102e081016001600160401b0381118282101715614f9757614f97614f5e565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614fc557614fc5614f5e565b604052919050565b80356001600160401b038116811461309457600080fd5b6000610100808385031215614ff857600080fd5b604051908101906001600160401b038211818310171561501a5761501a614f5e565b8160405280925061502a84614fcd565b815261503860208501614fcd565b602082015260408401356040820152606084013560608201526080840135608082015260a084013560a082015260c084013560c082015260e084013560e0820152505092915050565b60006040828403121561509357600080fd5b604080519081016001600160401b03811182821017156150b5576150b5614f5e565b604052823581526020928301359281019290925250919050565b6000808284036105808112156150e457600080fd5b6150ee8585614fe4565b92506101006104808060ff198401121561510757600080fd5b61510f614f74565b925061511d87838801615081565b835261014061512e88828901615081565b602085015261018061514289828a01615081565b60408601526101c06151568a828b01615081565b606087015261020061516a8b828c01615081565b608088015261024061517e8c828d01615081565b60a08901526102806151928d828e01615081565b60c08a01526102c06151a68e828f01615081565b60e08b01526151b98e6103008f01615081565b898b01526151cb8e6103408f01615081565b6101208b01526151df8e6103808f01615081565b878b01526151f18e6103c08f01615081565b6101608b01526152058e6104008f01615081565b868b01526104408d01356101a08b01526104608d0135858b0152878d01356101e08b01526104a08d0135848b01526104c08d01356102208b01526104e08d0135838b01526105008d01356102608b01526105208d0135828b01526105408d01356102a08b01526105608d0135818b0152505050505050505050809150509250929050565b6000806040838503121561529c57600080fd5b6152a583614f18565b91506020838101356001600160401b03808211156152c257600080fd5b818601915086601f8301126152d657600080fd5b8135818111156152e8576152e8614f5e565b6152fa601f8201601f19168501614f9d565b9150808252878482850101111561531057600080fd5b80848401858401376000848284010152508093505050509250929050565b6001600160401b0391909116815260200190565b803563ffffffff8116811461309457600080fd5b60006020828403121561536857600080fd5b6120ab82615342565b60006020828403121561538357600080fd5b5035919050565b600080600061014084860312156153a057600080fd5b6153aa8585614fe4565b92506153b96101008501615342565b91506153c86101208501614f18565b90509250925092565b600061010082840312156153e457600080fd5b6120ab8383614fe4565b60005b838110156154095781810151838201526020016153f1565b50506000910152565b60208152600082518060208401526154318160408501602087016153ee565b601f01601f19169190910160400192915050565b6000806040838503121561545857600080fd5b50508035926020909101359150565b634e487b7160e01b600052601160045260246000fd5b6001600160401b0381811683821602808216919082811461417b5761417b615467565b8181038181111561101a5761101a615467565b634e487b7160e01b600052603260045260246000fd5b6000816154d8576154d8615467565b506000190190565b6001600160401b0381811683821601908082111561321557613215615467565b60006020828403121561551257600080fd5b5051919050565b8082018082111561101a5761101a615467565b6000825161553e8184602087016153ee565b9190910192915050565b60008751602061555b8285838d016153ee565b88519184019161556e8184848d016153ee565b88519201916155808184848c016153ee565b87519201916155928184848b016153ee565b86519201916155a48184848a016153ee565b85519201916155b681848489016153ee565b919091019998505050505050505050565b600083516155d98184602088016153ee565b8351908301906155ed8183602088016153ee565b01949350505050565b60008751615608818460208c016153ee565b9190910195865250602085019390935260408401919091526060830152608082015260a001919050565b600084516156448184602089016153ee565b8451908301906156588183602089016153ee565b845191019061566b8183602088016153ee565b0195945050505050565b60008261569257634e487b7160e01b600052601260045260246000fd5b500690565b600085516156a9818460208a016153ee565b8551908301906156bd818360208a016153ee565b85519101906156d08183602089016153ee565b84519101906156e38183602088016153ee565b019695505050505050565b6000895160206157018285838f016153ee565b8a51918401916157148184848f016153ee565b8a519201916157268184848e016153ee565b89519201916157388184848d016153ee565b885192019161574a8184848c016153ee565b875192019161575c8184848b016153ee565b865192019161576e8184848a016153ee565b855192019161578081848489016153ee565b919091019b9a5050505050505050505050565b6000885160206157a68285838e016153ee565b8951918401916157b98184848e016153ee565b89519201916157cb8184848d016153ee565b88519201916157dd8184848c016153ee565b87519201916157ef8184848b016153ee565b86519201916158018184848a016153ee565b855192019161581381848489016153ee565b919091019a9950505050505050505050565b60008a51615837818460208f016153ee565b9190910198895250602088019690965260408701949094526060860192909252608085015260a084015260c083015260e08201526101000191905056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47a66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6882e2b91456103698adf57b799969dea1c8f739da5d8d40dd3eb9222db7c81e881360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001f3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee31ee678a0470a75a6eaa8fe837060498ba828a3703b311d0f77f010424afeb025f3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee42042a587a90c187b0a087c03e29c968b950b1db26d5c82d666905a6895790c0a2f8dd1f1a7583c42c4e12a44e110404c73ca6c94813f85835da4fb7bb1301d4aa164736f6c6343000817000a", + "nonce": "0x2", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x11f367ddd942b698f0e91e72c72148fc3a63d2eaa8060493a7b45e99899def73", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x2630d223087a13978413709ea1d43bea79dc16d1", + "function": "upgradeToAndCall(address,bytes)", + "arguments": [ + "0xa79d3F934469d73c96B64EFB0B0fB7A8469897fB", + "0x" + ], + "transaction": { + "from": "0x42ba5a503f27f4d1e21a5a09c9edd3ea1d273876", + "to": "0x2630d223087a13978413709ea1d43bea79dc16d1", + "gas": "0xd27e", + "value": "0x0", + "input": "0x4f1ef286000000000000000000000000a79d3f934469d73c96b64efb0b0fb7a8469897fb00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x3", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x104c0d0", + "logs": [ + { + "address": "0xa79d3f934469d73c96b64efb0b0fb7a8469897fb", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x902729cb1087fbb9475c27db8230aa5392003a0767742a950c4f0ec07f21b84d", + "blockNumber": "0x60011a", + "transactionHash": "0x4bd5f4c2e88dd5f176bd7cb96fdf93a11677d53de3f32531b051712ec6b5e5a9", + "transactionIndex": "0x53", + "logIndex": "0x91", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000004000000000000000000000000000000000000000000000000000000000000200000000000000000000000", + "type": "0x0", + "transactionHash": "0x4bd5f4c2e88dd5f176bd7cb96fdf93a11677d53de3f32531b051712ec6b5e5a9", + "transactionIndex": "0x53", + "blockHash": "0x902729cb1087fbb9475c27db8230aa5392003a0767742a950c4f0ec07f21b84d", + "blockNumber": "0x60011a", + "gasUsed": "0x4cf45c", + "effectiveGasPrice": "0xcb814287", + "from": "0x42ba5a503f27f4d1e21a5a09c9edd3ea1d273876", + "to": null, + "contractAddress": "0xa79d3f934469d73c96b64efb0b0fb7a8469897fb" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x1055935", + "logs": [ + { + "address": "0x2630d223087a13978413709ea1d43bea79dc16d1", + "topics": [ + "0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d" + ], + "data": "0x000000000000000000000000a79d3f934469d73c96b64efb0b0fb7a8469897fb", + "blockHash": "0x902729cb1087fbb9475c27db8230aa5392003a0767742a950c4f0ec07f21b84d", + "blockNumber": "0x60011a", + "transactionHash": "0x11f367ddd942b698f0e91e72c72148fc3a63d2eaa8060493a7b45e99899def73", + "transactionIndex": "0x54", + "logIndex": "0x92", + "removed": false + }, + { + "address": "0x2630d223087a13978413709ea1d43bea79dc16d1", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000a79d3f934469d73c96b64efb0b0fb7a8469897fb" + ], + "data": "0x", + "blockHash": "0x902729cb1087fbb9475c27db8230aa5392003a0767742a950c4f0ec07f21b84d", + "blockNumber": "0x60011a", + "transactionHash": "0x11f367ddd942b698f0e91e72c72148fc3a63d2eaa8060493a7b45e99899def73", + "transactionIndex": "0x54", + "logIndex": "0x93", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000400000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000020000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000040000000000000000400100000000000000000000000000000000000000000000000800002000020000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0", + "transactionHash": "0x11f367ddd942b698f0e91e72c72148fc3a63d2eaa8060493a7b45e99899def73", + "transactionIndex": "0x54", + "blockHash": "0x902729cb1087fbb9475c27db8230aa5392003a0767742a950c4f0ec07f21b84d", + "blockNumber": "0x60011a", + "gasUsed": "0x9865", + "effectiveGasPrice": "0xcb814287", + "from": "0x42ba5a503f27f4d1e21a5a09c9edd3ea1d273876", + "to": "0x2630d223087a13978413709ea1d43bea79dc16d1", + "contractAddress": null + } + ], + "libraries": [], + "pending": [], + "returns": { + "0": { + "internal_type": "address", + "value": "0x2630D223087A13978413709ea1D43BEA79dC16d1" + } + }, + "timestamp": 1720727923, + "chain": 11155111, + "commit": "d482b424" +} \ No newline at end of file diff --git a/contracts/script/README.md b/contracts/script/README.md index 2ff964e0e3..1d5707bdfd 100644 --- a/contracts/script/README.md +++ b/contracts/script/README.md @@ -21,6 +21,8 @@ file is used. 1. Select the approval process created in Step 2 1. Be sure to save `DEFENDER_SECRET` ("Team Secret key") and `DEFENDER_KEY` ("Team API Key"), that is shown at the end of this step, into the `.env` file. The keys won't be available later at a later point. +4. In the home folder of this repo, you're in a nix shell: Enter `nix-shell` in the terminal +5. If the contracts have never been compiled run, `forge build` ## Deployments @@ -194,12 +196,15 @@ forge script contracts/script/LightClient.s.sol:DeployLightClientContractScript --broadcast --legacy ``` -To Upgrade +To Upgrade (assuming it's the same LightClient.sol file being used (pre-mainnet)) ```bash -forge script contracts/script/UpgradeLightClient.s.sol:UpgradeLightClientScript $offset $mostRecentlyDeployedProxy \ +forge script contracts/script/UpgradeSameLightClient.s.sol:UpgradeLightClientScript $mnemonicOffset $mostRecentlyDeployedProxy \ --sig 'run(uint32, address)' \ --ffi \ --rpc-url https://ethereum-sepolia.publicnode.com \ --broadcast --legacy ``` + +Note: the `$mnemonicOffset` should be zero by default if address referenced by the `$MNEMONIC` in the `.env` is the +first address in that wallet. Otherwise, please specify the correct `$mnemonicOffset` diff --git a/contracts/script/UpgradeLightClientToV2.s.sol b/contracts/script/UpgradeLightClientToV2.s.sol new file mode 100644 index 0000000000..a608786212 --- /dev/null +++ b/contracts/script/UpgradeLightClientToV2.s.sol @@ -0,0 +1,41 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.19; + +import { Script } from "forge-std/Script.sol"; + +import { LightClientV2 as LCV2 } from "../test/LightClientV2.sol"; +import { LightClient as LC } from "../src/LightClient.sol"; + +contract UpgradeLightClientScript is Script { + /// @notice runs the upgrade + /// @param mostRecentlyDeployedProxy address of deployed proxy + /// @return address of the proxy + /// TODO get the most recent deployment from the devops tooling + function run(uint32 seedPhraseOffset, address mostRecentlyDeployedProxy) + external + returns (address) + { + string memory seedPhrase = vm.envString("MNEMONIC"); + (address admin,) = deriveRememberKey(seedPhrase, seedPhraseOffset); + vm.startBroadcast(admin); + address proxy = upgradeLightClient(mostRecentlyDeployedProxy, address(new LCV2())); + return proxy; + } + + /// @notice upgrades the light client contract by calling the upgrade function the + /// implementation contract via + /// the proxy + /// @param proxyAddress address of proxy + /// @param newLightClient address of new implementation + /// @return address of the proxy + function upgradeLightClient(address proxyAddress, address newLightClient) + public + returns (address) + { + LC proxy = LC(proxyAddress); //make the function call on the previous implementation + proxy.upgradeToAndCall(newLightClient, ""); //proxy address now points to the new + // implementation + vm.stopBroadcast(); + return address(proxy); + } +} diff --git a/contracts/script/UpgradeLightClient.s.sol b/contracts/script/UpgradeSameLightClient.s.sol similarity index 100% rename from contracts/script/UpgradeLightClient.s.sol rename to contracts/script/UpgradeSameLightClient.s.sol diff --git a/contracts/script/output/defenderDeployments/LightClient.sol/11155111/13.json b/contracts/script/output/defenderDeployments/LightClient.sol/11155111/13.json new file mode 100644 index 0000000000..ab4541ab01 --- /dev/null +++ b/contracts/script/output/defenderDeployments/LightClient.sol/11155111/13.json @@ -0,0 +1,8 @@ +{ + "multisig": "0xc56fA6505d10bF322e01327e22479DE78C3Bf1cE", + "newContractName": "LightClient.sol", + "proposalId": "8d347333-7e10-417e-96fd-a2b785115c58", + "proxyAddress": "0xbC781a2BCcdac8F65EF10EA85D765CA240D1789b", + "responseUrl": "https://app.safe.global/transactions/tx?safe=sep:0xc56fA6505d10bF322e01327e22479DE78C3Bf1cE&id=0xad6fe9ec8b6275b81e3a894fb87408fb77e9ad0020e40506aa189024fe28fae8", + "salt": 13 +} \ No newline at end of file diff --git a/contracts/test/LightClientUpgradeSameContract.t.sol b/contracts/test/LightClientUpgradeSameContract.t.sol new file mode 100644 index 0000000000..95d956be8f --- /dev/null +++ b/contracts/test/LightClientUpgradeSameContract.t.sol @@ -0,0 +1,88 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.0; +pragma experimental ABIEncoderV2; + +import { Test } /*, console2*/ from "forge-std/Test.sol"; +import { LightClient as LCV1 } from "../src/LightClient.sol"; +import { LightClient as LCV2 } from "../src/LightClient.sol"; +import { DeployLightClientContractScript } from "../script/LightClient.s.sol"; +import { UpgradeLightClientScript } from "../script/UpgradeSameLightClient.s.sol"; + +contract LightClientUpgradeSameContractTest is Test { + LCV1 public lcV1Proxy; + LCV2 public lcV2Proxy; + + DeployLightClientContractScript public deployer = new DeployLightClientContractScript(); + UpgradeLightClientScript public upgrader = new UpgradeLightClientScript(); + + LCV1.LightClientState public stateV1; + + address public admin; + address public proxy; + + // deploy the first implementation with its proxy + function setUp() public { + (proxy, admin, stateV1) = deployer.run(10, 5); + lcV1Proxy = LCV1(proxy); + } + + function testCorrectInitialization() public view { + assert(lcV1Proxy.blocksPerEpoch() == 10); + assert(lcV1Proxy.currentEpoch() == 0); + + assertEq(abi.encode(lcV1Proxy.getGenesisState()), abi.encode(stateV1)); + + assertEq(abi.encode(lcV1Proxy.getFinalizedState()), abi.encode(stateV1)); + + bytes32 stakeTableComm = lcV1Proxy.computeStakeTableComm(stateV1); + assertEq(lcV1Proxy.votingStakeTableCommitment(), stakeTableComm); + assertEq(lcV1Proxy.frozenStakeTableCommitment(), stakeTableComm); + assertEq(lcV1Proxy.votingThreshold(), stateV1.threshold); + assertEq(lcV1Proxy.frozenThreshold(), stateV1.threshold); + } + + // that the data remains the same after upgrading the implementation + function testUpgradeSameData() public { + // Upgrade LightClient and check that the genesis state is not changed and that the new + // field + // of the upgraded contract is set to 0 + lcV2Proxy = LCV2(upgrader.run(0, proxy)); + + assertEq(lcV2Proxy.blocksPerEpoch(), 10); + assertEq(lcV2Proxy.currentEpoch(), 0); + + LCV2.LightClientState memory expectedLightClientState = LCV2.LightClientState( + stateV1.viewNum, + stateV1.blockHeight, + stateV1.blockCommRoot, + stateV1.feeLedgerComm, + stateV1.stakeTableBlsKeyComm, + stateV1.stakeTableSchnorrKeyComm, + stateV1.stakeTableAmountComm, + stateV1.threshold + ); + + assertEq(abi.encode(lcV2Proxy.getFinalizedState()), abi.encode(expectedLightClientState)); + } + + // check that the proxy address remains the same + function testUpgradesSameProxyAddress() public { + (uint8 major, uint8 minor, uint8 patch) = lcV1Proxy.getVersion(); + assertEq(major, 1); + assertEq(minor, 0); + assertEq(patch, 0); + + //upgrade box + lcV2Proxy = LCV2(upgrader.run(0, proxy)); + assertEq(address(lcV2Proxy), address(lcV1Proxy)); + } + + function testMaliciousUpgradeFails() public { + address attacker = makeAddr("attacker"); + + //attempted upgrade as attacker will revert + vm.prank(attacker); + vm.expectRevert(); + lcV2Proxy = LCV2(upgrader.run(0, address(proxy))); + } +} diff --git a/contracts/test/LightClientUpgrade.t.sol b/contracts/test/LightClientUpgradeToV2.t.sol similarity index 98% rename from contracts/test/LightClientUpgrade.t.sol rename to contracts/test/LightClientUpgradeToV2.t.sol index 448beb5f4d..4e31d1d8f6 100644 --- a/contracts/test/LightClientUpgrade.t.sol +++ b/contracts/test/LightClientUpgradeToV2.t.sol @@ -6,9 +6,9 @@ import { Test } /*, console2*/ from "forge-std/Test.sol"; import { LightClient as LCV1 } from "../src/LightClient.sol"; import { LightClientV2 as LCV2 } from "../test/LightClientV2.sol"; import { DeployLightClientContractScript } from "../script/LightClient.s.sol"; -import { UpgradeLightClientScript } from "../script/UpgradeLightClient.s.sol"; +import { UpgradeLightClientScript } from "../script/UpgradeLightClientToV2.s.sol"; -contract LightClientUpgradeTest is Test { +contract LightClientUpgradeToV2Test is Test { LCV1 public lcV1Proxy; LCV2 public lcV2Proxy;