From e3e5ecc77e352b8d84fcb6b9247f08bbf1524f7e Mon Sep 17 00:00:00 2001 From: ConjunctiveNormalForm Date: Thu, 27 Jun 2024 14:19:24 -0400 Subject: [PATCH] revert change to V2Reactor json --- .../abis/V2DutchOrderReactor.json | 827 +----------------- 1 file changed, 1 insertion(+), 826 deletions(-) diff --git a/sdks/uniswapx-sdk/abis/V2DutchOrderReactor.json b/sdks/uniswapx-sdk/abis/V2DutchOrderReactor.json index 71397b97c..d049d918d 100644 --- a/sdks/uniswapx-sdk/abis/V2DutchOrderReactor.json +++ b/sdks/uniswapx-sdk/abis/V2DutchOrderReactor.json @@ -1,826 +1 @@ -{ - "abi": [ - { - "type": "constructor", - "inputs": [ - { - "name": "_permit2", - "type": "address", - "internalType": "contract IPermit2" - }, - { - "name": "_protocolFeeOwner", - "type": "address", - "internalType": "address" - } - ], - "stateMutability": "nonpayable" - }, - { "type": "receive", "stateMutability": "payable" }, - { - "type": "function", - "name": "execute", - "inputs": [ - { - "name": "order", - "type": "tuple", - "internalType": "struct SignedOrder", - "components": [ - { "name": "order", "type": "bytes", "internalType": "bytes" }, - { "name": "sig", "type": "bytes", "internalType": "bytes" } - ] - } - ], - "outputs": [], - "stateMutability": "payable" - }, - { - "type": "function", - "name": "executeBatch", - "inputs": [ - { - "name": "orders", - "type": "tuple[]", - "internalType": "struct SignedOrder[]", - "components": [ - { "name": "order", "type": "bytes", "internalType": "bytes" }, - { "name": "sig", "type": "bytes", "internalType": "bytes" } - ] - } - ], - "outputs": [], - "stateMutability": "payable" - }, - { - "type": "function", - "name": "executeBatchWithCallback", - "inputs": [ - { - "name": "orders", - "type": "tuple[]", - "internalType": "struct SignedOrder[]", - "components": [ - { "name": "order", "type": "bytes", "internalType": "bytes" }, - { "name": "sig", "type": "bytes", "internalType": "bytes" } - ] - }, - { "name": "callbackData", "type": "bytes", "internalType": "bytes" } - ], - "outputs": [], - "stateMutability": "payable" - }, - { - "type": "function", - "name": "executeWithCallback", - "inputs": [ - { - "name": "order", - "type": "tuple", - "internalType": "struct SignedOrder", - "components": [ - { "name": "order", "type": "bytes", "internalType": "bytes" }, - { "name": "sig", "type": "bytes", "internalType": "bytes" } - ] - }, - { "name": "callbackData", "type": "bytes", "internalType": "bytes" } - ], - "outputs": [], - "stateMutability": "payable" - }, - { - "type": "function", - "name": "feeController", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "address", - "internalType": "contract IProtocolFeeController" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "owner", - "inputs": [], - "outputs": [{ "name": "", "type": "address", "internalType": "address" }], - "stateMutability": "view" - }, - { - "type": "function", - "name": "permit2", - "inputs": [], - "outputs": [ - { "name": "", "type": "address", "internalType": "contract IPermit2" } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "setProtocolFeeController", - "inputs": [ - { - "name": "_newFeeController", - "type": "address", - "internalType": "address" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "transferOwnership", - "inputs": [ - { "name": "newOwner", "type": "address", "internalType": "address" } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "event", - "name": "Fill", - "inputs": [ - { - "name": "orderHash", - "type": "bytes32", - "indexed": true, - "internalType": "bytes32" - }, - { - "name": "filler", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "swapper", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "nonce", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "OwnershipTransferred", - "inputs": [ - { - "name": "user", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "newOwner", - "type": "address", - "indexed": true, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "ProtocolFeeControllerSet", - "inputs": [ - { - "name": "oldFeeController", - "type": "address", - "indexed": false, - "internalType": "address" - }, - { - "name": "newFeeController", - "type": "address", - "indexed": false, - "internalType": "address" - } - ], - "anonymous": false - }, - { "type": "error", "name": "DeadlineBeforeEndTime", "inputs": [] }, - { - "type": "error", - "name": "DuplicateFeeOutput", - "inputs": [ - { - "name": "duplicateToken", - "type": "address", - "internalType": "address" - } - ] - }, - { "type": "error", "name": "EndTimeBeforeStartTime", "inputs": [] }, - { - "type": "error", - "name": "FeeTooLarge", - "inputs": [ - { "name": "token", "type": "address", "internalType": "address" }, - { "name": "amount", "type": "uint256", "internalType": "uint256" }, - { "name": "recipient", "type": "address", "internalType": "address" } - ] - }, - { "type": "error", "name": "IncorrectAmounts", "inputs": [] }, - { "type": "error", "name": "InputAndOutputFees", "inputs": [] }, - { "type": "error", "name": "InvalidCosignature", "inputs": [] }, - { "type": "error", "name": "InvalidCosignerInput", "inputs": [] }, - { "type": "error", "name": "InvalidCosignerOutput", "inputs": [] }, - { - "type": "error", - "name": "InvalidFeeToken", - "inputs": [ - { "name": "feeToken", "type": "address", "internalType": "address" } - ] - }, - { "type": "error", "name": "InvalidReactor", "inputs": [] }, - { "type": "error", "name": "NativeTransferFailed", "inputs": [] }, - { "type": "error", "name": "NoExclusiveOverride", "inputs": [] } - ], - "bytecode": { - "object": "0x60a06040523480156200001157600080fd5b50604051620034bd380380620034bd8339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b6080516133a4620001196000396000818160e00152611ae701526133a46000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b436600461244e565b6101eb565b005b6100b96100c93660046124fc565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b961013936600461253e565b6104c5565b34801561014a57600080fd5b506100b96101593660046125dc565b610683565b6100b961016c366004612600565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e63660046125dc565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c5612664565b60200260200101819052506102d981610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061031990849087908790600401612867565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bbe565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff81111561038857610388612635565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d85858381811061046657610466612664565b9050602002810190610478919061292d565b6109f6565b82828151811061048f5761048f612664565b6020908102919091010152600101610449565b506104ac81610b6d565b6104b581610bbe565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e9612635565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c787878381811061046657610466612664565b8282815181106105d9576105d9612664565b60209081029190910101526001016105aa565b506105f681610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061063690849088908890600401612867565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bbe565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b8160008151811061086957610869612664565b602002602001018190525061087d81610b6d565b61088681610bbe565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f838061296b565b810190610a7c9190612daa565b90506000610a8982610d11565b9050610a958183610f43565b610a9e82611142565b6040805160a081018252835181526080840151805160209182015193860151929391840192610acf929091906112a2565b81526080840151805160209182015160608701519290930192610af3929190611374565b8152602001858060200190610b08919061296b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001829052608083015160408101518151606090920151929550610b669286929061145b565b5050919050565b805160005b8181101561035f576000838281518110610b8e57610b8e612664565b60200260200101519050610ba1816114fc565b610bab81336119ec565b610bb58133611ae5565b50600101610b72565b805160005b81811015610d00576000838281518110610bdf57610bdf612664565b602002602001015190506000816040015151905060005b81811015610c6057600083604001518281518110610c1657610c16612664565b60200260200101519050610c5781604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611e279092919063ffffffff16565b50600101610bf6565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610ca957610ca9612664565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610cee91815260200190565b60405180910390a45050600101610bc3565b5047156104c1576104c13347611e6e565b6040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260009060b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260808301909152605280835290919061326260208301396040518060c00160405280608d81526020016132e2608d9139604051602001610e9193929190612ea7565b60405160208183030381529060405280519060200120610eb48360000151611f08565b6020808501516040808701518051938101519101516060880151929392610eda90611fa2565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff938416606087015292909116608085015260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b6080810151602001518151606001511015610f8a576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808260a00151806020019051810190610fa59190612eea565b9150915060008360a00151604081518110610fc257610fc2612664565b602001015160f81c60f81b60f81c905060006001868660800151604051602001610fec9190612f0e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526110289291602001612f9e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600084529083018083525260ff851690820152606081018690526080810185905260a0016020604051602081039080840390855afa1580156110a4573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff16141580611103575073ffffffffffffffffffffffffffffffffffffffff8116155b1561113a576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6080808201510151156111ab578060400151602001518160800151608001511115611199576040517fac9143e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808082015101516040820151602001525b806060015151816080015160a0015151146111f2576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8160600151518110156104c15760008260600151828151811061121a5761121a612664565b602002602001015190506000836080015160a00151838151811061124057611240612664565b6020026020010151905080600014611298578160200151811015611290576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602082018190525b50506001016111f5565b6112dc6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b83604001518460200151111561131e576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611334856020015186604001518686612040565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff81111561139257611392612635565b6040519080825280602002602001820160405280156113fb57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113b05790505b50915060005b818110156114525761142d86828151811061141e5761141e612664565b602002602001015186866120e7565b83828151811061143f5761143f612664565b6020908102919091010152600101611401565b50509392505050565b61146583836121b7565b61067d57806114a0576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604084015160005b815181101561113a5760008282815181106114c5576114c5612664565b602002602001015190506114ee846127106114e09190612fc4565b602083015190612710612204565b6020909101526001016114a8565b60015473ffffffffffffffffffffffffffffffffffffffff1661151c5750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611573908590600401612ffe565b600060405180830381865afa158015611590573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526115d69190810190613011565b60408301515181519192509060006115ee8284612fc4565b67ffffffffffffffff81111561160657611606612635565b60405190808252806020026020018201604052801561166f57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116245790505b50905060005b838110156116c0578560400151818151811061169357611693612664565b60200260200101518282815181106116ad576116ad612664565b6020908102919091010152600101611675565b5060008060005b848110156119db5760008782815181106116e3576116e3612664565b6020026020010151905060005b828110156117a15788818151811061170a5761170a612664565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036117995781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6001016116f0565b506000805b888110156118625760008b6040015182815181106117c6576117c6612664565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1603611859578515611843576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516118529084612fc4565b9250600196505b506001016117a6565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036118db5784156118c2576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516118d49082612fc4565b9050600193505b806000036119305781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b61193e816005612710612248565b826020015111156119b1578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106119c6576119c6612664565b602090810291909101015250506001016116c7565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611a3d576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b90611ab990849086906004016130e1565b60006040518083038186803b158015611ad157600080fd5b505afa15801561113a573d6000803e3d6000fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611ba5846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8616825280870151810151908201528560000151602001518660800151604051806080016040528060528152602001613262605291396040518060c00160405280608d81526020016132e2608d91396040518060600160405280602e81526020016132b4602e91396040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611d8c94939291602001613110565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611df99695949392600401613199565b600060405180830381600087803b158015611e1357600080fd5b505af115801561113a573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611e4c5761035f8282611e6e565b61035f73ffffffffffffffffffffffffffffffffffffffff8416338484612284565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611ec8576040519150601f19603f3d011682016040523d82523d6000602084013e611ecd565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d81526020016132e2608d913980516020918201208351848301516040808701516060880151608089015160a08a01518051908901209351610f2698939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff811115611fc257611fc2612635565b6040519080825280601f01601f191660200182016040528015611fec576020820181803683370190505b50905060005b835181101561203157600061201f85838151811061201257612012612664565b6020026020010151612376565b60208381028501015250600101611ff2565b50805160209091012092915050565b60008385036120505750836120df565b828211612089576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4282116120975750826120df565b4283106120a55750836120df565b42839003838303868610156120ca576120c18688038383612248565b870392506120dc565b6120d78787038383612204565b870192505b50505b949350505050565b6040805160608101825260008082526020820181905291810191909152836040015184602001511015612146576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061215c856020015186604001518686612040565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff831615806121db57508142115b806121fb575073ffffffffffffffffffffffffffffffffffffffff831633145b90505b92915050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261223957600080fd5b50910281810615159190040190565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261227d57600080fd5b5091020490565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d116001600051141617169150508061236f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b5050505050565b600060405180608001604052806052815260200161326260529139805160209182012083518483015160408087015160608801519151610f26969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b6000604082840312156123ff57600080fd5b50919050565b60008083601f84011261241757600080fd5b50813567ffffffffffffffff81111561242f57600080fd5b60208301915083602082850101111561244757600080fd5b9250929050565b60008060006040848603121561246357600080fd5b833567ffffffffffffffff8082111561247b57600080fd5b612487878388016123ed565b9450602086013591508082111561249d57600080fd5b506124aa86828701612405565b9497909650939450505050565b60008083601f8401126124c957600080fd5b50813567ffffffffffffffff8111156124e157600080fd5b6020830191508360208260051b850101111561244757600080fd5b6000806020838503121561250f57600080fd5b823567ffffffffffffffff81111561252657600080fd5b612532858286016124b7565b90969095509350505050565b6000806000806040858703121561255457600080fd5b843567ffffffffffffffff8082111561256c57600080fd5b612578888389016124b7565b9096509450602087013591508082111561259157600080fd5b5061259e87828801612405565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356125d7816125aa565b919050565b6000602082840312156125ee57600080fd5b81356125f9816125aa565b9392505050565b60006020828403121561261257600080fd5b813567ffffffffffffffff81111561262957600080fd5b6120df848285016123ed565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156126ae578181015183820152602001612696565b50506000910152565b600081518084526126cf816020860160208601612693565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b83811015612761578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612716565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526127e06101a08501826126b7565b9050602083015161281e6020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b50604083015184820360808601526128368282612701565b915050606083015184820360a086015261285082826126b7565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b838110156128dc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526128ca86835161276c565b95509382019390820190600101612890565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261296157600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126129a057600080fd5b83018035915067ffffffffffffffff8211156129bb57600080fd5b60200191503681900382131561244757600080fd5b60405160c0810167ffffffffffffffff811182821017156129f3576129f3612635565b60405290565b6040516060810167ffffffffffffffff811182821017156129f3576129f3612635565b6040516080810167ffffffffffffffff811182821017156129f3576129f3612635565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612a8657612a86612635565b604052919050565b600082601f830112612a9f57600080fd5b813567ffffffffffffffff811115612ab957612ab9612635565b612aea60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612a3f565b818152846020838601011115612aff57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612b2e57600080fd5b612b366129d0565b90508135612b43816125aa565b81526020820135612b53816125aa565b8060208301525060408201356040820152606082013560608201526080820135612b7c816125aa565b608082015260a082013567ffffffffffffffff811115612b9b57600080fd5b612ba784828501612a8e565b60a08301525092915050565b600060608284031215612bc557600080fd5b612bcd6129f9565b90508135612bda816125aa565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612c1257612c12612635565b5060051b60200190565b600082601f830112612c2d57600080fd5b81356020612c42612c3d83612bf8565b612a3f565b82815260079290921b84018101918181019086841115612c6157600080fd5b8286015b84811015612cc65760808189031215612c7e5760008081fd5b612c86612a1c565b8135612c91816125aa565b8152818501358582015260408083013590820152606080830135612cb4816125aa565b90820152835291830191608001612c65565b509695505050505050565b600060c08284031215612ce357600080fd5b612ceb6129d0565b905081358152602080830135818301526040830135612d09816125aa565b80604084015250606083013560608301526080830135608083015260a083013567ffffffffffffffff811115612d3e57600080fd5b8301601f81018513612d4f57600080fd5b8035612d5d612c3d82612bf8565b81815260059190911b82018301908381019087831115612d7c57600080fd5b928401925b82841015612d9a57833582529284019290840190612d81565b60a0860152509295945050505050565b600060208284031215612dbc57600080fd5b813567ffffffffffffffff80821115612dd457600080fd5b908301906101008286031215612de957600080fd5b612df16129d0565b823582811115612e0057600080fd5b612e0c87828601612b1c565b825250612e1b602084016125cc565b6020820152612e2d8660408501612bb3565b604082015260a083013582811115612e4457600080fd5b612e5087828601612c1c565b60608301525060c083013582811115612e6857600080fd5b612e7487828601612cd1565b60808301525060e083013582811115612e8c57600080fd5b612e9887828601612a8e565b60a08301525095945050505050565b60008451612eb9818460208901612693565b845190830190612ecd818360208901612693565b8451910190612ee0818360208801612693565b0195945050505050565b60008060408385031215612efd57600080fd5b505080516020909101519092909150565b6000602080835260e0830184518285015281850151604085015273ffffffffffffffffffffffffffffffffffffffff604086015116606085015260608501516080850152608085015160a085015260a085015160c080860152818151808452610100870191508483019350600092505b80831015612cc65783518252928401926001929092019190840190612f7e565b82815260008251612fb6816020850160208701612693565b919091016020019392505050565b808201808211156121fe577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6020815260006121fb602083018461276c565b6000602080838503121561302457600080fd5b825167ffffffffffffffff81111561303b57600080fd5b8301601f8101851361304c57600080fd5b805161305a612c3d82612bf8565b8181526060918202830184019184820191908884111561307957600080fd5b938501935b838510156130d55780858a0312156130965760008081fd5b61309e6129f9565b85516130a9816125aa565b815285870151878201526040808701516130c2816125aa565b908201528352938401939185019161307e565b50979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006120df604083018461276c565b7f563244757463684f72646572207769746e657373290000000000000000000000815260008551613148816015850160208a01612693565b85519083019061315f816015840160208a01612693565b8551910190613175816015840160208901612693565b845191019061318b816015840160208801612693565b016015019695505050505050565b60006101406131c9838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b602089015160408401526040890151606084015261320a6080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e08401528061010084015261323f818401866126b7565b905082810361012084015261325481856126b7565b999850505050505050505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a264697066735822122035a25d9682571022740f8eb2bbffff059f7e63d59c89e57d9831ce550c37465a64736f6c63430008180033", - "sourceMap": "1101:4177:66:-:0;;;1828:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1045:5:35;:14;;-1:-1:-1;;;;;;1045:14:35;-1:-1:-1;;;;;1045:14:35;;;;;;;1075:40;;1898:8:66;;1045:14:35;;;;;;:5;1075:40;;1045:5;;1075:40;-1:-1:-1;;1716:1:21;1821:7;:22;-1:-1:-1;;;;;;1352:18:62::1;;::::0;-1:-1:-1;1101:4177:66;;-1:-1:-1;1101:4177:66;14:141:108;-1:-1:-1;;;;;99:31:108;;89:42;;79:70;;145:1;142;135:12;79:70;14:141;:::o;160:423::-;257:6;265;318:2;306:9;297:7;293:23;289:32;286:52;;;334:1;331;324:12;286:52;366:9;360:16;385:41;420:5;385:41;:::i;:::-;495:2;480:18;;474:25;445:5;;-1:-1:-1;508:43:108;474:25;508:43;:::i;:::-;570:7;560:17;;;160:423;;;;;:::o;:::-;1101:4177:66;;;;;;;;;;;;;;;;;", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b436600461244e565b6101eb565b005b6100b96100c93660046124fc565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b961013936600461253e565b6104c5565b34801561014a57600080fd5b506100b96101593660046125dc565b610683565b6100b961016c366004612600565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e63660046125dc565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c5612664565b60200260200101819052506102d981610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061031990849087908790600401612867565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bbe565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff81111561038857610388612635565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d85858381811061046657610466612664565b9050602002810190610478919061292d565b6109f6565b82828151811061048f5761048f612664565b6020908102919091010152600101610449565b506104ac81610b6d565b6104b581610bbe565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e9612635565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c787878381811061046657610466612664565b8282815181106105d9576105d9612664565b60209081029190910101526001016105aa565b506105f681610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061063690849088908890600401612867565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bbe565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b8160008151811061086957610869612664565b602002602001018190525061087d81610b6d565b61088681610bbe565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f838061296b565b810190610a7c9190612daa565b90506000610a8982610d11565b9050610a958183610f43565b610a9e82611142565b6040805160a081018252835181526080840151805160209182015193860151929391840192610acf929091906112a2565b81526080840151805160209182015160608701519290930192610af3929190611374565b8152602001858060200190610b08919061296b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001829052608083015160408101518151606090920151929550610b669286929061145b565b5050919050565b805160005b8181101561035f576000838281518110610b8e57610b8e612664565b60200260200101519050610ba1816114fc565b610bab81336119ec565b610bb58133611ae5565b50600101610b72565b805160005b81811015610d00576000838281518110610bdf57610bdf612664565b602002602001015190506000816040015151905060005b81811015610c6057600083604001518281518110610c1657610c16612664565b60200260200101519050610c5781604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611e279092919063ffffffff16565b50600101610bf6565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610ca957610ca9612664565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610cee91815260200190565b60405180910390a45050600101610bc3565b5047156104c1576104c13347611e6e565b6040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260009060b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260808301909152605280835290919061326260208301396040518060c00160405280608d81526020016132e2608d9139604051602001610e9193929190612ea7565b60405160208183030381529060405280519060200120610eb48360000151611f08565b6020808501516040808701518051938101519101516060880151929392610eda90611fa2565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff938416606087015292909116608085015260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b6080810151602001518151606001511015610f8a576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808260a00151806020019051810190610fa59190612eea565b9150915060008360a00151604081518110610fc257610fc2612664565b602001015160f81c60f81b60f81c905060006001868660800151604051602001610fec9190612f0e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526110289291602001612f9e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600084529083018083525260ff851690820152606081018690526080810185905260a0016020604051602081039080840390855afa1580156110a4573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff16141580611103575073ffffffffffffffffffffffffffffffffffffffff8116155b1561113a576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6080808201510151156111ab578060400151602001518160800151608001511115611199576040517fac9143e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808082015101516040820151602001525b806060015151816080015160a0015151146111f2576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8160600151518110156104c15760008260600151828151811061121a5761121a612664565b602002602001015190506000836080015160a00151838151811061124057611240612664565b6020026020010151905080600014611298578160200151811015611290576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602082018190525b50506001016111f5565b6112dc6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b83604001518460200151111561131e576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611334856020015186604001518686612040565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff81111561139257611392612635565b6040519080825280602002602001820160405280156113fb57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113b05790505b50915060005b818110156114525761142d86828151811061141e5761141e612664565b602002602001015186866120e7565b83828151811061143f5761143f612664565b6020908102919091010152600101611401565b50509392505050565b61146583836121b7565b61067d57806114a0576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604084015160005b815181101561113a5760008282815181106114c5576114c5612664565b602002602001015190506114ee846127106114e09190612fc4565b602083015190612710612204565b6020909101526001016114a8565b60015473ffffffffffffffffffffffffffffffffffffffff1661151c5750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611573908590600401612ffe565b600060405180830381865afa158015611590573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526115d69190810190613011565b60408301515181519192509060006115ee8284612fc4565b67ffffffffffffffff81111561160657611606612635565b60405190808252806020026020018201604052801561166f57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116245790505b50905060005b838110156116c0578560400151818151811061169357611693612664565b60200260200101518282815181106116ad576116ad612664565b6020908102919091010152600101611675565b5060008060005b848110156119db5760008782815181106116e3576116e3612664565b6020026020010151905060005b828110156117a15788818151811061170a5761170a612664565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036117995781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6001016116f0565b506000805b888110156118625760008b6040015182815181106117c6576117c6612664565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1603611859578515611843576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516118529084612fc4565b9250600196505b506001016117a6565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036118db5784156118c2576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516118d49082612fc4565b9050600193505b806000036119305781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b61193e816005612710612248565b826020015111156119b1578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106119c6576119c6612664565b602090810291909101015250506001016116c7565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611a3d576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b90611ab990849086906004016130e1565b60006040518083038186803b158015611ad157600080fd5b505afa15801561113a573d6000803e3d6000fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611ba5846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8616825280870151810151908201528560000151602001518660800151604051806080016040528060528152602001613262605291396040518060c00160405280608d81526020016132e2608d91396040518060600160405280602e81526020016132b4602e91396040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611d8c94939291602001613110565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611df99695949392600401613199565b600060405180830381600087803b158015611e1357600080fd5b505af115801561113a573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611e4c5761035f8282611e6e565b61035f73ffffffffffffffffffffffffffffffffffffffff8416338484612284565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611ec8576040519150601f19603f3d011682016040523d82523d6000602084013e611ecd565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d81526020016132e2608d913980516020918201208351848301516040808701516060880151608089015160a08a01518051908901209351610f2698939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff811115611fc257611fc2612635565b6040519080825280601f01601f191660200182016040528015611fec576020820181803683370190505b50905060005b835181101561203157600061201f85838151811061201257612012612664565b6020026020010151612376565b60208381028501015250600101611ff2565b50805160209091012092915050565b60008385036120505750836120df565b828211612089576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4282116120975750826120df565b4283106120a55750836120df565b42839003838303868610156120ca576120c18688038383612248565b870392506120dc565b6120d78787038383612204565b870192505b50505b949350505050565b6040805160608101825260008082526020820181905291810191909152836040015184602001511015612146576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061215c856020015186604001518686612040565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff831615806121db57508142115b806121fb575073ffffffffffffffffffffffffffffffffffffffff831633145b90505b92915050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261223957600080fd5b50910281810615159190040190565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261227d57600080fd5b5091020490565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d116001600051141617169150508061236f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b5050505050565b600060405180608001604052806052815260200161326260529139805160209182012083518483015160408087015160608801519151610f26969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b6000604082840312156123ff57600080fd5b50919050565b60008083601f84011261241757600080fd5b50813567ffffffffffffffff81111561242f57600080fd5b60208301915083602082850101111561244757600080fd5b9250929050565b60008060006040848603121561246357600080fd5b833567ffffffffffffffff8082111561247b57600080fd5b612487878388016123ed565b9450602086013591508082111561249d57600080fd5b506124aa86828701612405565b9497909650939450505050565b60008083601f8401126124c957600080fd5b50813567ffffffffffffffff8111156124e157600080fd5b6020830191508360208260051b850101111561244757600080fd5b6000806020838503121561250f57600080fd5b823567ffffffffffffffff81111561252657600080fd5b612532858286016124b7565b90969095509350505050565b6000806000806040858703121561255457600080fd5b843567ffffffffffffffff8082111561256c57600080fd5b612578888389016124b7565b9096509450602087013591508082111561259157600080fd5b5061259e87828801612405565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356125d7816125aa565b919050565b6000602082840312156125ee57600080fd5b81356125f9816125aa565b9392505050565b60006020828403121561261257600080fd5b813567ffffffffffffffff81111561262957600080fd5b6120df848285016123ed565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156126ae578181015183820152602001612696565b50506000910152565b600081518084526126cf816020860160208601612693565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b83811015612761578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612716565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526127e06101a08501826126b7565b9050602083015161281e6020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b50604083015184820360808601526128368282612701565b915050606083015184820360a086015261285082826126b7565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b838110156128dc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526128ca86835161276c565b95509382019390820190600101612890565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261296157600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126129a057600080fd5b83018035915067ffffffffffffffff8211156129bb57600080fd5b60200191503681900382131561244757600080fd5b60405160c0810167ffffffffffffffff811182821017156129f3576129f3612635565b60405290565b6040516060810167ffffffffffffffff811182821017156129f3576129f3612635565b6040516080810167ffffffffffffffff811182821017156129f3576129f3612635565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612a8657612a86612635565b604052919050565b600082601f830112612a9f57600080fd5b813567ffffffffffffffff811115612ab957612ab9612635565b612aea60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612a3f565b818152846020838601011115612aff57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612b2e57600080fd5b612b366129d0565b90508135612b43816125aa565b81526020820135612b53816125aa565b8060208301525060408201356040820152606082013560608201526080820135612b7c816125aa565b608082015260a082013567ffffffffffffffff811115612b9b57600080fd5b612ba784828501612a8e565b60a08301525092915050565b600060608284031215612bc557600080fd5b612bcd6129f9565b90508135612bda816125aa565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612c1257612c12612635565b5060051b60200190565b600082601f830112612c2d57600080fd5b81356020612c42612c3d83612bf8565b612a3f565b82815260079290921b84018101918181019086841115612c6157600080fd5b8286015b84811015612cc65760808189031215612c7e5760008081fd5b612c86612a1c565b8135612c91816125aa565b8152818501358582015260408083013590820152606080830135612cb4816125aa565b90820152835291830191608001612c65565b509695505050505050565b600060c08284031215612ce357600080fd5b612ceb6129d0565b905081358152602080830135818301526040830135612d09816125aa565b80604084015250606083013560608301526080830135608083015260a083013567ffffffffffffffff811115612d3e57600080fd5b8301601f81018513612d4f57600080fd5b8035612d5d612c3d82612bf8565b81815260059190911b82018301908381019087831115612d7c57600080fd5b928401925b82841015612d9a57833582529284019290840190612d81565b60a0860152509295945050505050565b600060208284031215612dbc57600080fd5b813567ffffffffffffffff80821115612dd457600080fd5b908301906101008286031215612de957600080fd5b612df16129d0565b823582811115612e0057600080fd5b612e0c87828601612b1c565b825250612e1b602084016125cc565b6020820152612e2d8660408501612bb3565b604082015260a083013582811115612e4457600080fd5b612e5087828601612c1c565b60608301525060c083013582811115612e6857600080fd5b612e7487828601612cd1565b60808301525060e083013582811115612e8c57600080fd5b612e9887828601612a8e565b60a08301525095945050505050565b60008451612eb9818460208901612693565b845190830190612ecd818360208901612693565b8451910190612ee0818360208801612693565b0195945050505050565b60008060408385031215612efd57600080fd5b505080516020909101519092909150565b6000602080835260e0830184518285015281850151604085015273ffffffffffffffffffffffffffffffffffffffff604086015116606085015260608501516080850152608085015160a085015260a085015160c080860152818151808452610100870191508483019350600092505b80831015612cc65783518252928401926001929092019190840190612f7e565b82815260008251612fb6816020850160208701612693565b919091016020019392505050565b808201808211156121fe577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6020815260006121fb602083018461276c565b6000602080838503121561302457600080fd5b825167ffffffffffffffff81111561303b57600080fd5b8301601f8101851361304c57600080fd5b805161305a612c3d82612bf8565b8181526060918202830184019184820191908884111561307957600080fd5b938501935b838510156130d55780858a0312156130965760008081fd5b61309e6129f9565b85516130a9816125aa565b815285870151878201526040808701516130c2816125aa565b908201528352938401939185019161307e565b50979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006120df604083018461276c565b7f563244757463684f72646572207769746e657373290000000000000000000000815260008551613148816015850160208a01612693565b85519083019061315f816015840160208a01612693565b8551910190613175816015840160208901612693565b845191019061318b816015840160208801612693565b016015019695505050505050565b60006101406131c9838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b602089015160408401526040890151606084015261320a6080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e08401528061010084015261323f818401866126b7565b905082810361012084015261325481856126b7565b999850505050505050505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a264697066735822122035a25d9682571022740f8eb2bbffff059f7e63d59c89e57d9831ce550c37465a64736f6c63430008180033", - "sourceMap": "1101:4177:66:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1721:435:62;;;;;;:::i;:::-;;:::i;:::-;;2191:453;;;;;;:::i;:::-;;:::i;1212:33::-;;;;;;;;;;;;;;;;;;2288:42:108;2276:55;;;2258:74;;2246:2;2231:18;1212:33:62;;;;;;;2679:614;;;;;;:::i;:::-;;:::i;4161:289:43:-;;;;;;;;;;-1:-1:-1;4161:289:43;;;;;:::i;:::-;;:::i;1412:274:62:-;;;;;;:::i;:::-;;:::i;1479:43:43:-;;;;;;;;;;-1:-1:-1;1479:43:43;;;;;;;;690:20:35;;;;;;;;;;-1:-1:-1;690:20:35;;;;;;;;1312:161;;;;;;;;;;-1:-1:-1;1312:161:35;;;;;:::i;:::-;;:::i;1721:435:62:-;2261:21:21;:19;:21::i;:::-;1932:22:62::1;::::0;;1952:1:::1;1932:22:::0;;;;;::::1;::::0;;;1892:37:::1;::::0;1932:22:::1;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1932:22:62;;;;;;;::::1;::::0;::::1;;;;;1892:62;;1984:15;1993:5;1984:8;:15::i;:::-;1964:14;1979:1;1964:17;;;;;;;;:::i;:::-;;;;;;:35;;;;2010:24;2019:14;2010:8;:24::i;:::-;2044:74;::::0;;;;2061:10:::1;::::0;2044:44:::1;::::0;:74:::1;::::0;2089:14;;2105:12;;;;2044:74:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2128:21;2134:14;2128:5;:21::i;:::-;1882:274;2303:20:21::0;1716:1;2809:7;:22;2629:209;2303:20;1721:435:62;;;:::o;2191:453::-;2261:21:21;:19;:21::i;:::-;2316:6:62;2293:20:::1;2316:6:::0;2379:33:::1;::::0;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2379:33:62;;;;;;;::::1;::::0;::::1;;;;;;2339:73;;2452:9;2447:115;2471:12;2467:1;:16;2447:115;;;2528:19;2537:6;;2544:1;2537:9;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;2528:8;:19::i;:::-;2508:14;2523:1;2508:17;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:39;2485:3:::1;;2447:115;;;;2582:24;2591:14;2582:8;:24::i;:::-;2616:21;2622:14;2616:5;:21::i;:::-;2283:361;;2303:20:21::0;1716:1;2809:7;:22;2629:209;2303:20;2191:453:62;;:::o;2679:614::-;2261:21:21;:19;:21::i;:::-;2881:6:62;2858:20:::1;2881:6:::0;2944:33:::1;::::0;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2944:33:62;;;;;;;::::1;::::0;::::1;;;;;;2904:73;;3017:9;3012:115;3036:12;3032:1;:16;3012:115;;;3093:19;3102:6;;3109:1;3102:9;;;;;;;:::i;3093:19::-;3073:14;3088:1;3073:17;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:39;3050:3:::1;;3012:115;;;;3147:24;3156:14;3147:8;:24::i;:::-;3181:74;::::0;;;;3198:10:::1;::::0;3181:44:::1;::::0;:74:::1;::::0;3226:14;;3242:12;;;;3181:74:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;3265:21;3271:14;3265:5;:21::i;:::-;2848:445;;2303:20:21::0;1716:1;2809:7;:22;2629:209;2303:20;2679:614:62;;;;:::o;4161:289:43:-;778:5:35;;;;764:10;:19;756:44;;;;;;;9611:2:108;756:44:35;;;9593:21:108;9650:2;9630:18;;;9623:30;9689:14;9669:18;;;9662:42;9721:18;;756:44:35;;;;;;;;;4286:13:43::1;::::0;;::::1;4310:57:::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;4382:61:::1;::::0;;4286:13;;;::::1;9985:34:108::0;;;10050:2;10035:18;;10028:43;;;;4382:61:43::1;::::0;9897:18:108;4382:61:43::1;;;;;;;4241:209;4161:289:::0;:::o;1412:274:62:-;2261:21:21;:19;:21::i;:::-;1546:22:62::1;::::0;;1566:1:::1;1546:22:::0;;;;;::::1;::::0;;;1506:37:::1;::::0;1546:22:::1;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1546:22:62;;;;;;;::::1;::::0;::::1;;;;;1506:62;;1598:15;1607:5;1598:8;:15::i;:::-;1578:14;1593:1;1578:17;;;;;;;;:::i;:::-;;;;;;:35;;;;1624:24;1633:14;1624:8;:24::i;:::-;1658:21;1664:14;1658:5;:21::i;:::-;1496:190;2303:20:21::0;1716:1;2809:7;:22;2629:209;2303:20;1412:274:62;:::o;1312:161:35:-;778:5;;;;764:10;:19;756:44;;;;;;;9611:2:108;756:44:35;;;9593:21:108;9650:2;9630:18;;;9623:30;9689:14;9669:18;;;9662:42;9721:18;;756:44:35;9409:336:108;756:44:35;1392:5:::1;:16:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;1424:42:::1;::::0;1392:16;;1445:10:::1;::::0;1424:42:::1;::::0;1392:5;1424:42:::1;1312:161:::0;:::o;2336:287:21:-;1759:1;2468:7;;:19;2460:63;;;;;;;10284:2:108;2460:63:21;;;10266:21:108;10323:2;10303:18;;;10296:30;10362:33;10342:18;;;10335:61;10413:18;;2460:63:21;10082:355:108;2460:63:21;1759:1;2598:18;;2336:287::o;1967:1068:66:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2188:17:66;:11;;:17;:::i;:::-;2177:45;;;;;;;:::i;:::-;2149:73;;2334:17;2354:12;:5;:10;:12::i;:::-;2334:32;;2377;2392:9;2403:5;2377:14;:32::i;:::-;2419:33;2446:5;2419:26;:33::i;:::-;2479:342;;;;;;;;2513:10;;2479:342;;2566:18;;;;:33;;2479:342;2601:31;;;;2544:15;;;;2479:342;;;;;;2544:89;;:15;;2566:33;2544:21;:89::i;:::-;2479:342;;2680:18;;;;:33;;2479:342;2715:31;;;;2656:17;;;;2479:342;;;;;2656:91;;:17;2680:33;2656:23;:91::i;:::-;2479:342;;;;2766:11;:15;;;;;;;;:::i;:::-;2479:342;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2479:342:66;;;-1:-1:-1;2479:342:66;;;;;2882:18;;;;:34;;;;2930:33;;2977:41;;;;;2463:358;;-1:-1:-1;2831:197:66;;2463:358;;2930:33;2831:37;:197::i;:::-;2139:896;;1967:1068;;;:::o;3441:405:62:-;3532:13;;3509:20;3579:251;3603:12;3599:1;:16;3579:251;;;3640:26;3669:6;3676:1;3669:9;;;;;;;;:::i;:::-;;;;;;;3640:38;;3696:18;3708:5;3696:11;:18::i;:::-;3732:26;:5;3747:10;3732:14;:26::i;:::-;3776:39;3797:5;3804:10;3776:20;:39::i;:::-;-1:-1:-1;3617:3:62;;3579:251;;3968:1267;4056:13;;4033:20;4236:536;4260:12;4256:1;:16;4236:536;;;4297:34;4334:6;4341:1;4334:9;;;;;;;;:::i;:::-;;;;;;;4297:46;;4361:21;4385:13;:21;;;:28;4361:52;;4436:9;4431:217;4455:13;4451:1;:17;4431:217;;;4497:25;4525:13;:21;;;4547:1;4525:24;;;;;;;;:::i;:::-;;;;;;;4497:52;;4571:58;4597:6;:16;;;4615:6;:13;;;4571:6;:12;;;:25;;;;:58;;;;;:::i;:::-;-1:-1:-1;4470:3:62;;4431:217;;;;4704:13;:18;;;:26;;;4671:86;;4692:10;4671:86;;4676:6;4683:1;4676:9;;;;;;;;:::i;:::-;;;;;;;:14;;;4671:86;4732:13;:18;;;:24;;;4671:86;;;;18365:25:108;;18353:2;18338:18;;18219:177;4671:86:62;;;;;;;;-1:-1:-1;;4274:3:62;;4236:536;;;-1:-1:-1;5112:21:62;:25;5108:121;;5153:65;5184:10;5196:21;5153:30;:65::i;2594:423:61:-;1589:256;;19221:15:108;1589:256:61;;;19209:28:108;19267:17;19253:12;;;19246:39;19315:19;19301:12;;;19294:41;19365:25;19351:12;;;19344:47;19421:31;19407:12;;;19400:53;19483:29;19469:12;;;19462:51;19544:28;19529:13;;;19522:51;2658:7:61;;19589:13:108;;1589:256:61;;;;;;;;;;1935:31;;;;;;;;;;1589:256;;;1935:31;1589:256;1935:31;;;1968:28;;;;;;;;;;;;;;;;;1897:100;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2047:21;;;;;;2768:17;:5;:10;;;:15;:17::i;:::-;2803:14;;;;;2835:15;;;;;:21;;2874:27;;;;2919:25;;;2962:17;;;;2803:14;;2835:21;2962:24;;:22;:24::i;:::-;2707:293;;;;;;20645:25:108;;;;20686:18;;20679:34;;;;20732:42;20810:15;;;20790:18;;;20783:43;20862:15;;;;20842:18;;;20835:43;20894:19;;;20887:35;20938:19;;;20931:35;20982:19;;;20975:35;20617:19;;2707:293:61;;;;;;;;;;;;;2684:326;;;;;;2677:333;;2594:423;;;:::o;4638:638:66:-;4758:18;;;;:31;;;4736:10;;:19;;;:53;4732:114;;;4812:23;;;;;;;;;;;;;;4732:114;4857:9;4868;4892:5;:17;;;4881:49;;;;;;;;;;;;:::i;:::-;4856:74;;;;4940:7;4956:5;:17;;;4974:2;4956:21;;;;;;;;:::i;:::-;;;;;;;;;4950:28;;4940:38;;5047:14;5064:90;5101:9;5123:5;:18;;;5112:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;5084:59;;;5112:30;5084:59;;:::i;:::-;;;;;;;;;;;;;;5074:70;;5084:59;5074:70;;;;5064:90;;;;;;;;;22958:25:108;23031:4;23019:17;;22999:18;;;22992:45;23053:18;;;23046:34;;;23096:18;;;23089:34;;;22930:19;;5064:90:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5047:107;;5186:6;5168:24;;:5;:14;;;:24;;;;:48;;;-1:-1:-1;5196:20:66;;;;5168:48;5164:106;;;5239:20;;;;;;;;;;;;;;5164:106;4722:554;;;;4638:638;;:::o;3423:936::-;3514:18;;;;;:30;;:35;3510:267;;3602:5;:15;;;:27;;;3569:5;:18;;;:30;;;:60;3565:128;;;3656:22;;;;;;;;;;;;;;3565:128;3736:18;;;;;:30;;3706:15;;;;:27;;:60;3510:267;3834:5;:17;;;:24;3791:5;:18;;;:32;;;:39;:67;3787:128;;3881:23;;;;;;;;;;;;;;3787:128;3929:9;3924:429;3948:5;:17;;;:24;3944:1;:28;3924:429;;;3993:25;4021:5;:17;;;4039:1;4021:20;;;;;;;;:::i;:::-;;;;;;;3993:48;;4055:20;4078:5;:18;;;:32;;;4111:1;4078:35;;;;;;;;:::i;:::-;;;;;;;4055:58;;4131:12;4147:1;4131:17;4127:216;;4187:6;:18;;;4172:12;:33;4168:110;;;4236:23;;;;;;;;;;;;;;4168:110;4295:18;;;:33;;;4127:216;-1:-1:-1;;3974:3:66;;3924:429;;4025:462:53;4158:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;4158:24:53;4222:5;:15;;;4202:5;:17;;;:35;4198:91;;;4260:18;;;;;;;;;;;;;;4198:91;4299:20;4322:85;4342:5;:17;;;4361:5;:15;;;4378:14;4394:12;4322:19;:85::i;:::-;4426:54;;;;;;;;4437:11;;4426:54;;;;;;;;;;;4464:15;;;;4426:54;;;;;;;-1:-1:-1;4426:54:53;;4025:462;-1:-1:-1;;;4025:462:53:o;3300:453::-;3504:14;;3438:27;;3504:14;3537:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;3537:31:53;;;;;;;;;;;;;;;3528:40;;3607:9;3602:135;3626:12;3622:1;:16;3602:135;;;3675:47;3681:7;3689:1;3681:10;;;;;;;;:::i;:::-;;;;;;;3693:14;3709:12;3675:5;:47::i;:::-;3663:6;3670:1;3663:9;;;;;;;;:::i;:::-;;;;;;;;;;:59;3640:3;;3602:135;;;;3471:282;3300:453;;;;;:::o;1073:927:56:-;1352:47;1369:9;1380:18;1352:16;:47::i;:::-;1415:7;1348:84;1536:22;1532:103;;1603:21;;;;;;;;;;;;;;1532:103;1720:13;;;;1689:28;1743:251;1767:7;:14;1763:1;:18;1743:251;;;1798:25;1826:7;1834:1;1826:10;;;;;;;;:::i;:::-;;;;;;;1798:38;;1866:57;1895:22;743:6;1889:28;;;;:::i;:::-;1866:13;;;;;743:6;1866:22;:57::i;:::-;1850:13;;;;:73;1966:3;;1743:251;;1825:2185:43;1910:13;;1902:36;1910:13;1898:73;;1825:2185;:::o;1898:73::-;2015:13;;:34;;;;;1981:31;;2015:13;;;:27;;:34;;2043:5;;2015:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2083:13;;;;:20;2140:17;;1981:68;;-1:-1:-1;2083:20:43;2059:21;2294:32;2140:17;2083:20;2294:32;:::i;:::-;2276:51;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;2276:51:43;;;;;;;;;;;;;;;2242:85;;2343:9;2338:101;2362:13;2358:1;:17;2338:101;;;2412:5;:13;;;2426:1;2412:16;;;;;;;;:::i;:::-;;;;;;;2396:10;2407:1;2396:13;;;;;;;;:::i;:::-;;;;;;;;;;:32;2377:3;;2338:101;;;;2449:19;2486:18;2527:9;2522:1445;2546:16;2542:1;:20;2522:1445;;;2583:28;2614:10;2625:1;2614:13;;;;;;;;:::i;:::-;;;;;;;2583:44;;2682:9;2677:191;2701:1;2697;:5;2677:191;;;2750:10;2761:1;2750:13;;;;;;;;:::i;:::-;;;;;;;:19;;;2731:38;;:9;:15;;;:38;;;2727:127;;2819:15;;2800:35;;;;;2288:42:108;2276:55;;;2800:35:43;;;2258:74:108;2231:18;;2800:35:43;2094:244:108;2727:127:43;2704:3;;2677:191;;;-1:-1:-1;2933:18:43;;2965:354;2989:13;2985:1;:17;2965:354;;;3027:25;3055:5;:13;;;3069:1;3055:16;;;;;;;;:::i;:::-;;;;;;;3027:44;;3109:9;:15;;;3093:31;;:6;:12;;;:31;;;3089:216;;3152:13;3148:46;;;3174:20;;;;;;;;;;;;;;3148:46;3230:13;;;;3216:27;;;;:::i;:::-;;;3282:4;3265:21;;3089:216;-1:-1:-1;3004:3:43;;2965:354;;;-1:-1:-1;3415:15:43;;3393:11;;;;:17;3385:45;;;;;;;3381:219;;3454:14;3450:47;;;3477:20;;;;;;;;;;;;;;3450:47;3529:11;;;;;:18;;3515:32;;;;:::i;:::-;;;3581:4;3565:20;;3381:219;3618:10;3632:1;3618:15;3614:60;;3658:15;;3642:32;;;;;2288:42:108;2276:55;;;3642:32:43;;;2258:74:108;2231:18;;3642:32:43;2094:244:108;3614:60:43;3712:39;:10;1424:1;1373:6;3712:21;:39::i;:::-;3693:9;:16;;;:58;3689:171;;;3790:15;;3807:16;;;;3825:19;;;;;3778:67;;;;;25375:42:108;25444:15;;;3778:67:43;;;25426:34:108;25476:18;;;25469:34;;;;25539:15;;;;25519:18;;;25512:43;25338:18;;3778:67:43;25163:398:108;3689:171:43;3933:9;3901:10;3928:1;3912:13;:17;3901:29;;;;;;;;:::i;:::-;;;;;;;;;;:41;-1:-1:-1;;2564:3:43;;2522:1445;;;-1:-1:-1;;;3977:13:43;;;;:26;;;;-1:-1:-1;;;1825:2185:43:o;429:396:60:-;552:18;;:26;527:52;;535:4;527:52;523:106;;602:16;;;;;;;;;;;;;;523:106;651:18;;:47;;;643:70;;;639:180;;729:18;;:47;;;:79;;;;;:56;;;;;;;:79;;786:6;;729:13;;:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3073:344:66;3171:7;:33;;;3218:16;:5;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;509:303:59;;;572:149;;;;;641:11;;;;;;:17;572:149;;509:303;;;;572:149;;;685:11;;:21;;;572:149;;;;509:303;;742:10;;:16;;;509:303;;;;;;;782:10;;:19;;;;509:303;;;;;349:470;3218:16:66;-1:-1:-1;;;;;;;;;;;;;;;;;1071:90:59;;;;;;;;;;;;;1141:11;;;;:18;;;1071:90;;;;3287:5:66;:10;;;:18;;;3319:5;:10;;;2300:31:61;;;;;;;;;;;;;;;;;2345:28;;;;;;;;;;;;;;;;;2387:36;;;;;;;;;;;;;;;;;1589:256;;19221:15:108;1589:256:61;;;19209:28:108;19267:17;19253:12;;;19246:39;19315:19;19301:12;;;19294:41;19365:25;19351:12;;;19344:47;19421:31;19407:12;;;19400:53;19483:29;19469:12;;;19462:51;19544:28;19529:13;;;19522:51;19589:13;;1589:256:61;;;;;;;;;;;;;;2233:233;;;;;1589:256;2233:233;;:::i;:::-;;;;;;;;;;;;;;;3391:9:66;;;;3171:239;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1478:434:52;2501:18;;;1572:334;;1695:33;1710:9;1721:6;1695:14;:33::i;1572:334::-;1832:63;:32;;;1865:10;1877:9;1888:6;1832:32;:63::i;2084:189::-;2163:12;2180:9;:14;;2202:6;2180:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2162:51;;;2228:7;2223:43;;2244:22;;;;;;;;;;;;;;574:416:58;634:7;461:15;;;;;;;;;;;;;;;;;451:26;;;;;;;749:12;;779;;;;809:10;;;;;837:13;;;;868:33;;;;929:29;;;;919:40;;;;;;683:290;;;;809:10;;837:13;;868:33;;919:40;683:290;28918:25:108;;;28962:42;29040:15;;;29035:2;29020:18;;29013:43;29092:15;;;29087:2;29072:18;;29065:43;29139:2;29124:18;;29117:34;;;;29182:3;29167:19;;29160:35;29232:15;;;29226:3;29211:19;;29204:44;29279:3;29264:19;;29257:35;28905:3;28890:19;;28556:742;3091:487:54;3158:7;3201:25;3244:7;:14;3239:2;:19;3229:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3229:30:54;;3201:58;;3279:9;3274:243;3298:7;:14;3294:1;:18;3274:243;;;3337:18;3358:16;3363:7;3371:1;3363:10;;;;;;;;:::i;:::-;;;;;;;3358:4;:16::i;:::-;3466:4;3459:12;;;3430:42;;;3423:62;-1:-1:-1;3314:3:54;;3274:243;;;-1:-1:-1;3538:23:54;;;;;;;;3091:487;-1:-1:-1;;3091:487:54:o;1212:1043:53:-;1360:21;1416:9;1401:11;:24;1397:852;;-1:-1:-1;1448:11:53;1441:18;;1397:852;1496:14;1480:12;:30;1476:773;;1533:24;;;;;;;;;;;;;;1476:773;1594:15;1578:12;:31;1574:675;;-1:-1:-1;1641:9:53;1574:675;;;1689:15;1671:14;:33;1667:582;;-1:-1:-1;1736:11:53;1667:582;;;1824:15;:32;;;1893:29;;;1944:23;;;1940:285;;;2021:55;2022:23;;;2058:7;2067:8;2021:36;:55::i;:::-;2007:11;:69;1991:85;;1940:285;;;2153:53;2154:23;;;2188:7;2197:8;2153:34;:53::i;:::-;2139:11;:67;2123:83;;1940:285;1778:461;;1667:582;1212:1043;;;;;;:::o;2531:474::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;2732:6:53;:16;;;2711:6;:18;;;:37;2707:93;;;2771:18;;;;;;;;;;;;;;2707:93;2810:21;2834:87;2854:6;:18;;;2874:6;:16;;;2892:14;2908:12;2834:19;:87::i;:::-;2810:111;;2940:58;;;;;;;;2952:6;:12;;;2940:58;;;;;;2966:13;2940:58;;;;2981:6;:16;;;2940:58;;;;;2931:67;;2697:308;2531:474;;;;;:::o;2378:216:56:-;2474:4;2497:23;;;;;:63;;;2542:18;2524:15;:36;2497:63;:90;;;-1:-1:-1;2564:23:56;;;2577:10;2564:23;2497:90;2490:97;;2378:216;;;;;:::o;2096:672:38:-;2210:9;2458:1;2445:11;2441:19;2438:1;2435:26;2432:1;2428:34;2421:42;2408:11;2404:60;2394:116;;2494:1;2491;2484:12;2394:116;-1:-1:-1;2728:9:38;;2691:27;;;2688:34;;2724:27;;;2684:68;;2096:672::o;1564:526::-;1680:9;1928:1;1915:11;1911:19;1908:1;1905:26;1902:1;1898:34;1891:42;1878:11;1874:60;1864:116;;1964:1;1961;1954:12;1864:116;-1:-1:-1;2051:9:38;;2047:27;;1564:526::o;1328:1782:39:-;1466:12;1636:4;1630:11;1778:66;1759:17;1752:93;1902:42;1896:4;1892:53;1888:1;1869:17;1865:25;1858:88;2042:42;2038:2;2034:51;2029:2;2010:17;2006:26;1999:87;2172:6;2167:2;2148:17;2144:26;2137:42;3026:2;3023:1;3018:3;2999:17;2996:1;2989:5;2982;2977:52;2545:16;2538:24;2532:2;2514:16;2511:24;2507:1;2503;2497:8;2494:15;2490:46;2487:76;2287:756;2276:767;;;3071:7;3063:40;;;;;;;29505:2:108;3063:40:39;;;29487:21:108;29544:2;29524:18;;;29517:30;29583:22;29563:18;;;29556:50;29623:18;;3063:40:39;29303:344:108;3063:40:39;1456:1654;1328:1782;;;;:::o;2728:234:54:-;2792:7;1695:17;;;;;;;;;;;;;;;;;1685:28;;;;;;;2876:12;;2890:18;;;;2910:16;;;;;2928;;;;2841:104;;;;2910:16;;2928;2841:104;29911:25:108;;;29955:42;30033:15;;;30028:2;30013:18;;30006:43;30080:2;30065:18;;30058:34;;;;30123:2;30108:18;;30101:34;30172:15;30166:3;30151:19;;30144:44;29898:3;29883:19;;29652:542;14:159;78:5;123:2;114:6;109:3;105:16;101:25;98:45;;;139:1;136;129:12;98:45;-1:-1:-1;161:6:108;14:159;-1:-1:-1;14:159:108:o;178:347::-;229:8;239:6;293:3;286:4;278:6;274:17;270:27;260:55;;311:1;308;301:12;260:55;-1:-1:-1;334:20:108;;377:18;366:30;;363:50;;;409:1;406;399:12;363:50;446:4;438:6;434:17;422:29;;498:3;491:4;482:6;474;470:19;466:30;463:39;460:59;;;515:1;512;505:12;460:59;178:347;;;;;:::o;530:673::-;641:6;649;657;710:2;698:9;689:7;685:23;681:32;678:52;;;726:1;723;716:12;678:52;766:9;753:23;795:18;836:2;828:6;825:14;822:34;;;852:1;849;842:12;822:34;875:71;938:7;929:6;918:9;914:22;875:71;:::i;:::-;865:81;;999:2;988:9;984:18;971:32;955:48;;1028:2;1018:8;1015:16;1012:36;;;1044:1;1041;1034:12;1012:36;;1083:60;1135:7;1124:8;1113:9;1109:24;1083:60;:::i;:::-;530:673;;1162:8;;-1:-1:-1;1057:86:108;;-1:-1:-1;;;;530:673:108:o;1208:387::-;1291:8;1301:6;1355:3;1348:4;1340:6;1336:17;1332:27;1322:55;;1373:1;1370;1363:12;1322:55;-1:-1:-1;1396:20:108;;1439:18;1428:30;;1425:50;;;1471:1;1468;1461:12;1425:50;1508:4;1500:6;1496:17;1484:29;;1568:3;1561:4;1551:6;1548:1;1544:14;1536:6;1532:27;1528:38;1525:47;1522:67;;;1585:1;1582;1575:12;1600:489;1718:6;1726;1779:2;1767:9;1758:7;1754:23;1750:32;1747:52;;;1795:1;1792;1785:12;1747:52;1835:9;1822:23;1868:18;1860:6;1857:30;1854:50;;;1900:1;1897;1890:12;1854:50;1939:90;2021:7;2012:6;2001:9;1997:22;1939:90;:::i;:::-;2048:8;;1913:116;;-1:-1:-1;1600:489:108;-1:-1:-1;;;;1600:489:108:o;2343:797::-;2481:6;2489;2497;2505;2558:2;2546:9;2537:7;2533:23;2529:32;2526:52;;;2574:1;2571;2564:12;2526:52;2614:9;2601:23;2643:18;2684:2;2676:6;2673:14;2670:34;;;2700:1;2697;2690:12;2670:34;2739:90;2821:7;2812:6;2801:9;2797:22;2739:90;:::i;:::-;2848:8;;-1:-1:-1;2713:116:108;-1:-1:-1;2936:2:108;2921:18;;2908:32;;-1:-1:-1;2952:16:108;;;2949:36;;;2981:1;2978;2971:12;2949:36;;3020:60;3072:7;3061:8;3050:9;3046:24;3020:60;:::i;:::-;2343:797;;;;-1:-1:-1;3099:8:108;-1:-1:-1;;;;2343:797:108:o;3145:154::-;3231:42;3224:5;3220:54;3213:5;3210:65;3200:93;;3289:1;3286;3279:12;3304:134;3372:20;;3401:31;3372:20;3401:31;:::i;:::-;3304:134;;;:::o;3443:247::-;3502:6;3555:2;3543:9;3534:7;3530:23;3526:32;3523:52;;;3571:1;3568;3561:12;3523:52;3610:9;3597:23;3629:31;3654:5;3629:31;:::i;:::-;3679:5;3443:247;-1:-1:-1;;;3443:247:108:o;3695:365::-;3786:6;3839:2;3827:9;3818:7;3814:23;3810:32;3807:52;;;3855:1;3852;3845:12;3807:52;3895:9;3882:23;3928:18;3920:6;3917:30;3914:50;;;3960:1;3957;3950:12;3914:50;3983:71;4046:7;4037:6;4026:9;4022:22;3983:71;:::i;4559:184::-;4611:77;4608:1;4601:88;4708:4;4705:1;4698:15;4732:4;4729:1;4722:15;4748:184;4800:77;4797:1;4790:88;4897:4;4894:1;4887:15;4921:4;4918:1;4911:15;4937:250;5022:1;5032:113;5046:6;5043:1;5040:13;5032:113;;;5122:11;;;5116:18;5103:11;;;5096:39;5068:2;5061:10;5032:113;;;-1:-1:-1;;5179:1:108;5161:16;;5154:27;4937:250::o;5192:329::-;5233:3;5271:5;5265:12;5298:6;5293:3;5286:19;5314:76;5383:6;5376:4;5371:3;5367:14;5360:4;5353:5;5349:16;5314:76;:::i;:::-;5435:2;5423:15;5440:66;5419:88;5410:98;;;;5510:4;5406:109;;5192:329;-1:-1:-1;;5192:329:108:o;5787:700::-;5851:3;5889:5;5883:12;5916:6;5911:3;5904:19;5942:4;5971;5966:3;5962:14;5955:21;;6010:4;6003:5;5999:16;6033:1;6043:419;6057:6;6054:1;6051:13;6043:419;;;6116:13;;6223:9;;6152:42;6219:18;;;6207:31;;6278:11;;;6272:18;6258:12;;;6251:40;6314:4;6362:11;;;6356:18;6352:27;6338:12;;;6331:49;6409:4;6400:14;;;;6437:15;;;;6079:1;6072:9;6043:419;;;-1:-1:-1;6478:3:108;;5787:700;-1:-1:-1;;;;;5787:700:108:o;6492:1240::-;6548:3;6592:5;6586:12;6619:4;6614:3;6607:17;6643:42;6742:2;6727:12;6721:19;6717:28;6710:4;6705:3;6701:14;6694:52;6813:2;6805:4;6791:12;6787:23;6781:30;6777:39;6771:3;6766;6762:13;6755:62;6872:4;6858:12;6854:23;6848:30;6842:3;6837;6833:13;6826:53;6934:4;6920:12;6916:23;6910:30;6904:3;6899;6895:13;6888:53;7008:2;7000:4;6986:12;6982:23;6976:30;6972:39;6966:3;6961;6957:13;6950:62;;7067:4;7053:12;7049:23;7043:30;7021:52;;7104:4;7098:3;7093;7089:13;7082:27;7131:47;7173:3;7168;7164:13;7148:14;7131:47;:::i;:::-;7118:60;;7226:4;7219:5;7215:16;7209:23;7241:60;7295:4;7290:3;7286:14;7270;5606:12;;5620:42;5602:61;5590:74;;5713:4;5702:16;;;5696:23;5680:14;;;5673:47;5769:4;5758:16;;;5752:23;5736:14;;5729:47;5526:256;7241:60;;7349:4;7342:5;7338:16;7332:23;7398:3;7391:5;7387:15;7380:4;7375:3;7371:14;7364:39;7424:62;7480:5;7464:14;7424:62;:::i;:::-;7412:74;;;7534:4;7527:5;7523:16;7517:23;7582:3;7576:4;7572:14;7565:4;7560:3;7556:14;7549:38;7610;7643:4;7627:14;7610:38;:::i;:::-;7596:52;;;7697:4;7690:5;7686:16;7680:23;7673:4;7668:3;7664:14;7657:47;7720:6;7713:13;;;6492:1240;;;;:::o;7737:1274::-;7999:4;8047:2;8036:9;8032:18;8077:2;8066:9;8059:21;8100:6;8135;8129:13;8166:6;8158;8151:22;8204:2;8193:9;8189:18;8182:25;;8266:2;8256:6;8253:1;8249:14;8238:9;8234:30;8230:39;8216:53;;8288:4;8327:2;8319:6;8315:15;8348:1;8358:328;8372:6;8369:1;8366:13;8358:328;;;8461:66;8449:9;8441:6;8437:22;8433:95;8428:3;8421:108;8552:54;8599:6;8590;8584:13;8552:54;:::i;:::-;8542:64;-1:-1:-1;8664:12:108;;;;8629:15;;;;8394:1;8387:9;8358:328;;;8362:3;;8734:9;8726:6;8722:22;8717:2;8706:9;8702:18;8695:50;8769:6;8761;8754:22;8823:6;8815;8810:2;8802:6;8798:15;8785:45;8876:1;8850:19;;;8846:28;;8839:39;8927:2;8915:15;;;8932:66;8911:88;8899:101;;;8895:110;;;;7737:1274;-1:-1:-1;;;;;;7737:1274:108:o;9016:388::-;9114:4;9172:11;9159:25;9262:66;9251:8;9235:14;9231:29;9227:102;9207:18;9203:127;9193:155;;9344:1;9341;9334:12;9193:155;9365:33;;;;;9016:388;-1:-1:-1;;9016:388:108:o;10442:580::-;10519:4;10525:6;10585:11;10572:25;10675:66;10664:8;10648:14;10644:29;10640:102;10620:18;10616:127;10606:155;;10757:1;10754;10747:12;10606:155;10784:33;;10836:20;;;-1:-1:-1;10879:18:108;10868:30;;10865:50;;;10911:1;10908;10901:12;10865:50;10944:4;10932:17;;-1:-1:-1;10975:14:108;10971:27;;;10961:38;;10958:58;;;11012:1;11009;11002:12;11027:253;11099:2;11093:9;11141:4;11129:17;;11176:18;11161:34;;11197:22;;;11158:62;11155:88;;;11223:18;;:::i;:::-;11259:2;11252:22;11027:253;:::o;11285:::-;11357:2;11351:9;11399:4;11387:17;;11434:18;11419:34;;11455:22;;;11416:62;11413:88;;;11481:18;;:::i;11543:253::-;11615:2;11609:9;11657:4;11645:17;;11692:18;11677:34;;11713:22;;;11674:62;11671:88;;;11739:18;;:::i;11801:334::-;11872:2;11866:9;11928:2;11918:13;;11933:66;11914:86;11902:99;;12031:18;12016:34;;12052:22;;;12013:62;12010:88;;;12078:18;;:::i;:::-;12114:2;12107:22;11801:334;;-1:-1:-1;11801:334:108:o;12140:589::-;12182:5;12235:3;12228:4;12220:6;12216:17;12212:27;12202:55;;12253:1;12250;12243:12;12202:55;12289:6;12276:20;12315:18;12311:2;12308:26;12305:52;;;12337:18;;:::i;:::-;12381:114;12489:4;12420:66;12413:4;12409:2;12405:13;12401:86;12397:97;12381:114;:::i;:::-;12520:2;12511:7;12504:19;12566:3;12559:4;12554:2;12546:6;12542:15;12538:26;12535:35;12532:55;;;12583:1;12580;12573:12;12532:55;12648:2;12641:4;12633:6;12629:17;12622:4;12613:7;12609:18;12596:55;12696:1;12671:16;;;12689:4;12667:27;12660:38;;;;12675:7;12140:589;-1:-1:-1;;;12140:589:108:o;12734:894::-;12790:5;12838:4;12826:9;12821:3;12817:19;12813:30;12810:50;;;12856:1;12853;12846:12;12810:50;12878:22;;:::i;:::-;12869:31;;12937:9;12924:23;12956:33;12981:7;12956:33;:::i;:::-;12998:22;;13072:2;13057:18;;13044:32;13085:33;13044:32;13085:33;:::i;:::-;13150:7;13145:2;13138:5;13134:14;13127:31;;13218:2;13207:9;13203:18;13190:32;13185:2;13178:5;13174:14;13167:56;13283:2;13272:9;13268:18;13255:32;13250:2;13243:5;13239:14;13232:56;13340:3;13329:9;13325:19;13312:33;13354;13379:7;13354:33;:::i;:::-;13414:3;13403:15;;13396:32;13479:3;13464:19;;13451:33;13507:18;13496:30;;13493:50;;;13539:1;13536;13529:12;13493:50;13576:45;13617:3;13608:6;13597:9;13593:22;13576:45;:::i;:::-;13570:3;13563:5;13559:15;13552:70;;12734:894;;;;:::o;13633:423::-;13690:5;13738:4;13726:9;13721:3;13717:19;13713:30;13710:50;;;13756:1;13753;13746:12;13710:50;13778:22;;:::i;:::-;13769:31;;13837:9;13824:23;13856:33;13881:7;13856:33;:::i;:::-;13912:7;13905:5;13898:22;;13980:2;13969:9;13965:18;13952:32;13947:2;13940:5;13936:14;13929:56;14045:2;14034:9;14030:18;14017:32;14012:2;14005:5;14001:14;13994:56;13633:423;;;;:::o;14061:194::-;14132:4;14165:18;14157:6;14154:30;14151:56;;;14187:18;;:::i;:::-;-1:-1:-1;14232:1:108;14228:14;14244:4;14224:25;;14061:194::o;14260:1295::-;14325:5;14378:3;14371:4;14363:6;14359:17;14355:27;14345:55;;14396:1;14393;14386:12;14345:55;14432:6;14419:20;14458:4;14482:71;14498:54;14549:2;14498:54;:::i;:::-;14482:71;:::i;:::-;14587:15;;;14673:1;14669:10;;;;14657:23;;14653:32;;;14618:12;;;;14697:15;;;14694:35;;;14725:1;14722;14715:12;14694:35;14761:2;14753:6;14749:15;14773:753;14789:6;14784:3;14781:15;14773:753;;;14867:4;14861:3;14856;14852:13;14848:24;14845:114;;;14913:1;14942:2;14938;14931:14;14845:114;14985:22;;:::i;:::-;15048:3;15035:17;15065:33;15090:7;15065:33;:::i;:::-;15111:22;;15182:12;;;15169:26;15153:14;;;15146:50;15219:2;15270:12;;;15257:26;15241:14;;;15234:50;15307:2;15350:12;;;15337:26;15376:33;15337:26;15376:33;:::i;:::-;15429:14;;;15422:31;15466:18;;15504:12;;;;14815:4;14806:14;14773:753;;;-1:-1:-1;15544:5:108;14260:1295;-1:-1:-1;;;;;;14260:1295:108:o;15560:1313::-;15619:5;15667:4;15655:9;15650:3;15646:19;15642:30;15639:50;;;15685:1;15682;15675:12;15639:50;15707:22;;:::i;:::-;15698:31;;15765:9;15752:23;15745:5;15738:38;15795:2;15857;15846:9;15842:18;15829:32;15824:2;15817:5;15813:14;15806:56;15914:2;15903:9;15899:18;15886:32;15927:33;15952:7;15927:33;:::i;:::-;15992:7;15987:2;15980:5;15976:14;15969:31;;16060:2;16049:9;16045:18;16032:32;16027:2;16020:5;16016:14;16009:56;16126:3;16115:9;16111:19;16098:33;16092:3;16085:5;16081:15;16074:58;16183:3;16172:9;16168:19;16155:33;16211:18;16203:6;16200:30;16197:50;;;16243:1;16240;16233:12;16197:50;16266:22;;16319:4;16311:13;;16307:23;-1:-1:-1;16297:51:108;;16344:1;16341;16334:12;16297:51;16380:2;16367:16;16403:71;16419:54;16470:2;16419:54;:::i;16403:71::-;16508:15;;;16590:1;16586:10;;;;16578:19;;16574:28;;;16539:12;;;;16614:15;;;16611:35;;;16642:1;16639;16632:12;16611:35;16666:11;;;;16686:142;16702:6;16697:3;16694:15;16686:142;;;16768:17;;16756:30;;16719:12;;;;16806;;;;16686:142;;;16855:3;16844:15;;16837:30;-1:-1:-1;16848:5:108;;15560:1313;-1:-1:-1;;;;;15560:1313:108:o;16878:1336::-;16968:6;17021:2;17009:9;17000:7;16996:23;16992:32;16989:52;;;17037:1;17034;17027:12;16989:52;17077:9;17064:23;17106:18;17147:2;17139:6;17136:14;17133:34;;;17163:1;17160;17153:12;17133:34;17186:22;;;;17242:6;17224:16;;;17220:29;17217:49;;;17262:1;17259;17252:12;17217:49;17288:22;;:::i;:::-;17348:2;17335:16;17376:2;17366:8;17363:16;17360:36;;;17392:1;17389;17382:12;17360:36;17419:55;17466:7;17455:8;17451:2;17447:17;17419:55;:::i;:::-;17412:5;17405:70;;17507:31;17534:2;17530;17526:11;17507:31;:::i;:::-;17502:2;17495:5;17491:14;17484:55;17571:50;17613:7;17608:2;17604;17600:11;17571:50;:::i;:::-;17566:2;17559:5;17555:14;17548:74;17668:3;17664:2;17660:12;17647:26;17698:2;17688:8;17685:16;17682:36;;;17714:1;17711;17704:12;17682:36;17752:67;17811:7;17800:8;17796:2;17792:17;17752:67;:::i;:::-;17745:4;17738:5;17734:16;17727:93;;17866:4;17862:2;17858:13;17845:27;17897:2;17887:8;17884:16;17881:36;;;17913:1;17910;17903:12;17881:36;17951:58;18001:7;17990:8;17986:2;17982:17;17951:58;:::i;:::-;17944:4;17937:5;17933:16;17926:84;;18056:3;18052:2;18048:12;18035:26;18086:2;18076:8;18073:16;18070:36;;;18102:1;18099;18092:12;18070:36;18139:44;18175:7;18164:8;18160:2;18156:17;18139:44;:::i;:::-;18133:3;18122:15;;18115:69;-1:-1:-1;18126:5:108;16878:1336;-1:-1:-1;;;;;16878:1336:108:o;19613:697::-;19834:3;19872:6;19866:13;19888:66;19947:6;19942:3;19935:4;19927:6;19923:17;19888:66;:::i;:::-;20017:13;;19976:16;;;;20039:70;20017:13;19976:16;20086:4;20074:17;;20039:70;:::i;:::-;20176:13;;20131:20;;;20198:70;20176:13;20131:20;20245:4;20233:17;;20198:70;:::i;:::-;20284:20;;19613:697;-1:-1:-1;;;;;19613:697:108:o;21021:245::-;21100:6;21108;21161:2;21149:9;21140:7;21136:23;21132:32;21129:52;;;21177:1;21174;21167:12;21129:52;-1:-1:-1;;21200:16:108;;21256:2;21241:18;;;21235:25;21200:16;;21235:25;;-1:-1:-1;21021:245:108:o;21271:1091::-;21425:4;21454:2;21483;21472:9;21465:21;21524:3;21513:9;21509:19;21570:6;21564:13;21559:2;21548:9;21544:18;21537:41;21632:2;21624:6;21620:15;21614:22;21609:2;21598:9;21594:18;21587:50;21701:42;21695:2;21687:6;21683:15;21677:22;21673:71;21668:2;21657:9;21653:18;21646:99;21800:2;21792:6;21788:15;21782:22;21776:3;21765:9;21761:19;21754:51;21860:3;21852:6;21848:16;21842:23;21836:3;21825:9;21821:19;21814:52;21913:3;21905:6;21901:16;21895:23;21956:4;21949;21938:9;21934:20;21927:34;21981:6;22016:12;22010:19;22053:6;22045;22038:22;22091:3;22080:9;22076:19;22069:26;;22136:2;22122:12;22118:21;22104:35;;22157:1;22148:10;;22167:169;22181:6;22178:1;22175:13;22167:169;;;22242:13;;22230:26;;22311:15;;;;22203:1;22196:9;;;;;22276:12;;;;22167:169;;22367:359;22554:6;22549:3;22542:19;22524:3;22590:6;22584:13;22606:73;22672:6;22667:2;22662:3;22658:12;22653:2;22645:6;22641:15;22606:73;:::i;:::-;22699:16;;;;22717:2;22695:25;;22367:359;-1:-1:-1;;;22367:359:108:o;23134:279::-;23199:9;;;23220:10;;;23217:190;;;23263:77;23260:1;23253:88;23364:4;23361:1;23354:15;23392:4;23389:1;23382:15;23418:278;23611:2;23600:9;23593:21;23574:4;23631:59;23686:2;23675:9;23671:18;23663:6;23631:59;:::i;23701:1457::-;23826:6;23857:2;23900;23888:9;23879:7;23875:23;23871:32;23868:52;;;23916:1;23913;23906:12;23868:52;23949:9;23943:16;23982:18;23974:6;23971:30;23968:50;;;24014:1;24011;24004:12;23968:50;24037:22;;24090:4;24082:13;;24078:27;-1:-1:-1;24068:55:108;;24119:1;24116;24109:12;24068:55;24148:2;24142:9;24171:71;24187:54;24238:2;24187:54;:::i;24171:71::-;24276:15;;;24338:4;24377:13;;;24369:22;;24365:31;;;24307:12;;;;24264:3;24408:19;;;24405:39;;;24440:1;24437;24430:12;24405:39;24464:11;;;;24484:644;24500:6;24495:3;24492:15;24484:644;;;24580:2;24574:3;24565:7;24561:17;24557:26;24554:116;;;24624:1;24653:2;24649;24642:14;24554:116;24696:22;;:::i;:::-;24752:3;24746:10;24769:33;24794:7;24769:33;:::i;:::-;24815:22;;24879:12;;;24873:19;24857:14;;;24850:43;24916:2;24952:12;;;24946:19;24978:33;24946:19;24978:33;:::i;:::-;25031:14;;;25024:31;25068:18;;24517:12;;;;25106;;;;24484:644;;;-1:-1:-1;25147:5:108;23701:1457;-1:-1:-1;;;;;;;23701:1457:108:o;25566:398::-;25799:42;25791:6;25787:55;25776:9;25769:74;25879:2;25874;25863:9;25859:18;25852:30;25750:4;25899:59;25954:2;25943:9;25939:18;25931:6;25899:59;:::i;25969:1068::-;26369:23;26364:3;26357:36;26339:3;26422:6;26416:13;26438:75;26506:6;26501:2;26496:3;26492:12;26485:4;26477:6;26473:17;26438:75;:::i;:::-;26573:13;;26532:16;;;;26595:76;26573:13;26657:2;26649:11;;26642:4;26630:17;;26595:76;:::i;:::-;26732:13;;26690:17;;;26754:76;26732:13;26816:2;26808:11;;26801:4;26789:17;;26754:76;:::i;:::-;26891:13;;26849:17;;;26913:76;26891:13;26975:2;26967:11;;26960:4;26948:17;;26913:76;:::i;:::-;27009:17;27028:2;27005:26;;25969:1068;-1:-1:-1;;;;;;25969:1068:108:o;27253:1088::-;27683:4;27712:3;27724:60;27774:9;27765:6;27759:13;27128:12;;27142:42;27124:61;27112:74;;27235:4;27224:16;;;27218:23;27202:14;;27195:47;27042:206;27724:60;27840:4;27832:6;27828:17;27822:24;27815:4;27804:9;27800:20;27793:54;27903:4;27895:6;27891:17;27885:24;27878:4;27867:9;27863:20;27856:54;27919:63;27977:3;27966:9;27962:19;27954:6;27128:12;;27142:42;27124:61;27112:74;;27235:4;27224:16;;;27218:23;27202:14;;27195:47;27042:206;27919:63;28031:42;28023:6;28019:55;28013:3;28002:9;27998:19;27991:84;28112:6;28106:3;28095:9;28091:19;28084:35;28156:2;28150:3;28139:9;28135:19;28128:31;28182:44;28222:2;28211:9;28207:18;28199:6;28182:44;:::i;:::-;28168:58;;28275:9;28267:6;28263:22;28257:3;28246:9;28242:19;28235:51;28303:32;28328:6;28320;28303:32;:::i;:::-;28295:40;27253:1088;-1:-1:-1;;;;;;;;;27253:1088:108:o", - "linkReferences": {}, - "immutableReferences": { - "45165": [ - { "start": 224, "length": 32 }, - { "start": 6887, "length": 32 } - ] - } - }, - "methodIdentifiers": { - "execute((bytes,bytes))": "3f62192e", - "executeBatch((bytes,bytes)[])": "0d7a16c3", - "executeBatchWithCallback((bytes,bytes)[],bytes)": "13fb72c7", - "executeWithCallback((bytes,bytes),bytes)": "0d335884", - "feeController()": "6999b377", - "owner()": "8da5cb5b", - "permit2()": "12261ee7", - "setProtocolFeeController(address)": "2d771389", - "transferOwnership(address)": "f2fde38b" - }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IPermit2\",\"name\":\"_permit2\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_protocolFeeOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"DeadlineBeforeEndTime\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"duplicateToken\",\"type\":\"address\"}],\"name\":\"DuplicateFeeOutput\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EndTimeBeforeStartTime\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"FeeTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectAmounts\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputAndOutputFees\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCosignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCosignerInput\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCosignerOutput\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeToken\",\"type\":\"address\"}],\"name\":\"InvalidFeeToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidReactor\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NativeTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoExclusiveOverride\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"filler\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"swapper\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"Fill\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldFeeController\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newFeeController\",\"type\":\"address\"}],\"name\":\"ProtocolFeeControllerSet\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"order\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedOrder\",\"name\":\"order\",\"type\":\"tuple\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"order\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedOrder[]\",\"name\":\"orders\",\"type\":\"tuple[]\"}],\"name\":\"executeBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"order\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedOrder[]\",\"name\":\"orders\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"callbackData\",\"type\":\"bytes\"}],\"name\":\"executeBatchWithCallback\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"order\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedOrder\",\"name\":\"order\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"callbackData\",\"type\":\"bytes\"}],\"name\":\"executeWithCallback\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeController\",\"outputs\":[{\"internalType\":\"contract IProtocolFeeController\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"permit2\",\"outputs\":[{\"internalType\":\"contract IPermit2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newFeeController\",\"type\":\"address\"}],\"name\":\"setProtocolFeeController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"V2 orders must be cosigned by the specified cosigner to override timings and starting valuesresolution behavior: - If cosignature is invalid or not from specified cosigner, revert - If inputAmount is 0, then use baseInput - If inputAmount is nonzero, then ensure it is less than specified baseInput and replace startAmount - For each outputAmount: - If amount is 0, then use baseOutput - If amount is nonzero, then ensure it is greater than specified baseOutput and replace startAmount\",\"events\":{\"Fill(bytes32,address,address,uint256)\":{\"params\":{\"filler\":\"The address which executed the fill\",\"nonce\":\"The nonce of the filled order\",\"orderHash\":\"The hash of the order that was filled\",\"swapper\":\"The swapper of the filled order\"}}},\"kind\":\"dev\",\"methods\":{\"execute((bytes,bytes))\":{\"params\":{\"order\":\"The order definition and valid signature to execute\"}},\"executeBatch((bytes,bytes)[])\":{\"params\":{\"orders\":\"The order definitions and valid signatures to execute\"}},\"executeBatchWithCallback((bytes,bytes)[],bytes)\":{\"params\":{\"callbackData\":\"The callbackData to pass to the callback\",\"orders\":\"The order definitions and valid signatures to execute\"}},\"executeWithCallback((bytes,bytes),bytes)\":{\"params\":{\"callbackData\":\"The callbackData to pass to the callback\",\"order\":\"The order definition and valid signature to execute\"}},\"setProtocolFeeController(address)\":{\"details\":\"only callable by the owner\",\"params\":{\"_newFeeController\":\"the new fee controller\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"DeadlineBeforeEndTime()\":[{\"notice\":\"thrown when an order's deadline is before its end time\"}],\"DuplicateFeeOutput(address)\":[{\"notice\":\"thrown if two fee outputs have the same token\"}],\"EndTimeBeforeStartTime()\":[{\"notice\":\"thrown if the endTime of an order is before startTime\"}],\"FeeTooLarge(address,uint256,address)\":[{\"notice\":\"thrown if a given fee output is greater than MAX_FEE_BPS of the order outputs\"}],\"IncorrectAmounts()\":[{\"notice\":\"thrown if the decay direction is incorrect - for DutchInput, startAmount must be less than or equal to endAmount - for DutchOutput, startAmount must be greater than or equal to endAmount\"}],\"InputAndOutputFees()\":[{\"notice\":\"thrown if fees are taken on both inputs and outputs\"}],\"InvalidCosignature()\":[{\"notice\":\"thrown when an order's cosignature does not match the expected cosigner\"}],\"InvalidCosignerInput()\":[{\"notice\":\"thrown when an order's cosigner input is greater than the specified\"}],\"InvalidCosignerOutput()\":[{\"notice\":\"thrown when an order's cosigner output is less than the specified\"}],\"InvalidFeeToken(address)\":[{\"notice\":\"thrown if a fee output token does not have a corresponding non-fee output\"}],\"InvalidReactor()\":[{\"notice\":\"thrown when the order targets a different reactor\"}],\"NativeTransferFailed()\":[{\"notice\":\"Thrown when a native transfer fails\"}],\"NoExclusiveOverride()\":[{\"notice\":\"thrown when an order has strict exclusivity and the filler does not have it\"}]},\"events\":{\"Fill(bytes32,address,address,uint256)\":{\"notice\":\"emitted when an order is filled\"}},\"kind\":\"user\",\"methods\":{\"execute((bytes,bytes))\":{\"notice\":\"Execute a single order\"},\"executeBatch((bytes,bytes)[])\":{\"notice\":\"Execute the given orders at once\"},\"executeBatchWithCallback((bytes,bytes)[],bytes)\":{\"notice\":\"Execute the given orders at once using a callback with the given callback data\"},\"executeWithCallback((bytes,bytes),bytes)\":{\"notice\":\"Execute a single order using the given callback data\"},\"permit2()\":{\"notice\":\"permit2 address used for token transfers and signature verification\"},\"setProtocolFeeController(address)\":{\"notice\":\"sets the protocol fee controller\"}},\"notice\":\"Reactor for v2 dutch orders\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/reactors/V2DutchOrderReactor.sol\":\"V2DutchOrderReactor\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=lib/forge-gas-snapshot/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":permit2/=lib/permit2/\",\":solarray/=lib/solarray/src/\",\":solmate/=lib/solmate/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0xa535a5df777d44e945dd24aa43a11e44b024140fc340ad0dfe42acf4002aade1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://41319e7f621f2dc3733511332c4fd032f8e32ad2aa7fd6f665c19741d9941a34\",\"dweb:/ipfs/QmcYR3bd862GD1Bc7jwrU9bGxrhUu5na1oP964bDCu2id1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278\",\"dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH\"]},\"lib/permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x78931704a7f1d89ef24244b155863abb751cc3b3818f64303ccb47a396d48dcb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b8d6e198ee29d809564f1c1d7caa11a2c329bb5d051f61210548e546493444d2\",\"dweb:/ipfs/QmVxWftbgETjudymgLdwF77S54DWrp6qB5ooauKXW81cm7\"]},\"lib/permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xea70db68ce450ad38dfbd490058595441144808eb95272ae9b89e3fbe6456954\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8fad9ff319665acdc2f1295bb82db3e5b4d52babc0b58f147dbdbb9f322c6e5\",\"dweb:/ipfs/QmTbYJPcux8eJ3qGVYQh6TiwCA2FPu6HXTUg6QFTnX91Ks\"]},\"lib/permit2/src/interfaces/IPermit2.sol\":{\"keccak256\":\"0xaa631cc9f53e699301d94233007110a345e6779011def484e8dd97b8fe0af771\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc0502cf19c9c18f320a3001201e89e350393b75837f6b7971de18b2de06f30d\",\"dweb:/ipfs/QmT9SfhdJ7VJNNrf94g4H5usyi7ShqWGx7Cqsz9jZTjX96\"]},\"lib/permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0x6805563eaad92471fa1b3591a71d7020a93e59f1a4ac95398daf74927f5bd033\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48cd13806cb8e82dcc38eb93423a372fbdd3b05364ecebb8bfd9cd29078dd90c\",\"dweb:/ipfs/QmeLyFVrzKRHcm6aaFFBCG5mFESCqWLp1KYT41H8XhzMCp\"]},\"lib/solmate/src/auth/Owned.sol\":{\"keccak256\":\"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\",\"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\"]},\"lib/solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"lib/solmate/src/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9\",\"dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi\"]},\"lib/solmate/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x6ab948013c2c7ca6351e593600425b0ec6df9035320280c678e735bce16e996b\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://2ab977d0eeb2bf458f9798250215c646d2f3b1f90b5a7e2b506fdf3335c0f060\",\"dweb:/ipfs/QmYPRoPhNtBAmCSq7imN1scMVpKNQvMTpoqab3tXUx5Tnv\"]},\"src/base/ProtocolFees.sol\":{\"keccak256\":\"0x1152eee4ac698694bcdbf90b016411112d679812ca0abc1cacd7e6b465e6729a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c1be6b94c6268b68362111e728598e7c1517b20998fdf6752d08e32d55c210f8\",\"dweb:/ipfs/QmStQC274cQqnQSo3QDBcT5BdqEkpwZwFaWwxaYXMZidvw\"]},\"src/base/ReactorEvents.sol\":{\"keccak256\":\"0x61df7aa3ef970f1305c5a6d8c68b0d7ab8bebb9b7518e191c8d2fda532859f61\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://93db11be28b3394485b57a7b120ca224fdb93b471db8468738406f77ebaa13fc\",\"dweb:/ipfs/Qmci4TSUH81C3WDV7TMv56VmiUFZ9MDxZcGTRKhhEPS6gC\"]},\"src/base/ReactorStructs.sol\":{\"keccak256\":\"0x78e6db322ca69aaf552e59d5e74a00fd465a802388c2d03f9bf4b711f5704588\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://12d8fc82c3543bfe0d2cd44cdbc524bed1f074abafe086f7e58573cbaff2a74e\",\"dweb:/ipfs/QmREbamTn3nz89nEjv2uWHNHKSF6Yga2gQ688Cde89xcNT\"]},\"src/interfaces/IProtocolFeeController.sol\":{\"keccak256\":\"0x21a895ff5b778abf95753001a20b4004adfadd1bba622eaec18eb81836ede86c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://67f9eae1da9f238f6630247882e382458dcc0135c0a4837b99a44a2360a3845c\",\"dweb:/ipfs/QmdJyKhVyD6nAtgdTofaU2xaoWrPGM1Q6Sd7FiN2LxXZQx\"]},\"src/interfaces/IReactor.sol\":{\"keccak256\":\"0x23714e546bbeeaa7fe35665d7241319c964421a9fe6d81aead4b85027cabf1e1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3b94402a2e90f75d6238d4460c0b1125bf67b98523803156b104ce57cafdd05b\",\"dweb:/ipfs/QmbY3Mr44MPEMAe9bh9tUSqpPg3AAKfkVfydwJCEzFA14a\"]},\"src/interfaces/IReactorCallback.sol\":{\"keccak256\":\"0xf3ee1fe09545fc5be000c33bb6779e897b4e5013bd9de3e7c3107bf466b4dfa1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://12d7fd1ac3dca76614796f0d012ea4de79bf09cf124cc74efffdf25a56756344\",\"dweb:/ipfs/QmXyeSrG7caihgzUZdPdPbbRj6v1w65gBnfn9a7HhbVJX9\"]},\"src/interfaces/IValidationCallback.sol\":{\"keccak256\":\"0xc31e3a60e210e9a4089f48ba4fae06dec6f4d33da4fbe415cfb8cdc202003bae\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ee145d5fc0e0806dc9db57825142d5d7c3eafc248a27ee301ffd13592f2cda34\",\"dweb:/ipfs/QmQr2HBHZKiUu88a3M1Hs4QSjFemsZmPEd115QG6GKjsC1\"]},\"src/lib/CurrencyLibrary.sol\":{\"keccak256\":\"0x73688c07cd36b5040e0deca3dd1f21a8b19585d6cdfefb816fae98af92a545ea\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://750375d6f0e59f7977b9cfc2cf05fef7b356cea7875fbb71b0ca359d091b8479\",\"dweb:/ipfs/QmZbdTSS1BxWqAHjmtwoJsggbRVkwnxynJuaxzKkkakm4Y\"]},\"src/lib/DutchDecayLib.sol\":{\"keccak256\":\"0x40df504e1791a670bfc14af79bc8fc1600435e3b43c6734a9a92ed7b780d01fc\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6547e03b07140af7a5a61176bf47f1dd5bd37c34d759726fc82e5c8e14d48c8e\",\"dweb:/ipfs/QmZhkeGrKNbmv2avMgkUPjyRbPE9AbzrzPMNsGFh1kUNbe\"]},\"src/lib/DutchOrderLib.sol\":{\"keccak256\":\"0xdd6b9bffcc044899fac52e1e9cbe4becc7a40b56d912695e80600224367235e6\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://78c08ec074bc21ce610f2e0c3594b383e0cd2301c32239146a771e2e5d2cb975\",\"dweb:/ipfs/QmbMQwT9k3RWyTdihqqnu3RDiRCz1XmpMUVwxeyWzChKB5\"]},\"src/lib/ExclusivityLib.sol\":{\"keccak256\":\"0x3a0b93c182c269a00b2fdedf22a65af1e8a4cbb436986cffec2f5cc4acff8401\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a1cfcba8b7b4fdddc385e1c2dbe9fcc8ecff9d0d6e2d82332238bb0aa7505e5a\",\"dweb:/ipfs/QmXBfqnN8V2dMdcFyHMjXxJLWL5yAWoEtanKnHqFcmeLv5\"]},\"src/lib/OrderInfoLib.sol\":{\"keccak256\":\"0x38672b528e63dc53f36ed82d0037110a9f5893ad0a3957e24f19fa3fdbd80015\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://147172dbebf4bb579bc392f25666645719264c0b47378f7fc4f3a95c79bdf5a4\",\"dweb:/ipfs/Qmd5wVnQ8rKHHQgUQzEDcAPiqrVzmNr9t2D7d1SqUg9hTo\"]},\"src/lib/Permit2Lib.sol\":{\"keccak256\":\"0xcb5e1e204f4ac6ea3fa164b8be1b1d31cbad0dff981072ea2c33abd720369e78\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cfa162286525ef8684112639c7b981c0472b06ce799f2440c626a70c273bb533\",\"dweb:/ipfs/QmV1Uy4oodhg4SbCajv9xhiWFuwtU1YcTTvca1cDYCkND9\"]},\"src/lib/ResolvedOrderLib.sol\":{\"keccak256\":\"0xc56a31e72001e3e6ee0baf193423a7563cc61ba4869133e1cae5cf998bfe4d96\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4bddef26f26939f48923b11674495515d792cffbb2dc04f092212ff0b9971636\",\"dweb:/ipfs/QmS1YAzhYLCi9oDtZN33mwBf5iExdwMhPNcnzh5nA8fPKX\"]},\"src/lib/V2DutchOrderLib.sol\":{\"keccak256\":\"0x513f3ccd5924d671ff4a8801e0f2481f52b0def06347e2448a1a2f1346ed99d3\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c777808d9f6edc1eb04d489cf402c4e8203c8a0fbf47b023192b105f1e9a2a72\",\"dweb:/ipfs/QmQxoNZiwJcADeFVoGvM5ckCBrZoURAFncGBBA1Wfb6zTd\"]},\"src/reactors/BaseReactor.sol\":{\"keccak256\":\"0xd31b25dd7209a704fb17865e8112bc83a72e1816bc1d636c89366b2f1e3c4210\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f10c83e80f01d728f48aa06905e272eef776159ea83b53885c182da15597e3ca\",\"dweb:/ipfs/Qmf2nx9abWsTMCVBV1At66HS3FVTXHreUVCpwVDKjkYadY\"]},\"src/reactors/V2DutchOrderReactor.sol\":{\"keccak256\":\"0x36b2677685d6673d39036e1750866c918c754e5e9cd8672ca8bb1159a7522a73\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ae71cbf90cf3b8758ca1b9ae0d4f600473711ab0951bf279d5e5d9b61d76f649\",\"dweb:/ipfs/QmRChvpbAnxBTZnJdTmQ1nxQmE4LDMQLeW4C1tN1CUo6NA\"]}},\"version\":1}", - "metadata": { - "compiler": { "version": "0.8.24+commit.e11b9ed9" }, - "language": "Solidity", - "output": { - "abi": [ - { - "inputs": [ - { - "internalType": "contract IPermit2", - "name": "_permit2", - "type": "address" - }, - { - "internalType": "address", - "name": "_protocolFeeOwner", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { "inputs": [], "type": "error", "name": "DeadlineBeforeEndTime" }, - { - "inputs": [ - { - "internalType": "address", - "name": "duplicateToken", - "type": "address" - } - ], - "type": "error", - "name": "DuplicateFeeOutput" - }, - { "inputs": [], "type": "error", "name": "EndTimeBeforeStartTime" }, - { - "inputs": [ - { "internalType": "address", "name": "token", "type": "address" }, - { "internalType": "uint256", "name": "amount", "type": "uint256" }, - { - "internalType": "address", - "name": "recipient", - "type": "address" - } - ], - "type": "error", - "name": "FeeTooLarge" - }, - { "inputs": [], "type": "error", "name": "IncorrectAmounts" }, - { "inputs": [], "type": "error", "name": "InputAndOutputFees" }, - { "inputs": [], "type": "error", "name": "InvalidCosignature" }, - { "inputs": [], "type": "error", "name": "InvalidCosignerInput" }, - { "inputs": [], "type": "error", "name": "InvalidCosignerOutput" }, - { - "inputs": [ - { "internalType": "address", "name": "feeToken", "type": "address" } - ], - "type": "error", - "name": "InvalidFeeToken" - }, - { "inputs": [], "type": "error", "name": "InvalidReactor" }, - { "inputs": [], "type": "error", "name": "NativeTransferFailed" }, - { "inputs": [], "type": "error", "name": "NoExclusiveOverride" }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "orderHash", - "type": "bytes32", - "indexed": true - }, - { - "internalType": "address", - "name": "filler", - "type": "address", - "indexed": true - }, - { - "internalType": "address", - "name": "swapper", - "type": "address", - "indexed": true - }, - { - "internalType": "uint256", - "name": "nonce", - "type": "uint256", - "indexed": false - } - ], - "type": "event", - "name": "Fill", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "user", - "type": "address", - "indexed": true - }, - { - "internalType": "address", - "name": "newOwner", - "type": "address", - "indexed": true - } - ], - "type": "event", - "name": "OwnershipTransferred", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "oldFeeController", - "type": "address", - "indexed": false - }, - { - "internalType": "address", - "name": "newFeeController", - "type": "address", - "indexed": false - } - ], - "type": "event", - "name": "ProtocolFeeControllerSet", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "struct SignedOrder", - "name": "order", - "type": "tuple", - "components": [ - { "internalType": "bytes", "name": "order", "type": "bytes" }, - { "internalType": "bytes", "name": "sig", "type": "bytes" } - ] - } - ], - "stateMutability": "payable", - "type": "function", - "name": "execute" - }, - { - "inputs": [ - { - "internalType": "struct SignedOrder[]", - "name": "orders", - "type": "tuple[]", - "components": [ - { "internalType": "bytes", "name": "order", "type": "bytes" }, - { "internalType": "bytes", "name": "sig", "type": "bytes" } - ] - } - ], - "stateMutability": "payable", - "type": "function", - "name": "executeBatch" - }, - { - "inputs": [ - { - "internalType": "struct SignedOrder[]", - "name": "orders", - "type": "tuple[]", - "components": [ - { "internalType": "bytes", "name": "order", "type": "bytes" }, - { "internalType": "bytes", "name": "sig", "type": "bytes" } - ] - }, - { "internalType": "bytes", "name": "callbackData", "type": "bytes" } - ], - "stateMutability": "payable", - "type": "function", - "name": "executeBatchWithCallback" - }, - { - "inputs": [ - { - "internalType": "struct SignedOrder", - "name": "order", - "type": "tuple", - "components": [ - { "internalType": "bytes", "name": "order", "type": "bytes" }, - { "internalType": "bytes", "name": "sig", "type": "bytes" } - ] - }, - { "internalType": "bytes", "name": "callbackData", "type": "bytes" } - ], - "stateMutability": "payable", - "type": "function", - "name": "executeWithCallback" - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "feeController", - "outputs": [ - { - "internalType": "contract IProtocolFeeController", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "owner", - "outputs": [ - { "internalType": "address", "name": "", "type": "address" } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "permit2", - "outputs": [ - { - "internalType": "contract IPermit2", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_newFeeController", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "setProtocolFeeController" - }, - { - "inputs": [ - { "internalType": "address", "name": "newOwner", "type": "address" } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "transferOwnership" - }, - { "inputs": [], "stateMutability": "payable", "type": "receive" } - ], - "devdoc": { - "kind": "dev", - "methods": { - "execute((bytes,bytes))": { - "params": { - "order": "The order definition and valid signature to execute" - } - }, - "executeBatch((bytes,bytes)[])": { - "params": { - "orders": "The order definitions and valid signatures to execute" - } - }, - "executeBatchWithCallback((bytes,bytes)[],bytes)": { - "params": { - "callbackData": "The callbackData to pass to the callback", - "orders": "The order definitions and valid signatures to execute" - } - }, - "executeWithCallback((bytes,bytes),bytes)": { - "params": { - "callbackData": "The callbackData to pass to the callback", - "order": "The order definition and valid signature to execute" - } - }, - "setProtocolFeeController(address)": { - "details": "only callable by the owner", - "params": { "_newFeeController": "the new fee controller" } - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": { - "execute((bytes,bytes))": { "notice": "Execute a single order" }, - "executeBatch((bytes,bytes)[])": { - "notice": "Execute the given orders at once" - }, - "executeBatchWithCallback((bytes,bytes)[],bytes)": { - "notice": "Execute the given orders at once using a callback with the given callback data" - }, - "executeWithCallback((bytes,bytes),bytes)": { - "notice": "Execute a single order using the given callback data" - }, - "permit2()": { - "notice": "permit2 address used for token transfers and signature verification" - }, - "setProtocolFeeController(address)": { - "notice": "sets the protocol fee controller" - } - }, - "version": 1 - } - }, - "settings": { - "remappings": [ - "ds-test/=lib/forge-std/lib/ds-test/src/", - "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", - "forge-gas-snapshot/=lib/forge-gas-snapshot/src/", - "forge-std/=lib/forge-std/src/", - "openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/", - "openzeppelin/=lib/openzeppelin-contracts/contracts/", - "permit2/=lib/permit2/", - "solarray/=lib/solarray/src/", - "solmate/=lib/solmate/" - ], - "optimizer": { "enabled": true, "runs": 1000000 }, - "metadata": { "bytecodeHash": "ipfs" }, - "compilationTarget": { - "src/reactors/V2DutchOrderReactor.sol": "V2DutchOrderReactor" - }, - "evmVersion": "paris", - "libraries": {} - }, - "sources": { - "lib/openzeppelin-contracts/contracts/security/ReentrancyGuard.sol": { - "keccak256": "0xa535a5df777d44e945dd24aa43a11e44b024140fc340ad0dfe42acf4002aade1", - "urls": [ - "bzz-raw://41319e7f621f2dc3733511332c4fd032f8e32ad2aa7fd6f665c19741d9941a34", - "dweb:/ipfs/QmcYR3bd862GD1Bc7jwrU9bGxrhUu5na1oP964bDCu2id1" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol": { - "keccak256": "0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad", - "urls": [ - "bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278", - "dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH" - ], - "license": "MIT" - }, - "lib/permit2/src/interfaces/IAllowanceTransfer.sol": { - "keccak256": "0x78931704a7f1d89ef24244b155863abb751cc3b3818f64303ccb47a396d48dcb", - "urls": [ - "bzz-raw://b8d6e198ee29d809564f1c1d7caa11a2c329bb5d051f61210548e546493444d2", - "dweb:/ipfs/QmVxWftbgETjudymgLdwF77S54DWrp6qB5ooauKXW81cm7" - ], - "license": "MIT" - }, - "lib/permit2/src/interfaces/IEIP712.sol": { - "keccak256": "0xea70db68ce450ad38dfbd490058595441144808eb95272ae9b89e3fbe6456954", - "urls": [ - "bzz-raw://e8fad9ff319665acdc2f1295bb82db3e5b4d52babc0b58f147dbdbb9f322c6e5", - "dweb:/ipfs/QmTbYJPcux8eJ3qGVYQh6TiwCA2FPu6HXTUg6QFTnX91Ks" - ], - "license": "MIT" - }, - "lib/permit2/src/interfaces/IPermit2.sol": { - "keccak256": "0xaa631cc9f53e699301d94233007110a345e6779011def484e8dd97b8fe0af771", - "urls": [ - "bzz-raw://fc0502cf19c9c18f320a3001201e89e350393b75837f6b7971de18b2de06f30d", - "dweb:/ipfs/QmT9SfhdJ7VJNNrf94g4H5usyi7ShqWGx7Cqsz9jZTjX96" - ], - "license": "MIT" - }, - "lib/permit2/src/interfaces/ISignatureTransfer.sol": { - "keccak256": "0x6805563eaad92471fa1b3591a71d7020a93e59f1a4ac95398daf74927f5bd033", - "urls": [ - "bzz-raw://48cd13806cb8e82dcc38eb93423a372fbdd3b05364ecebb8bfd9cd29078dd90c", - "dweb:/ipfs/QmeLyFVrzKRHcm6aaFFBCG5mFESCqWLp1KYT41H8XhzMCp" - ], - "license": "MIT" - }, - "lib/solmate/src/auth/Owned.sol": { - "keccak256": "0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea", - "urls": [ - "bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4", - "dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx" - ], - "license": "AGPL-3.0-only" - }, - "lib/solmate/src/tokens/ERC20.sol": { - "keccak256": "0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10", - "urls": [ - "bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35", - "dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97" - ], - "license": "AGPL-3.0-only" - }, - "lib/solmate/src/utils/FixedPointMathLib.sol": { - "keccak256": "0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843", - "urls": [ - "bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9", - "dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi" - ], - "license": "AGPL-3.0-only" - }, - "lib/solmate/src/utils/SafeTransferLib.sol": { - "keccak256": "0x6ab948013c2c7ca6351e593600425b0ec6df9035320280c678e735bce16e996b", - "urls": [ - "bzz-raw://2ab977d0eeb2bf458f9798250215c646d2f3b1f90b5a7e2b506fdf3335c0f060", - "dweb:/ipfs/QmYPRoPhNtBAmCSq7imN1scMVpKNQvMTpoqab3tXUx5Tnv" - ], - "license": "AGPL-3.0-only" - }, - "src/base/ProtocolFees.sol": { - "keccak256": "0x1152eee4ac698694bcdbf90b016411112d679812ca0abc1cacd7e6b465e6729a", - "urls": [ - "bzz-raw://c1be6b94c6268b68362111e728598e7c1517b20998fdf6752d08e32d55c210f8", - "dweb:/ipfs/QmStQC274cQqnQSo3QDBcT5BdqEkpwZwFaWwxaYXMZidvw" - ], - "license": "GPL-2.0-or-later" - }, - "src/base/ReactorEvents.sol": { - "keccak256": "0x61df7aa3ef970f1305c5a6d8c68b0d7ab8bebb9b7518e191c8d2fda532859f61", - "urls": [ - "bzz-raw://93db11be28b3394485b57a7b120ca224fdb93b471db8468738406f77ebaa13fc", - "dweb:/ipfs/Qmci4TSUH81C3WDV7TMv56VmiUFZ9MDxZcGTRKhhEPS6gC" - ], - "license": "GPL-2.0-or-later" - }, - "src/base/ReactorStructs.sol": { - "keccak256": "0x78e6db322ca69aaf552e59d5e74a00fd465a802388c2d03f9bf4b711f5704588", - "urls": [ - "bzz-raw://12d8fc82c3543bfe0d2cd44cdbc524bed1f074abafe086f7e58573cbaff2a74e", - "dweb:/ipfs/QmREbamTn3nz89nEjv2uWHNHKSF6Yga2gQ688Cde89xcNT" - ], - "license": "GPL-2.0-or-later" - }, - "src/interfaces/IProtocolFeeController.sol": { - "keccak256": "0x21a895ff5b778abf95753001a20b4004adfadd1bba622eaec18eb81836ede86c", - "urls": [ - "bzz-raw://67f9eae1da9f238f6630247882e382458dcc0135c0a4837b99a44a2360a3845c", - "dweb:/ipfs/QmdJyKhVyD6nAtgdTofaU2xaoWrPGM1Q6Sd7FiN2LxXZQx" - ], - "license": "GPL-2.0-or-later" - }, - "src/interfaces/IReactor.sol": { - "keccak256": "0x23714e546bbeeaa7fe35665d7241319c964421a9fe6d81aead4b85027cabf1e1", - "urls": [ - "bzz-raw://3b94402a2e90f75d6238d4460c0b1125bf67b98523803156b104ce57cafdd05b", - "dweb:/ipfs/QmbY3Mr44MPEMAe9bh9tUSqpPg3AAKfkVfydwJCEzFA14a" - ], - "license": "GPL-2.0-or-later" - }, - "src/interfaces/IReactorCallback.sol": { - "keccak256": "0xf3ee1fe09545fc5be000c33bb6779e897b4e5013bd9de3e7c3107bf466b4dfa1", - "urls": [ - "bzz-raw://12d7fd1ac3dca76614796f0d012ea4de79bf09cf124cc74efffdf25a56756344", - "dweb:/ipfs/QmXyeSrG7caihgzUZdPdPbbRj6v1w65gBnfn9a7HhbVJX9" - ], - "license": "GPL-2.0-or-later" - }, - "src/interfaces/IValidationCallback.sol": { - "keccak256": "0xc31e3a60e210e9a4089f48ba4fae06dec6f4d33da4fbe415cfb8cdc202003bae", - "urls": [ - "bzz-raw://ee145d5fc0e0806dc9db57825142d5d7c3eafc248a27ee301ffd13592f2cda34", - "dweb:/ipfs/QmQr2HBHZKiUu88a3M1Hs4QSjFemsZmPEd115QG6GKjsC1" - ], - "license": "GPL-2.0-or-later" - }, - "src/lib/CurrencyLibrary.sol": { - "keccak256": "0x73688c07cd36b5040e0deca3dd1f21a8b19585d6cdfefb816fae98af92a545ea", - "urls": [ - "bzz-raw://750375d6f0e59f7977b9cfc2cf05fef7b356cea7875fbb71b0ca359d091b8479", - "dweb:/ipfs/QmZbdTSS1BxWqAHjmtwoJsggbRVkwnxynJuaxzKkkakm4Y" - ], - "license": "GPL-2.0-or-later" - }, - "src/lib/DutchDecayLib.sol": { - "keccak256": "0x40df504e1791a670bfc14af79bc8fc1600435e3b43c6734a9a92ed7b780d01fc", - "urls": [ - "bzz-raw://6547e03b07140af7a5a61176bf47f1dd5bd37c34d759726fc82e5c8e14d48c8e", - "dweb:/ipfs/QmZhkeGrKNbmv2avMgkUPjyRbPE9AbzrzPMNsGFh1kUNbe" - ], - "license": "GPL-2.0-or-later" - }, - "src/lib/DutchOrderLib.sol": { - "keccak256": "0xdd6b9bffcc044899fac52e1e9cbe4becc7a40b56d912695e80600224367235e6", - "urls": [ - "bzz-raw://78c08ec074bc21ce610f2e0c3594b383e0cd2301c32239146a771e2e5d2cb975", - "dweb:/ipfs/QmbMQwT9k3RWyTdihqqnu3RDiRCz1XmpMUVwxeyWzChKB5" - ], - "license": "GPL-2.0-or-later" - }, - "src/lib/ExclusivityLib.sol": { - "keccak256": "0x3a0b93c182c269a00b2fdedf22a65af1e8a4cbb436986cffec2f5cc4acff8401", - "urls": [ - "bzz-raw://a1cfcba8b7b4fdddc385e1c2dbe9fcc8ecff9d0d6e2d82332238bb0aa7505e5a", - "dweb:/ipfs/QmXBfqnN8V2dMdcFyHMjXxJLWL5yAWoEtanKnHqFcmeLv5" - ], - "license": "GPL-2.0-or-later" - }, - "src/lib/OrderInfoLib.sol": { - "keccak256": "0x38672b528e63dc53f36ed82d0037110a9f5893ad0a3957e24f19fa3fdbd80015", - "urls": [ - "bzz-raw://147172dbebf4bb579bc392f25666645719264c0b47378f7fc4f3a95c79bdf5a4", - "dweb:/ipfs/Qmd5wVnQ8rKHHQgUQzEDcAPiqrVzmNr9t2D7d1SqUg9hTo" - ], - "license": "GPL-2.0-or-later" - }, - "src/lib/Permit2Lib.sol": { - "keccak256": "0xcb5e1e204f4ac6ea3fa164b8be1b1d31cbad0dff981072ea2c33abd720369e78", - "urls": [ - "bzz-raw://cfa162286525ef8684112639c7b981c0472b06ce799f2440c626a70c273bb533", - "dweb:/ipfs/QmV1Uy4oodhg4SbCajv9xhiWFuwtU1YcTTvca1cDYCkND9" - ], - "license": "GPL-2.0-or-later" - }, - "src/lib/ResolvedOrderLib.sol": { - "keccak256": "0xc56a31e72001e3e6ee0baf193423a7563cc61ba4869133e1cae5cf998bfe4d96", - "urls": [ - "bzz-raw://4bddef26f26939f48923b11674495515d792cffbb2dc04f092212ff0b9971636", - "dweb:/ipfs/QmS1YAzhYLCi9oDtZN33mwBf5iExdwMhPNcnzh5nA8fPKX" - ], - "license": "GPL-2.0-or-later" - }, - "src/lib/V2DutchOrderLib.sol": { - "keccak256": "0x513f3ccd5924d671ff4a8801e0f2481f52b0def06347e2448a1a2f1346ed99d3", - "urls": [ - "bzz-raw://c777808d9f6edc1eb04d489cf402c4e8203c8a0fbf47b023192b105f1e9a2a72", - "dweb:/ipfs/QmQxoNZiwJcADeFVoGvM5ckCBrZoURAFncGBBA1Wfb6zTd" - ], - "license": "GPL-2.0-or-later" - }, - "src/reactors/BaseReactor.sol": { - "keccak256": "0xd31b25dd7209a704fb17865e8112bc83a72e1816bc1d636c89366b2f1e3c4210", - "urls": [ - "bzz-raw://f10c83e80f01d728f48aa06905e272eef776159ea83b53885c182da15597e3ca", - "dweb:/ipfs/Qmf2nx9abWsTMCVBV1At66HS3FVTXHreUVCpwVDKjkYadY" - ], - "license": "GPL-2.0-or-later" - }, - "src/reactors/V2DutchOrderReactor.sol": { - "keccak256": "0x36b2677685d6673d39036e1750866c918c754e5e9cd8672ca8bb1159a7522a73", - "urls": [ - "bzz-raw://ae71cbf90cf3b8758ca1b9ae0d4f600473711ab0951bf279d5e5d9b61d76f649", - "dweb:/ipfs/QmRChvpbAnxBTZnJdTmQ1nxQmE4LDMQLeW4C1tN1CUo6NA" - ], - "license": "GPL-2.0-or-later" - } - }, - "version": 1 - }, - "id": 66 -} +{"abi":[{"type":"constructor","inputs":[{"name":"_permit2","type":"address","internalType":"contract IPermit2"},{"name":"_protocolFeeOwner","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"execute","inputs":[{"name":"order","type":"tuple","internalType":"struct SignedOrder","components":[{"name":"order","type":"bytes","internalType":"bytes"},{"name":"sig","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeBatch","inputs":[{"name":"orders","type":"tuple[]","internalType":"struct SignedOrder[]","components":[{"name":"order","type":"bytes","internalType":"bytes"},{"name":"sig","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeBatchWithCallback","inputs":[{"name":"orders","type":"tuple[]","internalType":"struct SignedOrder[]","components":[{"name":"order","type":"bytes","internalType":"bytes"},{"name":"sig","type":"bytes","internalType":"bytes"}]},{"name":"callbackData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"executeWithCallback","inputs":[{"name":"order","type":"tuple","internalType":"struct SignedOrder","components":[{"name":"order","type":"bytes","internalType":"bytes"},{"name":"sig","type":"bytes","internalType":"bytes"}]},{"name":"callbackData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"feeController","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IProtocolFeeController"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"permit2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPermit2"}],"stateMutability":"view"},{"type":"function","name":"setProtocolFeeController","inputs":[{"name":"_newFeeController","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Fill","inputs":[{"name":"orderHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"filler","type":"address","indexed":true,"internalType":"address"},{"name":"swapper","type":"address","indexed":true,"internalType":"address"},{"name":"nonce","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ProtocolFeeControllerSet","inputs":[{"name":"oldFeeController","type":"address","indexed":false,"internalType":"address"},{"name":"newFeeController","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"error","name":"DeadlineBeforeEndTime","inputs":[]},{"type":"error","name":"DuplicateFeeOutput","inputs":[{"name":"duplicateToken","type":"address","internalType":"address"}]},{"type":"error","name":"EndTimeBeforeStartTime","inputs":[]},{"type":"error","name":"FeeTooLarge","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"recipient","type":"address","internalType":"address"}]},{"type":"error","name":"IncorrectAmounts","inputs":[]},{"type":"error","name":"InputAndOutputFees","inputs":[]},{"type":"error","name":"InvalidCosignature","inputs":[]},{"type":"error","name":"InvalidCosignerInput","inputs":[]},{"type":"error","name":"InvalidCosignerOutput","inputs":[]},{"type":"error","name":"InvalidFeeToken","inputs":[{"name":"feeToken","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidReactor","inputs":[]},{"type":"error","name":"NativeTransferFailed","inputs":[]},{"type":"error","name":"NoExclusiveOverride","inputs":[]}],"bytecode":{"object":"0x60a06040523480156200001157600080fd5b50604051620034bd380380620034bd8339810160408190526200003491620000b8565b600080546001600160a01b0319166001600160a01b03831690811782556040518492849283928392907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350506001600255506001600160a01b031660805250620000f79050565b6001600160a01b0381168114620000b557600080fd5b50565b60008060408385031215620000cc57600080fd5b8251620000d9816200009f565b6020840151909250620000ec816200009f565b809150509250929050565b6080516133a4620001196000396000818160e00152611ae701526133a46000f3fe60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b436600461244e565b6101eb565b005b6100b96100c93660046124fc565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b961013936600461253e565b6104c5565b34801561014a57600080fd5b506100b96101593660046125dc565b610683565b6100b961016c366004612600565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e63660046125dc565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c5612664565b60200260200101819052506102d981610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061031990849087908790600401612867565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bbe565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff81111561038857610388612635565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d85858381811061046657610466612664565b9050602002810190610478919061292d565b6109f6565b82828151811061048f5761048f612664565b6020908102919091010152600101610449565b506104ac81610b6d565b6104b581610bbe565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e9612635565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c787878381811061046657610466612664565b8282815181106105d9576105d9612664565b60209081029190910101526001016105aa565b506105f681610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061063690849088908890600401612867565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bbe565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b8160008151811061086957610869612664565b602002602001018190525061087d81610b6d565b61088681610bbe565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f838061296b565b810190610a7c9190612daa565b90506000610a8982610d11565b9050610a958183610f43565b610a9e82611142565b6040805160a081018252835181526080840151805160209182015193860151929391840192610acf929091906112a2565b81526080840151805160209182015160608701519290930192610af3929190611374565b8152602001858060200190610b08919061296b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001829052608083015160408101518151606090920151929550610b669286929061145b565b5050919050565b805160005b8181101561035f576000838281518110610b8e57610b8e612664565b60200260200101519050610ba1816114fc565b610bab81336119ec565b610bb58133611ae5565b50600101610b72565b805160005b81811015610d00576000838281518110610bdf57610bdf612664565b602002602001015190506000816040015151905060005b81811015610c6057600083604001518281518110610c1657610c16612664565b60200260200101519050610c5781604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611e279092919063ffffffff16565b50600101610bf6565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610ca957610ca9612664565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610cee91815260200190565b60405180910390a45050600101610bc3565b5047156104c1576104c13347611e6e565b6040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260009060b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260808301909152605280835290919061326260208301396040518060c00160405280608d81526020016132e2608d9139604051602001610e9193929190612ea7565b60405160208183030381529060405280519060200120610eb48360000151611f08565b6020808501516040808701518051938101519101516060880151929392610eda90611fa2565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff938416606087015292909116608085015260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b6080810151602001518151606001511015610f8a576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808260a00151806020019051810190610fa59190612eea565b9150915060008360a00151604081518110610fc257610fc2612664565b602001015160f81c60f81b60f81c905060006001868660800151604051602001610fec9190612f0e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526110289291602001612f9e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600084529083018083525260ff851690820152606081018690526080810185905260a0016020604051602081039080840390855afa1580156110a4573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff16141580611103575073ffffffffffffffffffffffffffffffffffffffff8116155b1561113a576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6080808201510151156111ab578060400151602001518160800151608001511115611199576040517fac9143e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808082015101516040820151602001525b806060015151816080015160a0015151146111f2576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8160600151518110156104c15760008260600151828151811061121a5761121a612664565b602002602001015190506000836080015160a00151838151811061124057611240612664565b6020026020010151905080600014611298578160200151811015611290576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602082018190525b50506001016111f5565b6112dc6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b83604001518460200151111561131e576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611334856020015186604001518686612040565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff81111561139257611392612635565b6040519080825280602002602001820160405280156113fb57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113b05790505b50915060005b818110156114525761142d86828151811061141e5761141e612664565b602002602001015186866120e7565b83828151811061143f5761143f612664565b6020908102919091010152600101611401565b50509392505050565b61146583836121b7565b61067d57806114a0576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604084015160005b815181101561113a5760008282815181106114c5576114c5612664565b602002602001015190506114ee846127106114e09190612fc4565b602083015190612710612204565b6020909101526001016114a8565b60015473ffffffffffffffffffffffffffffffffffffffff1661151c5750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611573908590600401612ffe565b600060405180830381865afa158015611590573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526115d69190810190613011565b60408301515181519192509060006115ee8284612fc4565b67ffffffffffffffff81111561160657611606612635565b60405190808252806020026020018201604052801561166f57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116245790505b50905060005b838110156116c0578560400151818151811061169357611693612664565b60200260200101518282815181106116ad576116ad612664565b6020908102919091010152600101611675565b5060008060005b848110156119db5760008782815181106116e3576116e3612664565b6020026020010151905060005b828110156117a15788818151811061170a5761170a612664565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036117995781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6001016116f0565b506000805b888110156118625760008b6040015182815181106117c6576117c6612664565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1603611859578515611843576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516118529084612fc4565b9250600196505b506001016117a6565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036118db5784156118c2576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516118d49082612fc4565b9050600193505b806000036119305781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b61193e816005612710612248565b826020015111156119b1578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106119c6576119c6612664565b602090810291909101015250506001016116c7565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611a3d576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b90611ab990849086906004016130e1565b60006040518083038186803b158015611ad157600080fd5b505afa15801561113a573d6000803e3d6000fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611ba5846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8616825280870151810151908201528560000151602001518660800151604051806080016040528060528152602001613262605291396040518060c00160405280608d81526020016132e2608d91396040518060600160405280602e81526020016132b4602e91396040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611d8c94939291602001613110565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611df99695949392600401613199565b600060405180830381600087803b158015611e1357600080fd5b505af115801561113a573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611e4c5761035f8282611e6e565b61035f73ffffffffffffffffffffffffffffffffffffffff8416338484612284565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611ec8576040519150601f19603f3d011682016040523d82523d6000602084013e611ecd565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d81526020016132e2608d913980516020918201208351848301516040808701516060880151608089015160a08a01518051908901209351610f2698939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff811115611fc257611fc2612635565b6040519080825280601f01601f191660200182016040528015611fec576020820181803683370190505b50905060005b835181101561203157600061201f85838151811061201257612012612664565b6020026020010151612376565b60208381028501015250600101611ff2565b50805160209091012092915050565b60008385036120505750836120df565b828211612089576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4282116120975750826120df565b4283106120a55750836120df565b42839003838303868610156120ca576120c18688038383612248565b870392506120dc565b6120d78787038383612204565b870192505b50505b949350505050565b6040805160608101825260008082526020820181905291810191909152836040015184602001511015612146576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061215c856020015186604001518686612040565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff831615806121db57508142115b806121fb575073ffffffffffffffffffffffffffffffffffffffff831633145b90505b92915050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261223957600080fd5b50910281810615159190040190565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261227d57600080fd5b5091020490565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d116001600051141617169150508061236f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b5050505050565b600060405180608001604052806052815260200161326260529139805160209182012083518483015160408087015160608801519151610f26969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b6000604082840312156123ff57600080fd5b50919050565b60008083601f84011261241757600080fd5b50813567ffffffffffffffff81111561242f57600080fd5b60208301915083602082850101111561244757600080fd5b9250929050565b60008060006040848603121561246357600080fd5b833567ffffffffffffffff8082111561247b57600080fd5b612487878388016123ed565b9450602086013591508082111561249d57600080fd5b506124aa86828701612405565b9497909650939450505050565b60008083601f8401126124c957600080fd5b50813567ffffffffffffffff8111156124e157600080fd5b6020830191508360208260051b850101111561244757600080fd5b6000806020838503121561250f57600080fd5b823567ffffffffffffffff81111561252657600080fd5b612532858286016124b7565b90969095509350505050565b6000806000806040858703121561255457600080fd5b843567ffffffffffffffff8082111561256c57600080fd5b612578888389016124b7565b9096509450602087013591508082111561259157600080fd5b5061259e87828801612405565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356125d7816125aa565b919050565b6000602082840312156125ee57600080fd5b81356125f9816125aa565b9392505050565b60006020828403121561261257600080fd5b813567ffffffffffffffff81111561262957600080fd5b6120df848285016123ed565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156126ae578181015183820152602001612696565b50506000910152565b600081518084526126cf816020860160208601612693565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b83811015612761578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612716565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526127e06101a08501826126b7565b9050602083015161281e6020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b50604083015184820360808601526128368282612701565b915050606083015184820360a086015261285082826126b7565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b838110156128dc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526128ca86835161276c565b95509382019390820190600101612890565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261296157600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126129a057600080fd5b83018035915067ffffffffffffffff8211156129bb57600080fd5b60200191503681900382131561244757600080fd5b60405160c0810167ffffffffffffffff811182821017156129f3576129f3612635565b60405290565b6040516060810167ffffffffffffffff811182821017156129f3576129f3612635565b6040516080810167ffffffffffffffff811182821017156129f3576129f3612635565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612a8657612a86612635565b604052919050565b600082601f830112612a9f57600080fd5b813567ffffffffffffffff811115612ab957612ab9612635565b612aea60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612a3f565b818152846020838601011115612aff57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612b2e57600080fd5b612b366129d0565b90508135612b43816125aa565b81526020820135612b53816125aa565b8060208301525060408201356040820152606082013560608201526080820135612b7c816125aa565b608082015260a082013567ffffffffffffffff811115612b9b57600080fd5b612ba784828501612a8e565b60a08301525092915050565b600060608284031215612bc557600080fd5b612bcd6129f9565b90508135612bda816125aa565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612c1257612c12612635565b5060051b60200190565b600082601f830112612c2d57600080fd5b81356020612c42612c3d83612bf8565b612a3f565b82815260079290921b84018101918181019086841115612c6157600080fd5b8286015b84811015612cc65760808189031215612c7e5760008081fd5b612c86612a1c565b8135612c91816125aa565b8152818501358582015260408083013590820152606080830135612cb4816125aa565b90820152835291830191608001612c65565b509695505050505050565b600060c08284031215612ce357600080fd5b612ceb6129d0565b905081358152602080830135818301526040830135612d09816125aa565b80604084015250606083013560608301526080830135608083015260a083013567ffffffffffffffff811115612d3e57600080fd5b8301601f81018513612d4f57600080fd5b8035612d5d612c3d82612bf8565b81815260059190911b82018301908381019087831115612d7c57600080fd5b928401925b82841015612d9a57833582529284019290840190612d81565b60a0860152509295945050505050565b600060208284031215612dbc57600080fd5b813567ffffffffffffffff80821115612dd457600080fd5b908301906101008286031215612de957600080fd5b612df16129d0565b823582811115612e0057600080fd5b612e0c87828601612b1c565b825250612e1b602084016125cc565b6020820152612e2d8660408501612bb3565b604082015260a083013582811115612e4457600080fd5b612e5087828601612c1c565b60608301525060c083013582811115612e6857600080fd5b612e7487828601612cd1565b60808301525060e083013582811115612e8c57600080fd5b612e9887828601612a8e565b60a08301525095945050505050565b60008451612eb9818460208901612693565b845190830190612ecd818360208901612693565b8451910190612ee0818360208801612693565b0195945050505050565b60008060408385031215612efd57600080fd5b505080516020909101519092909150565b6000602080835260e0830184518285015281850151604085015273ffffffffffffffffffffffffffffffffffffffff604086015116606085015260608501516080850152608085015160a085015260a085015160c080860152818151808452610100870191508483019350600092505b80831015612cc65783518252928401926001929092019190840190612f7e565b82815260008251612fb6816020850160208701612693565b919091016020019392505050565b808201808211156121fe577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6020815260006121fb602083018461276c565b6000602080838503121561302457600080fd5b825167ffffffffffffffff81111561303b57600080fd5b8301601f8101851361304c57600080fd5b805161305a612c3d82612bf8565b8181526060918202830184019184820191908884111561307957600080fd5b938501935b838510156130d55780858a0312156130965760008081fd5b61309e6129f9565b85516130a9816125aa565b815285870151878201526040808701516130c2816125aa565b908201528352938401939185019161307e565b50979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006120df604083018461276c565b7f563244757463684f72646572207769746e657373290000000000000000000000815260008551613148816015850160208a01612693565b85519083019061315f816015840160208a01612693565b8551910190613175816015840160208901612693565b845191019061318b816015840160208801612693565b016015019695505050505050565b60006101406131c9838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b602089015160408401526040890151606084015261320a6080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e08401528061010084015261323f818401866126b7565b905082810361012084015261325481856126b7565b999850505050505050505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a264697066735822122035a25d9682571022740f8eb2bbffff059f7e63d59c89e57d9831ce550c37465a64736f6c63430008180033","sourceMap":"1101:4177:66:-:0;;;1828:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1045:5:35;:14;;-1:-1:-1;;;;;;1045:14:35;-1:-1:-1;;;;;1045:14:35;;;;;;;1075:40;;1898:8:66;;1045:14:35;;;;;;:5;1075:40;;1045:5;;1075:40;-1:-1:-1;;1716:1:21;1821:7;:22;-1:-1:-1;;;;;;1352:18:62::1;;::::0;-1:-1:-1;1101:4177:66;;-1:-1:-1;1101:4177:66;14:141:108;-1:-1:-1;;;;;99:31:108;;89:42;;79:70;;145:1;142;135:12;79:70;14:141;:::o;160:423::-;257:6;265;318:2;306:9;297:7;293:23;289:32;286:52;;;334:1;331;324:12;286:52;366:9;360:16;385:41;420:5;385:41;:::i;:::-;495:2;480:18;;474:25;445:5;;-1:-1:-1;508:43:108;474:25;508:43;:::i;:::-;570:7;560:17;;;160:423;;;;;:::o;:::-;1101:4177:66;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061009a5760003560e01c80632d771389116100695780636999b3771161004e5780636999b377146101715780638da5cb5b1461019e578063f2fde38b146101cb57600080fd5b80632d7713891461013e5780633f62192e1461015e57600080fd5b80630d335884146100a65780630d7a16c3146100bb57806312261ee7146100ce57806313fb72c71461012b57600080fd5b366100a157005b600080fd5b6100b96100b436600461244e565b6101eb565b005b6100b96100c93660046124fc565b610364565b3480156100da57600080fd5b506101027f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b961013936600461253e565b6104c5565b34801561014a57600080fd5b506100b96101593660046125dc565b610683565b6100b961016c366004612600565b61078f565b34801561017d57600080fd5b506001546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101aa57600080fd5b506000546101029073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d757600080fd5b506100b96101e63660046125dc565b610894565b6101f3610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90920191018161020a5790505090506102b2846109f6565b816000815181106102c5576102c5612664565b60200260200101819052506102d981610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061031990849087908790600401612867565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b5050505061035481610bbe565b5061035f6001600255565b505050565b61036c610985565b8060008167ffffffffffffffff81111561038857610388612635565b60405190808252806020026020018201604052801561044357816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816103a65790505b50905060005b828110156104a25761047d85858381811061046657610466612664565b9050602002810190610478919061292d565b6109f6565b82828151811061048f5761048f612664565b6020908102919091010152600101610449565b506104ac81610b6d565b6104b581610bbe565b50506104c16001600255565b5050565b6104cd610985565b8260008167ffffffffffffffff8111156104e9576104e9612635565b6040519080825280602002602001820160405280156105a457816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816105075790505b50905060005b828110156105ec576105c787878381811061046657610466612664565b8282815181106105d9576105d9612664565b60209081029190910101526001016105aa565b506105f681610b6d565b6040517f585da628000000000000000000000000000000000000000000000000000000008152339063585da6289061063690849088908890600401612867565b600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b5050505061067181610bbe565b505061067d6001600255565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527fb904ae9529e373e48bc82df4326cceaf1b4c472babf37f5b7dec46fecc6b53e0910160405180910390a15050565b610797610985565b604080516001808252818301909252600091816020015b6040805161016081018252600060a0820181815260c0830182905260e0830182905261010083018290526101208301829052606061014084018190529083528351808201855282815260208082018490528186018490528085019190915293830181905280830152608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816107ae579050509050610856826109f6565b8160008151811061086957610869612664565b602002602001018190525061087d81610b6d565b61088681610bbe565b506108916001600255565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610700565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60028054036109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610700565b60028055565b6040805161016081018252600060a0820181815260c0830182905260e083018290526101008301829052610120830182905260606101408401819052908352835180820185528281526020808201849052818601849052840152928201839052828201929092526080810182905290610a6f838061296b565b810190610a7c9190612daa565b90506000610a8982610d11565b9050610a958183610f43565b610a9e82611142565b6040805160a081018252835181526080840151805160209182015193860151929391840192610acf929091906112a2565b81526080840151805160209182015160608701519290930192610af3929190611374565b8152602001858060200190610b08919061296b565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250602001829052608083015160408101518151606090920151929550610b669286929061145b565b5050919050565b805160005b8181101561035f576000838281518110610b8e57610b8e612664565b60200260200101519050610ba1816114fc565b610bab81336119ec565b610bb58133611ae5565b50600101610b72565b805160005b81811015610d00576000838281518110610bdf57610bdf612664565b602002602001015190506000816040015151905060005b81811015610c6057600083604001518281518110610c1657610c16612664565b60200260200101519050610c5781604001518260200151836000015173ffffffffffffffffffffffffffffffffffffffff16611e279092919063ffffffff16565b50600101610bf6565b5081600001516020015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16868581518110610ca957610ca9612664565b6020026020010151608001517f78ad7ec0e9f89e74012afa58738b6b661c024cb0fd185ee2f616c0a28924bd66856000015160400151604051610cee91815260200190565b60405180910390a45050600101610bc3565b5047156104c1576104c13347611e6e565b6040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260009060b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260808301909152605280835290919061326260208301396040518060c00160405280608d81526020016132e2608d9139604051602001610e9193929190612ea7565b60405160208183030381529060405280519060200120610eb48360000151611f08565b6020808501516040808701518051938101519101516060880151929392610eda90611fa2565b60408051602081019890985287019590955273ffffffffffffffffffffffffffffffffffffffff938416606087015292909116608085015260a084015260c083015260e0820152610100015b604051602081830303815290604052805190602001209050919050565b6080810151602001518151606001511015610f8a576040517f773a618700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808260a00151806020019051810190610fa59190612eea565b9150915060008360a00151604081518110610fc257610fc2612664565b602001015160f81c60f81b60f81c905060006001868660800151604051602001610fec9190612f0e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526110289291602001612f9e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600084529083018083525260ff851690820152606081018690526080810185905260a0016020604051602081039080840390855afa1580156110a4573d6000803e3d6000fd5b5050506020604051035190508073ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff16141580611103575073ffffffffffffffffffffffffffffffffffffffff8116155b1561113a576040517fd7815be100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6080808201510151156111ab578060400151602001518160800151608001511115611199576040517fac9143e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60808082015101516040820151602001525b806060015151816080015160a0015151146111f2576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8160600151518110156104c15760008260600151828151811061121a5761121a612664565b602002602001015190506000836080015160a00151838151811061124057611240612664565b6020026020010151905080600014611298578160200151811015611290576040517fa305df8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602082018190525b50506001016111f5565b6112dc6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b83604001518460200151111561131e576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611334856020015186604001518686612040565b60408051606081018252875173ffffffffffffffffffffffffffffffffffffffff1681526020810192909252958601519581019590955250929392505050565b82516060908067ffffffffffffffff81111561139257611392612635565b6040519080825280602002602001820160405280156113fb57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113b05790505b50915060005b818110156114525761142d86828151811061141e5761141e612664565b602002602001015186866120e7565b83828151811061143f5761143f612664565b6020908102919091010152600101611401565b50509392505050565b61146583836121b7565b61067d57806114a0576040517fb9ec1e9600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604084015160005b815181101561113a5760008282815181106114c5576114c5612664565b602002602001015190506114ee846127106114e09190612fc4565b602083015190612710612204565b6020909101526001016114a8565b60015473ffffffffffffffffffffffffffffffffffffffff1661151c5750565b6001546040517f8aa6cf0300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690638aa6cf0390611573908590600401612ffe565b600060405180830381865afa158015611590573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526115d69190810190613011565b60408301515181519192509060006115ee8284612fc4565b67ffffffffffffffff81111561160657611606612635565b60405190808252806020026020018201604052801561166f57816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816116245790505b50905060005b838110156116c0578560400151818151811061169357611693612664565b60200260200101518282815181106116ad576116ad612664565b6020908102919091010152600101611675565b5060008060005b848110156119db5760008782815181106116e3576116e3612664565b6020026020010151905060005b828110156117a15788818151811061170a5761170a612664565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16036117995781516040517ffff0830300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b6001016116f0565b506000805b888110156118625760008b6040015182815181106117c6576117c6612664565b60200260200101519050836000015173ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1603611859578515611843576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208101516118529084612fc4565b9250600196505b506001016117a6565b50815160208b01515173ffffffffffffffffffffffffffffffffffffffff9182169116036118db5784156118c2576040517fedc7e2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020808b015101516118d49082612fc4565b9050600193505b806000036119305781516040517feddf07f500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610700565b61193e816005612710612248565b826020015111156119b1578151602083015160408085015190517f82e7565600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526024810192909252919091166044820152606401610700565b8186848a01815181106119c6576119c6612664565b602090810291909101015250506001016116c7565b505050604090940193909352505050565b81515173ffffffffffffffffffffffffffffffffffffffff163014611a3d576040517f4ddf4a6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516080015173ffffffffffffffffffffffffffffffffffffffff16156104c1578151608001516040517f6e84ba2b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690636e84ba2b90611ab990849086906004016130e1565b60006040518083038186803b158015611ad157600080fd5b505afa15801561113a573d6000803e3d6000fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe611ba5846040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a081018252602080840180515173ffffffffffffffffffffffffffffffffffffffff1660608085019182529151850151608085015283528451840151918301919091529251909201519082015290565b6040805180820182526000808252602091820152815180830190925273ffffffffffffffffffffffffffffffffffffffff8616825280870151810151908201528560000151602001518660800151604051806080016040528060528152602001613262605291396040518060c00160405280608d81526020016132e2608d91396040518060600160405280602e81526020016132b4602e91396040517f563244757463684f72646572280000000000000000000000000000000000000060208201527f4f72646572496e666f20696e666f2c0000000000000000000000000000000000602d8201527f6164647265737320636f7369676e65722c000000000000000000000000000000603c8201527f616464726573732062617365496e707574546f6b656e2c000000000000000000604d8201527f75696e743235362062617365496e7075745374617274416d6f756e742c00000060648201527f75696e743235362062617365496e707574456e64416d6f756e742c000000000060818201527f44757463684f75747075745b5d20626173654f75747075747329000000000000609c82015260b601604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611d8c94939291602001613110565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905260608a01517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b168352611df99695949392600401613199565b600060405180830381600087803b158015611e1357600080fd5b505af115801561113a573d6000803e3d6000fd5b73ffffffffffffffffffffffffffffffffffffffff8316611e4c5761035f8282611e6e565b61035f73ffffffffffffffffffffffffffffffffffffffff8416338484612284565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611ec8576040519150601f19603f3d011682016040523d82523d6000602084013e611ecd565b606091505b505090508061035f576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060c00160405280608d81526020016132e2608d913980516020918201208351848301516040808701516060880151608089015160a08a01518051908901209351610f2698939492939192910196875273ffffffffffffffffffffffffffffffffffffffff958616602088015293851660408701526060860192909252608085015290911660a083015260c082015260e00190565b600080825160200267ffffffffffffffff811115611fc257611fc2612635565b6040519080825280601f01601f191660200182016040528015611fec576020820181803683370190505b50905060005b835181101561203157600061201f85838151811061201257612012612664565b6020026020010151612376565b60208381028501015250600101611ff2565b50805160209091012092915050565b60008385036120505750836120df565b828211612089576040517f4313345300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4282116120975750826120df565b4283106120a55750836120df565b42839003838303868610156120ca576120c18688038383612248565b870392506120dc565b6120d78787038383612204565b870192505b50505b949350505050565b6040805160608101825260008082526020820181905291810191909152836040015184602001511015612146576040517f7c1f811300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061215c856020015186604001518686612040565b90506040518060600160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001828152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152509150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff831615806121db57508142115b806121fb575073ffffffffffffffffffffffffffffffffffffffff831633145b90505b92915050565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261223957600080fd5b50910281810615159190040190565b6000827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048411830215820261227d57600080fd5b5091020490565b60006040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff841660248201528260448201526020600060648360008a5af13d15601f3d116001600051141617169150508061236f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610700565b5050505050565b600060405180608001604052806052815260200161326260529139805160209182012083518483015160408087015160608801519151610f26969192910194855273ffffffffffffffffffffffffffffffffffffffff93841660208601526040850192909252606084015216608082015260a00190565b6000604082840312156123ff57600080fd5b50919050565b60008083601f84011261241757600080fd5b50813567ffffffffffffffff81111561242f57600080fd5b60208301915083602082850101111561244757600080fd5b9250929050565b60008060006040848603121561246357600080fd5b833567ffffffffffffffff8082111561247b57600080fd5b612487878388016123ed565b9450602086013591508082111561249d57600080fd5b506124aa86828701612405565b9497909650939450505050565b60008083601f8401126124c957600080fd5b50813567ffffffffffffffff8111156124e157600080fd5b6020830191508360208260051b850101111561244757600080fd5b6000806020838503121561250f57600080fd5b823567ffffffffffffffff81111561252657600080fd5b612532858286016124b7565b90969095509350505050565b6000806000806040858703121561255457600080fd5b843567ffffffffffffffff8082111561256c57600080fd5b612578888389016124b7565b9096509450602087013591508082111561259157600080fd5b5061259e87828801612405565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b80356125d7816125aa565b919050565b6000602082840312156125ee57600080fd5b81356125f9816125aa565b9392505050565b60006020828403121561261257600080fd5b813567ffffffffffffffff81111561262957600080fd5b6120df848285016123ed565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156126ae578181015183820152602001612696565b50506000910152565b600081518084526126cf816020860160208601612693565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151808452602080850194506020840160005b83811015612761578151805173ffffffffffffffffffffffffffffffffffffffff908116895284820151858a0152604091820151169088015260609096019590820190600101612716565b509495945050505050565b6000815160e0845273ffffffffffffffffffffffffffffffffffffffff8082511660e08601528060208301511661010086015260408201516101208601526060820151610140860152806080830151166101608601525060a0810151905060c06101808501526127e06101a08501826126b7565b9050602083015161281e6020860182805173ffffffffffffffffffffffffffffffffffffffff16825260208082015190830152604090810151910152565b50604083015184820360808601526128368282612701565b915050606083015184820360a086015261285082826126b7565b915050608083015160c08501528091505092915050565b6000604082016040835280865180835260608501915060608160051b8601019250602080890160005b838110156128dc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030185526128ca86835161276c565b95509382019390820190600101612890565b5050858403818701528684528688828601376000848801820152601f9096017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092019094019695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261296157600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126129a057600080fd5b83018035915067ffffffffffffffff8211156129bb57600080fd5b60200191503681900382131561244757600080fd5b60405160c0810167ffffffffffffffff811182821017156129f3576129f3612635565b60405290565b6040516060810167ffffffffffffffff811182821017156129f3576129f3612635565b6040516080810167ffffffffffffffff811182821017156129f3576129f3612635565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612a8657612a86612635565b604052919050565b600082601f830112612a9f57600080fd5b813567ffffffffffffffff811115612ab957612ab9612635565b612aea60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612a3f565b818152846020838601011115612aff57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612b2e57600080fd5b612b366129d0565b90508135612b43816125aa565b81526020820135612b53816125aa565b8060208301525060408201356040820152606082013560608201526080820135612b7c816125aa565b608082015260a082013567ffffffffffffffff811115612b9b57600080fd5b612ba784828501612a8e565b60a08301525092915050565b600060608284031215612bc557600080fd5b612bcd6129f9565b90508135612bda816125aa565b80825250602082013560208201526040820135604082015292915050565b600067ffffffffffffffff821115612c1257612c12612635565b5060051b60200190565b600082601f830112612c2d57600080fd5b81356020612c42612c3d83612bf8565b612a3f565b82815260079290921b84018101918181019086841115612c6157600080fd5b8286015b84811015612cc65760808189031215612c7e5760008081fd5b612c86612a1c565b8135612c91816125aa565b8152818501358582015260408083013590820152606080830135612cb4816125aa565b90820152835291830191608001612c65565b509695505050505050565b600060c08284031215612ce357600080fd5b612ceb6129d0565b905081358152602080830135818301526040830135612d09816125aa565b80604084015250606083013560608301526080830135608083015260a083013567ffffffffffffffff811115612d3e57600080fd5b8301601f81018513612d4f57600080fd5b8035612d5d612c3d82612bf8565b81815260059190911b82018301908381019087831115612d7c57600080fd5b928401925b82841015612d9a57833582529284019290840190612d81565b60a0860152509295945050505050565b600060208284031215612dbc57600080fd5b813567ffffffffffffffff80821115612dd457600080fd5b908301906101008286031215612de957600080fd5b612df16129d0565b823582811115612e0057600080fd5b612e0c87828601612b1c565b825250612e1b602084016125cc565b6020820152612e2d8660408501612bb3565b604082015260a083013582811115612e4457600080fd5b612e5087828601612c1c565b60608301525060c083013582811115612e6857600080fd5b612e7487828601612cd1565b60808301525060e083013582811115612e8c57600080fd5b612e9887828601612a8e565b60a08301525095945050505050565b60008451612eb9818460208901612693565b845190830190612ecd818360208901612693565b8451910190612ee0818360208801612693565b0195945050505050565b60008060408385031215612efd57600080fd5b505080516020909101519092909150565b6000602080835260e0830184518285015281850151604085015273ffffffffffffffffffffffffffffffffffffffff604086015116606085015260608501516080850152608085015160a085015260a085015160c080860152818151808452610100870191508483019350600092505b80831015612cc65783518252928401926001929092019190840190612f7e565b82815260008251612fb6816020850160208701612693565b919091016020019392505050565b808201808211156121fe577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6020815260006121fb602083018461276c565b6000602080838503121561302457600080fd5b825167ffffffffffffffff81111561303b57600080fd5b8301601f8101851361304c57600080fd5b805161305a612c3d82612bf8565b8181526060918202830184019184820191908884111561307957600080fd5b938501935b838510156130d55780858a0312156130965760008081fd5b61309e6129f9565b85516130a9816125aa565b815285870151878201526040808701516130c2816125aa565b908201528352938401939185019161307e565b50979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006120df604083018461276c565b7f563244757463684f72646572207769746e657373290000000000000000000000815260008551613148816015850160208a01612693565b85519083019061315f816015840160208a01612693565b8551910190613175816015840160208901612693565b845191019061318b816015840160208801612693565b016015019695505050505050565b60006101406131c9838a51805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b602089015160408401526040890151606084015261320a6080840189805173ffffffffffffffffffffffffffffffffffffffff168252602090810151910152565b73ffffffffffffffffffffffffffffffffffffffff871660c08401528560e08401528061010084015261323f818401866126b7565b905082810361012084015261325481856126b7565b999850505050505050505056fe44757463684f7574707574286164647265737320746f6b656e2c75696e74323536207374617274416d6f756e742c75696e7432353620656e64416d6f756e742c6164647265737320726563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f72646572496e666f28616464726573732072656163746f722c6164647265737320737761707065722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e652c61646472657373206164646974696f6e616c56616c69646174696f6e436f6e74726163742c6279746573206164646974696f6e616c56616c69646174696f6e4461746129a264697066735822122035a25d9682571022740f8eb2bbffff059f7e63d59c89e57d9831ce550c37465a64736f6c63430008180033","sourceMap":"1101:4177:66:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1721:435:62;;;;;;:::i;:::-;;:::i;:::-;;2191:453;;;;;;:::i;:::-;;:::i;1212:33::-;;;;;;;;;;;;;;;;;;2288:42:108;2276:55;;;2258:74;;2246:2;2231:18;1212:33:62;;;;;;;2679:614;;;;;;:::i;:::-;;:::i;4161:289:43:-;;;;;;;;;;-1:-1:-1;4161:289:43;;;;;:::i;:::-;;:::i;1412:274:62:-;;;;;;:::i;:::-;;:::i;1479:43:43:-;;;;;;;;;;-1:-1:-1;1479:43:43;;;;;;;;690:20:35;;;;;;;;;;-1:-1:-1;690:20:35;;;;;;;;1312:161;;;;;;;;;;-1:-1:-1;1312:161:35;;;;;:::i;:::-;;:::i;1721:435:62:-;2261:21:21;:19;:21::i;:::-;1932:22:62::1;::::0;;1952:1:::1;1932:22:::0;;;;;::::1;::::0;;;1892:37:::1;::::0;1932:22:::1;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1932:22:62;;;;;;;::::1;::::0;::::1;;;;;1892:62;;1984:15;1993:5;1984:8;:15::i;:::-;1964:14;1979:1;1964:17;;;;;;;;:::i;:::-;;;;;;:35;;;;2010:24;2019:14;2010:8;:24::i;:::-;2044:74;::::0;;;;2061:10:::1;::::0;2044:44:::1;::::0;:74:::1;::::0;2089:14;;2105:12;;;;2044:74:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2128:21;2134:14;2128:5;:21::i;:::-;1882:274;2303:20:21::0;1716:1;2809:7;:22;2629:209;2303:20;1721:435:62;;;:::o;2191:453::-;2261:21:21;:19;:21::i;:::-;2316:6:62;2293:20:::1;2316:6:::0;2379:33:::1;::::0;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2379:33:62;;;;;;;::::1;::::0;::::1;;;;;;2339:73;;2452:9;2447:115;2471:12;2467:1;:16;2447:115;;;2528:19;2537:6;;2544:1;2537:9;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;2528:8;:19::i;:::-;2508:14;2523:1;2508:17;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:39;2485:3:::1;;2447:115;;;;2582:24;2591:14;2582:8;:24::i;:::-;2616:21;2622:14;2616:5;:21::i;:::-;2283:361;;2303:20:21::0;1716:1;2809:7;:22;2629:209;2303:20;2191:453:62;;:::o;2679:614::-;2261:21:21;:19;:21::i;:::-;2881:6:62;2858:20:::1;2881:6:::0;2944:33:::1;::::0;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2944:33:62;;;;;;;::::1;::::0;::::1;;;;;;2904:73;;3017:9;3012:115;3036:12;3032:1;:16;3012:115;;;3093:19;3102:6;;3109:1;3102:9;;;;;;;:::i;3093:19::-;3073:14;3088:1;3073:17;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:39;3050:3:::1;;3012:115;;;;3147:24;3156:14;3147:8;:24::i;:::-;3181:74;::::0;;;;3198:10:::1;::::0;3181:44:::1;::::0;:74:::1;::::0;3226:14;;3242:12;;;;3181:74:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;3265:21;3271:14;3265:5;:21::i;:::-;2848:445;;2303:20:21::0;1716:1;2809:7;:22;2629:209;2303:20;2679:614:62;;;;:::o;4161:289:43:-;778:5:35;;;;764:10;:19;756:44;;;;;;;9611:2:108;756:44:35;;;9593:21:108;9650:2;9630:18;;;9623:30;9689:14;9669:18;;;9662:42;9721:18;;756:44:35;;;;;;;;;4286:13:43::1;::::0;;::::1;4310:57:::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;4382:61:::1;::::0;;4286:13;;;::::1;9985:34:108::0;;;10050:2;10035:18;;10028:43;;;;4382:61:43::1;::::0;9897:18:108;4382:61:43::1;;;;;;;4241:209;4161:289:::0;:::o;1412:274:62:-;2261:21:21;:19;:21::i;:::-;1546:22:62::1;::::0;;1566:1:::1;1546:22:::0;;;;;::::1;::::0;;;1506:37:::1;::::0;1546:22:::1;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1546:22:62;;;;;;;::::1;::::0;::::1;;;;;1506:62;;1598:15;1607:5;1598:8;:15::i;:::-;1578:14;1593:1;1578:17;;;;;;;;:::i;:::-;;;;;;:35;;;;1624:24;1633:14;1624:8;:24::i;:::-;1658:21;1664:14;1658:5;:21::i;:::-;1496:190;2303:20:21::0;1716:1;2809:7;:22;2629:209;2303:20;1412:274:62;:::o;1312:161:35:-;778:5;;;;764:10;:19;756:44;;;;;;;9611:2:108;756:44:35;;;9593:21:108;9650:2;9630:18;;;9623:30;9689:14;9669:18;;;9662:42;9721:18;;756:44:35;9409:336:108;756:44:35;1392:5:::1;:16:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;1424:42:::1;::::0;1392:16;;1445:10:::1;::::0;1424:42:::1;::::0;1392:5;1424:42:::1;1312:161:::0;:::o;2336:287:21:-;1759:1;2468:7;;:19;2460:63;;;;;;;10284:2:108;2460:63:21;;;10266:21:108;10323:2;10303:18;;;10296:30;10362:33;10342:18;;;10335:61;10413:18;;2460:63:21;10082:355:108;2460:63:21;1759:1;2598:18;;2336:287::o;1967:1068:66:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2188:17:66;:11;;:17;:::i;:::-;2177:45;;;;;;;:::i;:::-;2149:73;;2334:17;2354:12;:5;:10;:12::i;:::-;2334:32;;2377;2392:9;2403:5;2377:14;:32::i;:::-;2419:33;2446:5;2419:26;:33::i;:::-;2479:342;;;;;;;;2513:10;;2479:342;;2566:18;;;;:33;;2479:342;2601:31;;;;2544:15;;;;2479:342;;;;;;2544:89;;:15;;2566:33;2544:21;:89::i;:::-;2479:342;;2680:18;;;;:33;;2479:342;2715:31;;;;2656:17;;;;2479:342;;;;;2656:91;;:17;2680:33;2656:23;:91::i;:::-;2479:342;;;;2766:11;:15;;;;;;;;:::i;:::-;2479:342;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2479:342:66;;;-1:-1:-1;2479:342:66;;;;;2882:18;;;;:34;;;;2930:33;;2977:41;;;;;2463:358;;-1:-1:-1;2831:197:66;;2463:358;;2930:33;2831:37;:197::i;:::-;2139:896;;1967:1068;;;:::o;3441:405:62:-;3532:13;;3509:20;3579:251;3603:12;3599:1;:16;3579:251;;;3640:26;3669:6;3676:1;3669:9;;;;;;;;:::i;:::-;;;;;;;3640:38;;3696:18;3708:5;3696:11;:18::i;:::-;3732:26;:5;3747:10;3732:14;:26::i;:::-;3776:39;3797:5;3804:10;3776:20;:39::i;:::-;-1:-1:-1;3617:3:62;;3579:251;;3968:1267;4056:13;;4033:20;4236:536;4260:12;4256:1;:16;4236:536;;;4297:34;4334:6;4341:1;4334:9;;;;;;;;:::i;:::-;;;;;;;4297:46;;4361:21;4385:13;:21;;;:28;4361:52;;4436:9;4431:217;4455:13;4451:1;:17;4431:217;;;4497:25;4525:13;:21;;;4547:1;4525:24;;;;;;;;:::i;:::-;;;;;;;4497:52;;4571:58;4597:6;:16;;;4615:6;:13;;;4571:6;:12;;;:25;;;;:58;;;;;:::i;:::-;-1:-1:-1;4470:3:62;;4431:217;;;;4704:13;:18;;;:26;;;4671:86;;4692:10;4671:86;;4676:6;4683:1;4676:9;;;;;;;;:::i;:::-;;;;;;;:14;;;4671:86;4732:13;:18;;;:24;;;4671:86;;;;18365:25:108;;18353:2;18338:18;;18219:177;4671:86:62;;;;;;;;-1:-1:-1;;4274:3:62;;4236:536;;;-1:-1:-1;5112:21:62;:25;5108:121;;5153:65;5184:10;5196:21;5153:30;:65::i;2594:423:61:-;1589:256;;19221:15:108;1589:256:61;;;19209:28:108;19267:17;19253:12;;;19246:39;19315:19;19301:12;;;19294:41;19365:25;19351:12;;;19344:47;19421:31;19407:12;;;19400:53;19483:29;19469:12;;;19462:51;19544:28;19529:13;;;19522:51;2658:7:61;;19589:13:108;;1589:256:61;;;;;;;;;;1935:31;;;;;;;;;;1589:256;;;1935:31;1589:256;1935:31;;;1968:28;;;;;;;;;;;;;;;;;1897:100;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2047:21;;;;;;2768:17;:5;:10;;;:15;:17::i;:::-;2803:14;;;;;2835:15;;;;;:21;;2874:27;;;;2919:25;;;2962:17;;;;2803:14;;2835:21;2962:24;;:22;:24::i;:::-;2707:293;;;;;;20645:25:108;;;;20686:18;;20679:34;;;;20732:42;20810:15;;;20790:18;;;20783:43;20862:15;;;;20842:18;;;20835:43;20894:19;;;20887:35;20938:19;;;20931:35;20982:19;;;20975:35;20617:19;;2707:293:61;;;;;;;;;;;;;2684:326;;;;;;2677:333;;2594:423;;;:::o;4638:638:66:-;4758:18;;;;:31;;;4736:10;;:19;;;:53;4732:114;;;4812:23;;;;;;;;;;;;;;4732:114;4857:9;4868;4892:5;:17;;;4881:49;;;;;;;;;;;;:::i;:::-;4856:74;;;;4940:7;4956:5;:17;;;4974:2;4956:21;;;;;;;;:::i;:::-;;;;;;;;;4950:28;;4940:38;;5047:14;5064:90;5101:9;5123:5;:18;;;5112:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;5084:59;;;5112:30;5084:59;;:::i;:::-;;;;;;;;;;;;;;5074:70;;5084:59;5074:70;;;;5064:90;;;;;;;;;22958:25:108;23031:4;23019:17;;22999:18;;;22992:45;23053:18;;;23046:34;;;23096:18;;;23089:34;;;22930:19;;5064:90:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5047:107;;5186:6;5168:24;;:5;:14;;;:24;;;;:48;;;-1:-1:-1;5196:20:66;;;;5168:48;5164:106;;;5239:20;;;;;;;;;;;;;;5164:106;4722:554;;;;4638:638;;:::o;3423:936::-;3514:18;;;;;:30;;:35;3510:267;;3602:5;:15;;;:27;;;3569:5;:18;;;:30;;;:60;3565:128;;;3656:22;;;;;;;;;;;;;;3565:128;3736:18;;;;;:30;;3706:15;;;;:27;;:60;3510:267;3834:5;:17;;;:24;3791:5;:18;;;:32;;;:39;:67;3787:128;;3881:23;;;;;;;;;;;;;;3787:128;3929:9;3924:429;3948:5;:17;;;:24;3944:1;:28;3924:429;;;3993:25;4021:5;:17;;;4039:1;4021:20;;;;;;;;:::i;:::-;;;;;;;3993:48;;4055:20;4078:5;:18;;;:32;;;4111:1;4078:35;;;;;;;;:::i;:::-;;;;;;;4055:58;;4131:12;4147:1;4131:17;4127:216;;4187:6;:18;;;4172:12;:33;4168:110;;;4236:23;;;;;;;;;;;;;;4168:110;4295:18;;;:33;;;4127:216;-1:-1:-1;;3974:3:66;;3924:429;;4025:462:53;4158:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;4158:24:53;4222:5;:15;;;4202:5;:17;;;:35;4198:91;;;4260:18;;;;;;;;;;;;;;4198:91;4299:20;4322:85;4342:5;:17;;;4361:5;:15;;;4378:14;4394:12;4322:19;:85::i;:::-;4426:54;;;;;;;;4437:11;;4426:54;;;;;;;;;;;4464:15;;;;4426:54;;;;;;;-1:-1:-1;4426:54:53;;4025:462;-1:-1:-1;;;4025:462:53:o;3300:453::-;3504:14;;3438:27;;3504:14;3537:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;3537:31:53;;;;;;;;;;;;;;;3528:40;;3607:9;3602:135;3626:12;3622:1;:16;3602:135;;;3675:47;3681:7;3689:1;3681:10;;;;;;;;:::i;:::-;;;;;;;3693:14;3709:12;3675:5;:47::i;:::-;3663:6;3670:1;3663:9;;;;;;;;:::i;:::-;;;;;;;;;;:59;3640:3;;3602:135;;;;3471:282;3300:453;;;;;:::o;1073:927:56:-;1352:47;1369:9;1380:18;1352:16;:47::i;:::-;1415:7;1348:84;1536:22;1532:103;;1603:21;;;;;;;;;;;;;;1532:103;1720:13;;;;1689:28;1743:251;1767:7;:14;1763:1;:18;1743:251;;;1798:25;1826:7;1834:1;1826:10;;;;;;;;:::i;:::-;;;;;;;1798:38;;1866:57;1895:22;743:6;1889:28;;;;:::i;:::-;1866:13;;;;;743:6;1866:22;:57::i;:::-;1850:13;;;;:73;1966:3;;1743:251;;1825:2185:43;1910:13;;1902:36;1910:13;1898:73;;1825:2185;:::o;1898:73::-;2015:13;;:34;;;;;1981:31;;2015:13;;;:27;;:34;;2043:5;;2015:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2083:13;;;;:20;2140:17;;1981:68;;-1:-1:-1;2083:20:43;2059:21;2294:32;2140:17;2083:20;2294:32;:::i;:::-;2276:51;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;2276:51:43;;;;;;;;;;;;;;;2242:85;;2343:9;2338:101;2362:13;2358:1;:17;2338:101;;;2412:5;:13;;;2426:1;2412:16;;;;;;;;:::i;:::-;;;;;;;2396:10;2407:1;2396:13;;;;;;;;:::i;:::-;;;;;;;;;;:32;2377:3;;2338:101;;;;2449:19;2486:18;2527:9;2522:1445;2546:16;2542:1;:20;2522:1445;;;2583:28;2614:10;2625:1;2614:13;;;;;;;;:::i;:::-;;;;;;;2583:44;;2682:9;2677:191;2701:1;2697;:5;2677:191;;;2750:10;2761:1;2750:13;;;;;;;;:::i;:::-;;;;;;;:19;;;2731:38;;:9;:15;;;:38;;;2727:127;;2819:15;;2800:35;;;;;2288:42:108;2276:55;;;2800:35:43;;;2258:74:108;2231:18;;2800:35:43;2094:244:108;2727:127:43;2704:3;;2677:191;;;-1:-1:-1;2933:18:43;;2965:354;2989:13;2985:1;:17;2965:354;;;3027:25;3055:5;:13;;;3069:1;3055:16;;;;;;;;:::i;:::-;;;;;;;3027:44;;3109:9;:15;;;3093:31;;:6;:12;;;:31;;;3089:216;;3152:13;3148:46;;;3174:20;;;;;;;;;;;;;;3148:46;3230:13;;;;3216:27;;;;:::i;:::-;;;3282:4;3265:21;;3089:216;-1:-1:-1;3004:3:43;;2965:354;;;-1:-1:-1;3415:15:43;;3393:11;;;;:17;3385:45;;;;;;;3381:219;;3454:14;3450:47;;;3477:20;;;;;;;;;;;;;;3450:47;3529:11;;;;;:18;;3515:32;;;;:::i;:::-;;;3581:4;3565:20;;3381:219;3618:10;3632:1;3618:15;3614:60;;3658:15;;3642:32;;;;;2288:42:108;2276:55;;;3642:32:43;;;2258:74:108;2231:18;;3642:32:43;2094:244:108;3614:60:43;3712:39;:10;1424:1;1373:6;3712:21;:39::i;:::-;3693:9;:16;;;:58;3689:171;;;3790:15;;3807:16;;;;3825:19;;;;;3778:67;;;;;25375:42:108;25444:15;;;3778:67:43;;;25426:34:108;25476:18;;;25469:34;;;;25539:15;;;;25519:18;;;25512:43;25338:18;;3778:67:43;25163:398:108;3689:171:43;3933:9;3901:10;3928:1;3912:13;:17;3901:29;;;;;;;;:::i;:::-;;;;;;;;;;:41;-1:-1:-1;;2564:3:43;;2522:1445;;;-1:-1:-1;;;3977:13:43;;;;:26;;;;-1:-1:-1;;;1825:2185:43:o;429:396:60:-;552:18;;:26;527:52;;535:4;527:52;523:106;;602:16;;;;;;;;;;;;;;523:106;651:18;;:47;;;643:70;;;639:180;;729:18;;:47;;;:79;;;;;:56;;;;;;;:79;;786:6;;729:13;;:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3073:344:66;3171:7;:33;;;3218:16;:5;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;509:303:59;;;572:149;;;;;641:11;;;;;;:17;572:149;;509:303;;;;572:149;;;685:11;;:21;;;572:149;;;;509:303;;742:10;;:16;;;509:303;;;;;;;782:10;;:19;;;;509:303;;;;;349:470;3218:16:66;-1:-1:-1;;;;;;;;;;;;;;;;;1071:90:59;;;;;;;;;;;;;1141:11;;;;:18;;;1071:90;;;;3287:5:66;:10;;;:18;;;3319:5;:10;;;2300:31:61;;;;;;;;;;;;;;;;;2345:28;;;;;;;;;;;;;;;;;2387:36;;;;;;;;;;;;;;;;;1589:256;;19221:15:108;1589:256:61;;;19209:28:108;19267:17;19253:12;;;19246:39;19315:19;19301:12;;;19294:41;19365:25;19351:12;;;19344:47;19421:31;19407:12;;;19400:53;19483:29;19469:12;;;19462:51;19544:28;19529:13;;;19522:51;19589:13;;1589:256:61;;;;;;;;;;;;;;2233:233;;;;;1589:256;2233:233;;:::i;:::-;;;;;;;;;;;;;;;3391:9:66;;;;3171:239;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1478:434:52;2501:18;;;1572:334;;1695:33;1710:9;1721:6;1695:14;:33::i;1572:334::-;1832:63;:32;;;1865:10;1877:9;1888:6;1832:32;:63::i;2084:189::-;2163:12;2180:9;:14;;2202:6;2180:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2162:51;;;2228:7;2223:43;;2244:22;;;;;;;;;;;;;;574:416:58;634:7;461:15;;;;;;;;;;;;;;;;;451:26;;;;;;;749:12;;779;;;;809:10;;;;;837:13;;;;868:33;;;;929:29;;;;919:40;;;;;;683:290;;;;809:10;;837:13;;868:33;;919:40;683:290;28918:25:108;;;28962:42;29040:15;;;29035:2;29020:18;;29013:43;29092:15;;;29087:2;29072:18;;29065:43;29139:2;29124:18;;29117:34;;;;29182:3;29167:19;;29160:35;29232:15;;;29226:3;29211:19;;29204:44;29279:3;29264:19;;29257:35;28905:3;28890:19;;28556:742;3091:487:54;3158:7;3201:25;3244:7;:14;3239:2;:19;3229:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3229:30:54;;3201:58;;3279:9;3274:243;3298:7;:14;3294:1;:18;3274:243;;;3337:18;3358:16;3363:7;3371:1;3363:10;;;;;;;;:::i;:::-;;;;;;;3358:4;:16::i;:::-;3466:4;3459:12;;;3430:42;;;3423:62;-1:-1:-1;3314:3:54;;3274:243;;;-1:-1:-1;3538:23:54;;;;;;;;3091:487;-1:-1:-1;;3091:487:54:o;1212:1043:53:-;1360:21;1416:9;1401:11;:24;1397:852;;-1:-1:-1;1448:11:53;1441:18;;1397:852;1496:14;1480:12;:30;1476:773;;1533:24;;;;;;;;;;;;;;1476:773;1594:15;1578:12;:31;1574:675;;-1:-1:-1;1641:9:53;1574:675;;;1689:15;1671:14;:33;1667:582;;-1:-1:-1;1736:11:53;1667:582;;;1824:15;:32;;;1893:29;;;1944:23;;;1940:285;;;2021:55;2022:23;;;2058:7;2067:8;2021:36;:55::i;:::-;2007:11;:69;1991:85;;1940:285;;;2153:53;2154:23;;;2188:7;2197:8;2153:34;:53::i;:::-;2139:11;:67;2123:83;;1940:285;1778:461;;1667:582;1212:1043;;;;;;:::o;2531:474::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;2732:6:53;:16;;;2711:6;:18;;;:37;2707:93;;;2771:18;;;;;;;;;;;;;;2707:93;2810:21;2834:87;2854:6;:18;;;2874:6;:16;;;2892:14;2908:12;2834:19;:87::i;:::-;2810:111;;2940:58;;;;;;;;2952:6;:12;;;2940:58;;;;;;2966:13;2940:58;;;;2981:6;:16;;;2940:58;;;;;2931:67;;2697:308;2531:474;;;;;:::o;2378:216:56:-;2474:4;2497:23;;;;;:63;;;2542:18;2524:15;:36;2497:63;:90;;;-1:-1:-1;2564:23:56;;;2577:10;2564:23;2497:90;2490:97;;2378:216;;;;;:::o;2096:672:38:-;2210:9;2458:1;2445:11;2441:19;2438:1;2435:26;2432:1;2428:34;2421:42;2408:11;2404:60;2394:116;;2494:1;2491;2484:12;2394:116;-1:-1:-1;2728:9:38;;2691:27;;;2688:34;;2724:27;;;2684:68;;2096:672::o;1564:526::-;1680:9;1928:1;1915:11;1911:19;1908:1;1905:26;1902:1;1898:34;1891:42;1878:11;1874:60;1864:116;;1964:1;1961;1954:12;1864:116;-1:-1:-1;2051:9:38;;2047:27;;1564:526::o;1328:1782:39:-;1466:12;1636:4;1630:11;1778:66;1759:17;1752:93;1902:42;1896:4;1892:53;1888:1;1869:17;1865:25;1858:88;2042:42;2038:2;2034:51;2029:2;2010:17;2006:26;1999:87;2172:6;2167:2;2148:17;2144:26;2137:42;3026:2;3023:1;3018:3;2999:17;2996:1;2989:5;2982;2977:52;2545:16;2538:24;2532:2;2514:16;2511:24;2507:1;2503;2497:8;2494:15;2490:46;2487:76;2287:756;2276:767;;;3071:7;3063:40;;;;;;;29505:2:108;3063:40:39;;;29487:21:108;29544:2;29524:18;;;29517:30;29583:22;29563:18;;;29556:50;29623:18;;3063:40:39;29303:344:108;3063:40:39;1456:1654;1328:1782;;;;:::o;2728:234:54:-;2792:7;1695:17;;;;;;;;;;;;;;;;;1685:28;;;;;;;2876:12;;2890:18;;;;2910:16;;;;;2928;;;;2841:104;;;;2910:16;;2928;2841:104;29911:25:108;;;29955:42;30033:15;;;30028:2;30013:18;;30006:43;30080:2;30065:18;;30058:34;;;;30123:2;30108:18;;30101:34;30172:15;30166:3;30151:19;;30144:44;29898:3;29883:19;;29652:542;14:159;78:5;123:2;114:6;109:3;105:16;101:25;98:45;;;139:1;136;129:12;98:45;-1:-1:-1;161:6:108;14:159;-1:-1:-1;14:159:108:o;178:347::-;229:8;239:6;293:3;286:4;278:6;274:17;270:27;260:55;;311:1;308;301:12;260:55;-1:-1:-1;334:20:108;;377:18;366:30;;363:50;;;409:1;406;399:12;363:50;446:4;438:6;434:17;422:29;;498:3;491:4;482:6;474;470:19;466:30;463:39;460:59;;;515:1;512;505:12;460:59;178:347;;;;;:::o;530:673::-;641:6;649;657;710:2;698:9;689:7;685:23;681:32;678:52;;;726:1;723;716:12;678:52;766:9;753:23;795:18;836:2;828:6;825:14;822:34;;;852:1;849;842:12;822:34;875:71;938:7;929:6;918:9;914:22;875:71;:::i;:::-;865:81;;999:2;988:9;984:18;971:32;955:48;;1028:2;1018:8;1015:16;1012:36;;;1044:1;1041;1034:12;1012:36;;1083:60;1135:7;1124:8;1113:9;1109:24;1083:60;:::i;:::-;530:673;;1162:8;;-1:-1:-1;1057:86:108;;-1:-1:-1;;;;530:673:108:o;1208:387::-;1291:8;1301:6;1355:3;1348:4;1340:6;1336:17;1332:27;1322:55;;1373:1;1370;1363:12;1322:55;-1:-1:-1;1396:20:108;;1439:18;1428:30;;1425:50;;;1471:1;1468;1461:12;1425:50;1508:4;1500:6;1496:17;1484:29;;1568:3;1561:4;1551:6;1548:1;1544:14;1536:6;1532:27;1528:38;1525:47;1522:67;;;1585:1;1582;1575:12;1600:489;1718:6;1726;1779:2;1767:9;1758:7;1754:23;1750:32;1747:52;;;1795:1;1792;1785:12;1747:52;1835:9;1822:23;1868:18;1860:6;1857:30;1854:50;;;1900:1;1897;1890:12;1854:50;1939:90;2021:7;2012:6;2001:9;1997:22;1939:90;:::i;:::-;2048:8;;1913:116;;-1:-1:-1;1600:489:108;-1:-1:-1;;;;1600:489:108:o;2343:797::-;2481:6;2489;2497;2505;2558:2;2546:9;2537:7;2533:23;2529:32;2526:52;;;2574:1;2571;2564:12;2526:52;2614:9;2601:23;2643:18;2684:2;2676:6;2673:14;2670:34;;;2700:1;2697;2690:12;2670:34;2739:90;2821:7;2812:6;2801:9;2797:22;2739:90;:::i;:::-;2848:8;;-1:-1:-1;2713:116:108;-1:-1:-1;2936:2:108;2921:18;;2908:32;;-1:-1:-1;2952:16:108;;;2949:36;;;2981:1;2978;2971:12;2949:36;;3020:60;3072:7;3061:8;3050:9;3046:24;3020:60;:::i;:::-;2343:797;;;;-1:-1:-1;3099:8:108;-1:-1:-1;;;;2343:797:108:o;3145:154::-;3231:42;3224:5;3220:54;3213:5;3210:65;3200:93;;3289:1;3286;3279:12;3304:134;3372:20;;3401:31;3372:20;3401:31;:::i;:::-;3304:134;;;:::o;3443:247::-;3502:6;3555:2;3543:9;3534:7;3530:23;3526:32;3523:52;;;3571:1;3568;3561:12;3523:52;3610:9;3597:23;3629:31;3654:5;3629:31;:::i;:::-;3679:5;3443:247;-1:-1:-1;;;3443:247:108:o;3695:365::-;3786:6;3839:2;3827:9;3818:7;3814:23;3810:32;3807:52;;;3855:1;3852;3845:12;3807:52;3895:9;3882:23;3928:18;3920:6;3917:30;3914:50;;;3960:1;3957;3950:12;3914:50;3983:71;4046:7;4037:6;4026:9;4022:22;3983:71;:::i;4559:184::-;4611:77;4608:1;4601:88;4708:4;4705:1;4698:15;4732:4;4729:1;4722:15;4748:184;4800:77;4797:1;4790:88;4897:4;4894:1;4887:15;4921:4;4918:1;4911:15;4937:250;5022:1;5032:113;5046:6;5043:1;5040:13;5032:113;;;5122:11;;;5116:18;5103:11;;;5096:39;5068:2;5061:10;5032:113;;;-1:-1:-1;;5179:1:108;5161:16;;5154:27;4937:250::o;5192:329::-;5233:3;5271:5;5265:12;5298:6;5293:3;5286:19;5314:76;5383:6;5376:4;5371:3;5367:14;5360:4;5353:5;5349:16;5314:76;:::i;:::-;5435:2;5423:15;5440:66;5419:88;5410:98;;;;5510:4;5406:109;;5192:329;-1:-1:-1;;5192:329:108:o;5787:700::-;5851:3;5889:5;5883:12;5916:6;5911:3;5904:19;5942:4;5971;5966:3;5962:14;5955:21;;6010:4;6003:5;5999:16;6033:1;6043:419;6057:6;6054:1;6051:13;6043:419;;;6116:13;;6223:9;;6152:42;6219:18;;;6207:31;;6278:11;;;6272:18;6258:12;;;6251:40;6314:4;6362:11;;;6356:18;6352:27;6338:12;;;6331:49;6409:4;6400:14;;;;6437:15;;;;6079:1;6072:9;6043:419;;;-1:-1:-1;6478:3:108;;5787:700;-1:-1:-1;;;;;5787:700:108:o;6492:1240::-;6548:3;6592:5;6586:12;6619:4;6614:3;6607:17;6643:42;6742:2;6727:12;6721:19;6717:28;6710:4;6705:3;6701:14;6694:52;6813:2;6805:4;6791:12;6787:23;6781:30;6777:39;6771:3;6766;6762:13;6755:62;6872:4;6858:12;6854:23;6848:30;6842:3;6837;6833:13;6826:53;6934:4;6920:12;6916:23;6910:30;6904:3;6899;6895:13;6888:53;7008:2;7000:4;6986:12;6982:23;6976:30;6972:39;6966:3;6961;6957:13;6950:62;;7067:4;7053:12;7049:23;7043:30;7021:52;;7104:4;7098:3;7093;7089:13;7082:27;7131:47;7173:3;7168;7164:13;7148:14;7131:47;:::i;:::-;7118:60;;7226:4;7219:5;7215:16;7209:23;7241:60;7295:4;7290:3;7286:14;7270;5606:12;;5620:42;5602:61;5590:74;;5713:4;5702:16;;;5696:23;5680:14;;;5673:47;5769:4;5758:16;;;5752:23;5736:14;;5729:47;5526:256;7241:60;;7349:4;7342:5;7338:16;7332:23;7398:3;7391:5;7387:15;7380:4;7375:3;7371:14;7364:39;7424:62;7480:5;7464:14;7424:62;:::i;:::-;7412:74;;;7534:4;7527:5;7523:16;7517:23;7582:3;7576:4;7572:14;7565:4;7560:3;7556:14;7549:38;7610;7643:4;7627:14;7610:38;:::i;:::-;7596:52;;;7697:4;7690:5;7686:16;7680:23;7673:4;7668:3;7664:14;7657:47;7720:6;7713:13;;;6492:1240;;;;:::o;7737:1274::-;7999:4;8047:2;8036:9;8032:18;8077:2;8066:9;8059:21;8100:6;8135;8129:13;8166:6;8158;8151:22;8204:2;8193:9;8189:18;8182:25;;8266:2;8256:6;8253:1;8249:14;8238:9;8234:30;8230:39;8216:53;;8288:4;8327:2;8319:6;8315:15;8348:1;8358:328;8372:6;8369:1;8366:13;8358:328;;;8461:66;8449:9;8441:6;8437:22;8433:95;8428:3;8421:108;8552:54;8599:6;8590;8584:13;8552:54;:::i;:::-;8542:64;-1:-1:-1;8664:12:108;;;;8629:15;;;;8394:1;8387:9;8358:328;;;8362:3;;8734:9;8726:6;8722:22;8717:2;8706:9;8702:18;8695:50;8769:6;8761;8754:22;8823:6;8815;8810:2;8802:6;8798:15;8785:45;8876:1;8850:19;;;8846:28;;8839:39;8927:2;8915:15;;;8932:66;8911:88;8899:101;;;8895:110;;;;7737:1274;-1:-1:-1;;;;;;7737:1274:108:o;9016:388::-;9114:4;9172:11;9159:25;9262:66;9251:8;9235:14;9231:29;9227:102;9207:18;9203:127;9193:155;;9344:1;9341;9334:12;9193:155;9365:33;;;;;9016:388;-1:-1:-1;;9016:388:108:o;10442:580::-;10519:4;10525:6;10585:11;10572:25;10675:66;10664:8;10648:14;10644:29;10640:102;10620:18;10616:127;10606:155;;10757:1;10754;10747:12;10606:155;10784:33;;10836:20;;;-1:-1:-1;10879:18:108;10868:30;;10865:50;;;10911:1;10908;10901:12;10865:50;10944:4;10932:17;;-1:-1:-1;10975:14:108;10971:27;;;10961:38;;10958:58;;;11012:1;11009;11002:12;11027:253;11099:2;11093:9;11141:4;11129:17;;11176:18;11161:34;;11197:22;;;11158:62;11155:88;;;11223:18;;:::i;:::-;11259:2;11252:22;11027:253;:::o;11285:::-;11357:2;11351:9;11399:4;11387:17;;11434:18;11419:34;;11455:22;;;11416:62;11413:88;;;11481:18;;:::i;11543:253::-;11615:2;11609:9;11657:4;11645:17;;11692:18;11677:34;;11713:22;;;11674:62;11671:88;;;11739:18;;:::i;11801:334::-;11872:2;11866:9;11928:2;11918:13;;11933:66;11914:86;11902:99;;12031:18;12016:34;;12052:22;;;12013:62;12010:88;;;12078:18;;:::i;:::-;12114:2;12107:22;11801:334;;-1:-1:-1;11801:334:108:o;12140:589::-;12182:5;12235:3;12228:4;12220:6;12216:17;12212:27;12202:55;;12253:1;12250;12243:12;12202:55;12289:6;12276:20;12315:18;12311:2;12308:26;12305:52;;;12337:18;;:::i;:::-;12381:114;12489:4;12420:66;12413:4;12409:2;12405:13;12401:86;12397:97;12381:114;:::i;:::-;12520:2;12511:7;12504:19;12566:3;12559:4;12554:2;12546:6;12542:15;12538:26;12535:35;12532:55;;;12583:1;12580;12573:12;12532:55;12648:2;12641:4;12633:6;12629:17;12622:4;12613:7;12609:18;12596:55;12696:1;12671:16;;;12689:4;12667:27;12660:38;;;;12675:7;12140:589;-1:-1:-1;;;12140:589:108:o;12734:894::-;12790:5;12838:4;12826:9;12821:3;12817:19;12813:30;12810:50;;;12856:1;12853;12846:12;12810:50;12878:22;;:::i;:::-;12869:31;;12937:9;12924:23;12956:33;12981:7;12956:33;:::i;:::-;12998:22;;13072:2;13057:18;;13044:32;13085:33;13044:32;13085:33;:::i;:::-;13150:7;13145:2;13138:5;13134:14;13127:31;;13218:2;13207:9;13203:18;13190:32;13185:2;13178:5;13174:14;13167:56;13283:2;13272:9;13268:18;13255:32;13250:2;13243:5;13239:14;13232:56;13340:3;13329:9;13325:19;13312:33;13354;13379:7;13354:33;:::i;:::-;13414:3;13403:15;;13396:32;13479:3;13464:19;;13451:33;13507:18;13496:30;;13493:50;;;13539:1;13536;13529:12;13493:50;13576:45;13617:3;13608:6;13597:9;13593:22;13576:45;:::i;:::-;13570:3;13563:5;13559:15;13552:70;;12734:894;;;;:::o;13633:423::-;13690:5;13738:4;13726:9;13721:3;13717:19;13713:30;13710:50;;;13756:1;13753;13746:12;13710:50;13778:22;;:::i;:::-;13769:31;;13837:9;13824:23;13856:33;13881:7;13856:33;:::i;:::-;13912:7;13905:5;13898:22;;13980:2;13969:9;13965:18;13952:32;13947:2;13940:5;13936:14;13929:56;14045:2;14034:9;14030:18;14017:32;14012:2;14005:5;14001:14;13994:56;13633:423;;;;:::o;14061:194::-;14132:4;14165:18;14157:6;14154:30;14151:56;;;14187:18;;:::i;:::-;-1:-1:-1;14232:1:108;14228:14;14244:4;14224:25;;14061:194::o;14260:1295::-;14325:5;14378:3;14371:4;14363:6;14359:17;14355:27;14345:55;;14396:1;14393;14386:12;14345:55;14432:6;14419:20;14458:4;14482:71;14498:54;14549:2;14498:54;:::i;:::-;14482:71;:::i;:::-;14587:15;;;14673:1;14669:10;;;;14657:23;;14653:32;;;14618:12;;;;14697:15;;;14694:35;;;14725:1;14722;14715:12;14694:35;14761:2;14753:6;14749:15;14773:753;14789:6;14784:3;14781:15;14773:753;;;14867:4;14861:3;14856;14852:13;14848:24;14845:114;;;14913:1;14942:2;14938;14931:14;14845:114;14985:22;;:::i;:::-;15048:3;15035:17;15065:33;15090:7;15065:33;:::i;:::-;15111:22;;15182:12;;;15169:26;15153:14;;;15146:50;15219:2;15270:12;;;15257:26;15241:14;;;15234:50;15307:2;15350:12;;;15337:26;15376:33;15337:26;15376:33;:::i;:::-;15429:14;;;15422:31;15466:18;;15504:12;;;;14815:4;14806:14;14773:753;;;-1:-1:-1;15544:5:108;14260:1295;-1:-1:-1;;;;;;14260:1295:108:o;15560:1313::-;15619:5;15667:4;15655:9;15650:3;15646:19;15642:30;15639:50;;;15685:1;15682;15675:12;15639:50;15707:22;;:::i;:::-;15698:31;;15765:9;15752:23;15745:5;15738:38;15795:2;15857;15846:9;15842:18;15829:32;15824:2;15817:5;15813:14;15806:56;15914:2;15903:9;15899:18;15886:32;15927:33;15952:7;15927:33;:::i;:::-;15992:7;15987:2;15980:5;15976:14;15969:31;;16060:2;16049:9;16045:18;16032:32;16027:2;16020:5;16016:14;16009:56;16126:3;16115:9;16111:19;16098:33;16092:3;16085:5;16081:15;16074:58;16183:3;16172:9;16168:19;16155:33;16211:18;16203:6;16200:30;16197:50;;;16243:1;16240;16233:12;16197:50;16266:22;;16319:4;16311:13;;16307:23;-1:-1:-1;16297:51:108;;16344:1;16341;16334:12;16297:51;16380:2;16367:16;16403:71;16419:54;16470:2;16419:54;:::i;16403:71::-;16508:15;;;16590:1;16586:10;;;;16578:19;;16574:28;;;16539:12;;;;16614:15;;;16611:35;;;16642:1;16639;16632:12;16611:35;16666:11;;;;16686:142;16702:6;16697:3;16694:15;16686:142;;;16768:17;;16756:30;;16719:12;;;;16806;;;;16686:142;;;16855:3;16844:15;;16837:30;-1:-1:-1;16848:5:108;;15560:1313;-1:-1:-1;;;;;15560:1313:108:o;16878:1336::-;16968:6;17021:2;17009:9;17000:7;16996:23;16992:32;16989:52;;;17037:1;17034;17027:12;16989:52;17077:9;17064:23;17106:18;17147:2;17139:6;17136:14;17133:34;;;17163:1;17160;17153:12;17133:34;17186:22;;;;17242:6;17224:16;;;17220:29;17217:49;;;17262:1;17259;17252:12;17217:49;17288:22;;:::i;:::-;17348:2;17335:16;17376:2;17366:8;17363:16;17360:36;;;17392:1;17389;17382:12;17360:36;17419:55;17466:7;17455:8;17451:2;17447:17;17419:55;:::i;:::-;17412:5;17405:70;;17507:31;17534:2;17530;17526:11;17507:31;:::i;:::-;17502:2;17495:5;17491:14;17484:55;17571:50;17613:7;17608:2;17604;17600:11;17571:50;:::i;:::-;17566:2;17559:5;17555:14;17548:74;17668:3;17664:2;17660:12;17647:26;17698:2;17688:8;17685:16;17682:36;;;17714:1;17711;17704:12;17682:36;17752:67;17811:7;17800:8;17796:2;17792:17;17752:67;:::i;:::-;17745:4;17738:5;17734:16;17727:93;;17866:4;17862:2;17858:13;17845:27;17897:2;17887:8;17884:16;17881:36;;;17913:1;17910;17903:12;17881:36;17951:58;18001:7;17990:8;17986:2;17982:17;17951:58;:::i;:::-;17944:4;17937:5;17933:16;17926:84;;18056:3;18052:2;18048:12;18035:26;18086:2;18076:8;18073:16;18070:36;;;18102:1;18099;18092:12;18070:36;18139:44;18175:7;18164:8;18160:2;18156:17;18139:44;:::i;:::-;18133:3;18122:15;;18115:69;-1:-1:-1;18126:5:108;16878:1336;-1:-1:-1;;;;;16878:1336:108:o;19613:697::-;19834:3;19872:6;19866:13;19888:66;19947:6;19942:3;19935:4;19927:6;19923:17;19888:66;:::i;:::-;20017:13;;19976:16;;;;20039:70;20017:13;19976:16;20086:4;20074:17;;20039:70;:::i;:::-;20176:13;;20131:20;;;20198:70;20176:13;20131:20;20245:4;20233:17;;20198:70;:::i;:::-;20284:20;;19613:697;-1:-1:-1;;;;;19613:697:108:o;21021:245::-;21100:6;21108;21161:2;21149:9;21140:7;21136:23;21132:32;21129:52;;;21177:1;21174;21167:12;21129:52;-1:-1:-1;;21200:16:108;;21256:2;21241:18;;;21235:25;21200:16;;21235:25;;-1:-1:-1;21021:245:108:o;21271:1091::-;21425:4;21454:2;21483;21472:9;21465:21;21524:3;21513:9;21509:19;21570:6;21564:13;21559:2;21548:9;21544:18;21537:41;21632:2;21624:6;21620:15;21614:22;21609:2;21598:9;21594:18;21587:50;21701:42;21695:2;21687:6;21683:15;21677:22;21673:71;21668:2;21657:9;21653:18;21646:99;21800:2;21792:6;21788:15;21782:22;21776:3;21765:9;21761:19;21754:51;21860:3;21852:6;21848:16;21842:23;21836:3;21825:9;21821:19;21814:52;21913:3;21905:6;21901:16;21895:23;21956:4;21949;21938:9;21934:20;21927:34;21981:6;22016:12;22010:19;22053:6;22045;22038:22;22091:3;22080:9;22076:19;22069:26;;22136:2;22122:12;22118:21;22104:35;;22157:1;22148:10;;22167:169;22181:6;22178:1;22175:13;22167:169;;;22242:13;;22230:26;;22311:15;;;;22203:1;22196:9;;;;;22276:12;;;;22167:169;;22367:359;22554:6;22549:3;22542:19;22524:3;22590:6;22584:13;22606:73;22672:6;22667:2;22662:3;22658:12;22653:2;22645:6;22641:15;22606:73;:::i;:::-;22699:16;;;;22717:2;22695:25;;22367:359;-1:-1:-1;;;22367:359:108:o;23134:279::-;23199:9;;;23220:10;;;23217:190;;;23263:77;23260:1;23253:88;23364:4;23361:1;23354:15;23392:4;23389:1;23382:15;23418:278;23611:2;23600:9;23593:21;23574:4;23631:59;23686:2;23675:9;23671:18;23663:6;23631:59;:::i;23701:1457::-;23826:6;23857:2;23900;23888:9;23879:7;23875:23;23871:32;23868:52;;;23916:1;23913;23906:12;23868:52;23949:9;23943:16;23982:18;23974:6;23971:30;23968:50;;;24014:1;24011;24004:12;23968:50;24037:22;;24090:4;24082:13;;24078:27;-1:-1:-1;24068:55:108;;24119:1;24116;24109:12;24068:55;24148:2;24142:9;24171:71;24187:54;24238:2;24187:54;:::i;24171:71::-;24276:15;;;24338:4;24377:13;;;24369:22;;24365:31;;;24307:12;;;;24264:3;24408:19;;;24405:39;;;24440:1;24437;24430:12;24405:39;24464:11;;;;24484:644;24500:6;24495:3;24492:15;24484:644;;;24580:2;24574:3;24565:7;24561:17;24557:26;24554:116;;;24624:1;24653:2;24649;24642:14;24554:116;24696:22;;:::i;:::-;24752:3;24746:10;24769:33;24794:7;24769:33;:::i;:::-;24815:22;;24879:12;;;24873:19;24857:14;;;24850:43;24916:2;24952:12;;;24946:19;24978:33;24946:19;24978:33;:::i;:::-;25031:14;;;25024:31;25068:18;;24517:12;;;;25106;;;;24484:644;;;-1:-1:-1;25147:5:108;23701:1457;-1:-1:-1;;;;;;;23701:1457:108:o;25566:398::-;25799:42;25791:6;25787:55;25776:9;25769:74;25879:2;25874;25863:9;25859:18;25852:30;25750:4;25899:59;25954:2;25943:9;25939:18;25931:6;25899:59;:::i;25969:1068::-;26369:23;26364:3;26357:36;26339:3;26422:6;26416:13;26438:75;26506:6;26501:2;26496:3;26492:12;26485:4;26477:6;26473:17;26438:75;:::i;:::-;26573:13;;26532:16;;;;26595:76;26573:13;26657:2;26649:11;;26642:4;26630:17;;26595:76;:::i;:::-;26732:13;;26690:17;;;26754:76;26732:13;26816:2;26808:11;;26801:4;26789:17;;26754:76;:::i;:::-;26891:13;;26849:17;;;26913:76;26891:13;26975:2;26967:11;;26960:4;26948:17;;26913:76;:::i;:::-;27009:17;27028:2;27005:26;;25969:1068;-1:-1:-1;;;;;;25969:1068:108:o;27253:1088::-;27683:4;27712:3;27724:60;27774:9;27765:6;27759:13;27128:12;;27142:42;27124:61;27112:74;;27235:4;27224:16;;;27218:23;27202:14;;27195:47;27042:206;27724:60;27840:4;27832:6;27828:17;27822:24;27815:4;27804:9;27800:20;27793:54;27903:4;27895:6;27891:17;27885:24;27878:4;27867:9;27863:20;27856:54;27919:63;27977:3;27966:9;27962:19;27954:6;27128:12;;27142:42;27124:61;27112:74;;27235:4;27224:16;;;27218:23;27202:14;;27195:47;27042:206;27919:63;28031:42;28023:6;28019:55;28013:3;28002:9;27998:19;27991:84;28112:6;28106:3;28095:9;28091:19;28084:35;28156:2;28150:3;28139:9;28135:19;28128:31;28182:44;28222:2;28211:9;28207:18;28199:6;28182:44;:::i;:::-;28168:58;;28275:9;28267:6;28263:22;28257:3;28246:9;28242:19;28235:51;28303:32;28328:6;28320;28303:32;:::i;:::-;28295:40;27253:1088;-1:-1:-1;;;;;;;;;27253:1088:108:o","linkReferences":{},"immutableReferences":{"45165":[{"start":224,"length":32},{"start":6887,"length":32}]}},"methodIdentifiers":{"execute((bytes,bytes))":"3f62192e","executeBatch((bytes,bytes)[])":"0d7a16c3","executeBatchWithCallback((bytes,bytes)[],bytes)":"13fb72c7","executeWithCallback((bytes,bytes),bytes)":"0d335884","feeController()":"6999b377","owner()":"8da5cb5b","permit2()":"12261ee7","setProtocolFeeController(address)":"2d771389","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IPermit2\",\"name\":\"_permit2\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_protocolFeeOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"DeadlineBeforeEndTime\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"duplicateToken\",\"type\":\"address\"}],\"name\":\"DuplicateFeeOutput\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EndTimeBeforeStartTime\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"FeeTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectAmounts\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputAndOutputFees\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCosignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCosignerInput\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCosignerOutput\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"feeToken\",\"type\":\"address\"}],\"name\":\"InvalidFeeToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidReactor\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NativeTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoExclusiveOverride\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"filler\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"swapper\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"Fill\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldFeeController\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newFeeController\",\"type\":\"address\"}],\"name\":\"ProtocolFeeControllerSet\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"order\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedOrder\",\"name\":\"order\",\"type\":\"tuple\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"order\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedOrder[]\",\"name\":\"orders\",\"type\":\"tuple[]\"}],\"name\":\"executeBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"order\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedOrder[]\",\"name\":\"orders\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"callbackData\",\"type\":\"bytes\"}],\"name\":\"executeBatchWithCallback\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"order\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedOrder\",\"name\":\"order\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"callbackData\",\"type\":\"bytes\"}],\"name\":\"executeWithCallback\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeController\",\"outputs\":[{\"internalType\":\"contract IProtocolFeeController\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"permit2\",\"outputs\":[{\"internalType\":\"contract IPermit2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newFeeController\",\"type\":\"address\"}],\"name\":\"setProtocolFeeController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"V2 orders must be cosigned by the specified cosigner to override timings and starting valuesresolution behavior: - If cosignature is invalid or not from specified cosigner, revert - If inputAmount is 0, then use baseInput - If inputAmount is nonzero, then ensure it is less than specified baseInput and replace startAmount - For each outputAmount: - If amount is 0, then use baseOutput - If amount is nonzero, then ensure it is greater than specified baseOutput and replace startAmount\",\"events\":{\"Fill(bytes32,address,address,uint256)\":{\"params\":{\"filler\":\"The address which executed the fill\",\"nonce\":\"The nonce of the filled order\",\"orderHash\":\"The hash of the order that was filled\",\"swapper\":\"The swapper of the filled order\"}}},\"kind\":\"dev\",\"methods\":{\"execute((bytes,bytes))\":{\"params\":{\"order\":\"The order definition and valid signature to execute\"}},\"executeBatch((bytes,bytes)[])\":{\"params\":{\"orders\":\"The order definitions and valid signatures to execute\"}},\"executeBatchWithCallback((bytes,bytes)[],bytes)\":{\"params\":{\"callbackData\":\"The callbackData to pass to the callback\",\"orders\":\"The order definitions and valid signatures to execute\"}},\"executeWithCallback((bytes,bytes),bytes)\":{\"params\":{\"callbackData\":\"The callbackData to pass to the callback\",\"order\":\"The order definition and valid signature to execute\"}},\"setProtocolFeeController(address)\":{\"details\":\"only callable by the owner\",\"params\":{\"_newFeeController\":\"the new fee controller\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"DeadlineBeforeEndTime()\":[{\"notice\":\"thrown when an order's deadline is before its end time\"}],\"DuplicateFeeOutput(address)\":[{\"notice\":\"thrown if two fee outputs have the same token\"}],\"EndTimeBeforeStartTime()\":[{\"notice\":\"thrown if the endTime of an order is before startTime\"}],\"FeeTooLarge(address,uint256,address)\":[{\"notice\":\"thrown if a given fee output is greater than MAX_FEE_BPS of the order outputs\"}],\"IncorrectAmounts()\":[{\"notice\":\"thrown if the decay direction is incorrect - for DutchInput, startAmount must be less than or equal to endAmount - for DutchOutput, startAmount must be greater than or equal to endAmount\"}],\"InputAndOutputFees()\":[{\"notice\":\"thrown if fees are taken on both inputs and outputs\"}],\"InvalidCosignature()\":[{\"notice\":\"thrown when an order's cosignature does not match the expected cosigner\"}],\"InvalidCosignerInput()\":[{\"notice\":\"thrown when an order's cosigner input is greater than the specified\"}],\"InvalidCosignerOutput()\":[{\"notice\":\"thrown when an order's cosigner output is less than the specified\"}],\"InvalidFeeToken(address)\":[{\"notice\":\"thrown if a fee output token does not have a corresponding non-fee output\"}],\"InvalidReactor()\":[{\"notice\":\"thrown when the order targets a different reactor\"}],\"NativeTransferFailed()\":[{\"notice\":\"Thrown when a native transfer fails\"}],\"NoExclusiveOverride()\":[{\"notice\":\"thrown when an order has strict exclusivity and the filler does not have it\"}]},\"events\":{\"Fill(bytes32,address,address,uint256)\":{\"notice\":\"emitted when an order is filled\"}},\"kind\":\"user\",\"methods\":{\"execute((bytes,bytes))\":{\"notice\":\"Execute a single order\"},\"executeBatch((bytes,bytes)[])\":{\"notice\":\"Execute the given orders at once\"},\"executeBatchWithCallback((bytes,bytes)[],bytes)\":{\"notice\":\"Execute the given orders at once using a callback with the given callback data\"},\"executeWithCallback((bytes,bytes),bytes)\":{\"notice\":\"Execute a single order using the given callback data\"},\"permit2()\":{\"notice\":\"permit2 address used for token transfers and signature verification\"},\"setProtocolFeeController(address)\":{\"notice\":\"sets the protocol fee controller\"}},\"notice\":\"Reactor for v2 dutch orders\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/reactors/V2DutchOrderReactor.sol\":\"V2DutchOrderReactor\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=lib/forge-gas-snapshot/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":permit2/=lib/permit2/\",\":solarray/=lib/solarray/src/\",\":solmate/=lib/solmate/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0xa535a5df777d44e945dd24aa43a11e44b024140fc340ad0dfe42acf4002aade1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://41319e7f621f2dc3733511332c4fd032f8e32ad2aa7fd6f665c19741d9941a34\",\"dweb:/ipfs/QmcYR3bd862GD1Bc7jwrU9bGxrhUu5na1oP964bDCu2id1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278\",\"dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH\"]},\"lib/permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x78931704a7f1d89ef24244b155863abb751cc3b3818f64303ccb47a396d48dcb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b8d6e198ee29d809564f1c1d7caa11a2c329bb5d051f61210548e546493444d2\",\"dweb:/ipfs/QmVxWftbgETjudymgLdwF77S54DWrp6qB5ooauKXW81cm7\"]},\"lib/permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xea70db68ce450ad38dfbd490058595441144808eb95272ae9b89e3fbe6456954\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8fad9ff319665acdc2f1295bb82db3e5b4d52babc0b58f147dbdbb9f322c6e5\",\"dweb:/ipfs/QmTbYJPcux8eJ3qGVYQh6TiwCA2FPu6HXTUg6QFTnX91Ks\"]},\"lib/permit2/src/interfaces/IPermit2.sol\":{\"keccak256\":\"0xaa631cc9f53e699301d94233007110a345e6779011def484e8dd97b8fe0af771\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc0502cf19c9c18f320a3001201e89e350393b75837f6b7971de18b2de06f30d\",\"dweb:/ipfs/QmT9SfhdJ7VJNNrf94g4H5usyi7ShqWGx7Cqsz9jZTjX96\"]},\"lib/permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0x6805563eaad92471fa1b3591a71d7020a93e59f1a4ac95398daf74927f5bd033\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://48cd13806cb8e82dcc38eb93423a372fbdd3b05364ecebb8bfd9cd29078dd90c\",\"dweb:/ipfs/QmeLyFVrzKRHcm6aaFFBCG5mFESCqWLp1KYT41H8XhzMCp\"]},\"lib/solmate/src/auth/Owned.sol\":{\"keccak256\":\"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\",\"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\"]},\"lib/solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"lib/solmate/src/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9\",\"dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi\"]},\"lib/solmate/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x6ab948013c2c7ca6351e593600425b0ec6df9035320280c678e735bce16e996b\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://2ab977d0eeb2bf458f9798250215c646d2f3b1f90b5a7e2b506fdf3335c0f060\",\"dweb:/ipfs/QmYPRoPhNtBAmCSq7imN1scMVpKNQvMTpoqab3tXUx5Tnv\"]},\"src/base/ProtocolFees.sol\":{\"keccak256\":\"0x1152eee4ac698694bcdbf90b016411112d679812ca0abc1cacd7e6b465e6729a\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c1be6b94c6268b68362111e728598e7c1517b20998fdf6752d08e32d55c210f8\",\"dweb:/ipfs/QmStQC274cQqnQSo3QDBcT5BdqEkpwZwFaWwxaYXMZidvw\"]},\"src/base/ReactorEvents.sol\":{\"keccak256\":\"0x61df7aa3ef970f1305c5a6d8c68b0d7ab8bebb9b7518e191c8d2fda532859f61\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://93db11be28b3394485b57a7b120ca224fdb93b471db8468738406f77ebaa13fc\",\"dweb:/ipfs/Qmci4TSUH81C3WDV7TMv56VmiUFZ9MDxZcGTRKhhEPS6gC\"]},\"src/base/ReactorStructs.sol\":{\"keccak256\":\"0x78e6db322ca69aaf552e59d5e74a00fd465a802388c2d03f9bf4b711f5704588\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://12d8fc82c3543bfe0d2cd44cdbc524bed1f074abafe086f7e58573cbaff2a74e\",\"dweb:/ipfs/QmREbamTn3nz89nEjv2uWHNHKSF6Yga2gQ688Cde89xcNT\"]},\"src/interfaces/IProtocolFeeController.sol\":{\"keccak256\":\"0x21a895ff5b778abf95753001a20b4004adfadd1bba622eaec18eb81836ede86c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://67f9eae1da9f238f6630247882e382458dcc0135c0a4837b99a44a2360a3845c\",\"dweb:/ipfs/QmdJyKhVyD6nAtgdTofaU2xaoWrPGM1Q6Sd7FiN2LxXZQx\"]},\"src/interfaces/IReactor.sol\":{\"keccak256\":\"0x23714e546bbeeaa7fe35665d7241319c964421a9fe6d81aead4b85027cabf1e1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3b94402a2e90f75d6238d4460c0b1125bf67b98523803156b104ce57cafdd05b\",\"dweb:/ipfs/QmbY3Mr44MPEMAe9bh9tUSqpPg3AAKfkVfydwJCEzFA14a\"]},\"src/interfaces/IReactorCallback.sol\":{\"keccak256\":\"0xf3ee1fe09545fc5be000c33bb6779e897b4e5013bd9de3e7c3107bf466b4dfa1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://12d7fd1ac3dca76614796f0d012ea4de79bf09cf124cc74efffdf25a56756344\",\"dweb:/ipfs/QmXyeSrG7caihgzUZdPdPbbRj6v1w65gBnfn9a7HhbVJX9\"]},\"src/interfaces/IValidationCallback.sol\":{\"keccak256\":\"0xc31e3a60e210e9a4089f48ba4fae06dec6f4d33da4fbe415cfb8cdc202003bae\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ee145d5fc0e0806dc9db57825142d5d7c3eafc248a27ee301ffd13592f2cda34\",\"dweb:/ipfs/QmQr2HBHZKiUu88a3M1Hs4QSjFemsZmPEd115QG6GKjsC1\"]},\"src/lib/CurrencyLibrary.sol\":{\"keccak256\":\"0x73688c07cd36b5040e0deca3dd1f21a8b19585d6cdfefb816fae98af92a545ea\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://750375d6f0e59f7977b9cfc2cf05fef7b356cea7875fbb71b0ca359d091b8479\",\"dweb:/ipfs/QmZbdTSS1BxWqAHjmtwoJsggbRVkwnxynJuaxzKkkakm4Y\"]},\"src/lib/DutchDecayLib.sol\":{\"keccak256\":\"0x40df504e1791a670bfc14af79bc8fc1600435e3b43c6734a9a92ed7b780d01fc\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6547e03b07140af7a5a61176bf47f1dd5bd37c34d759726fc82e5c8e14d48c8e\",\"dweb:/ipfs/QmZhkeGrKNbmv2avMgkUPjyRbPE9AbzrzPMNsGFh1kUNbe\"]},\"src/lib/DutchOrderLib.sol\":{\"keccak256\":\"0xdd6b9bffcc044899fac52e1e9cbe4becc7a40b56d912695e80600224367235e6\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://78c08ec074bc21ce610f2e0c3594b383e0cd2301c32239146a771e2e5d2cb975\",\"dweb:/ipfs/QmbMQwT9k3RWyTdihqqnu3RDiRCz1XmpMUVwxeyWzChKB5\"]},\"src/lib/ExclusivityLib.sol\":{\"keccak256\":\"0x3a0b93c182c269a00b2fdedf22a65af1e8a4cbb436986cffec2f5cc4acff8401\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a1cfcba8b7b4fdddc385e1c2dbe9fcc8ecff9d0d6e2d82332238bb0aa7505e5a\",\"dweb:/ipfs/QmXBfqnN8V2dMdcFyHMjXxJLWL5yAWoEtanKnHqFcmeLv5\"]},\"src/lib/OrderInfoLib.sol\":{\"keccak256\":\"0x38672b528e63dc53f36ed82d0037110a9f5893ad0a3957e24f19fa3fdbd80015\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://147172dbebf4bb579bc392f25666645719264c0b47378f7fc4f3a95c79bdf5a4\",\"dweb:/ipfs/Qmd5wVnQ8rKHHQgUQzEDcAPiqrVzmNr9t2D7d1SqUg9hTo\"]},\"src/lib/Permit2Lib.sol\":{\"keccak256\":\"0xcb5e1e204f4ac6ea3fa164b8be1b1d31cbad0dff981072ea2c33abd720369e78\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cfa162286525ef8684112639c7b981c0472b06ce799f2440c626a70c273bb533\",\"dweb:/ipfs/QmV1Uy4oodhg4SbCajv9xhiWFuwtU1YcTTvca1cDYCkND9\"]},\"src/lib/ResolvedOrderLib.sol\":{\"keccak256\":\"0xc56a31e72001e3e6ee0baf193423a7563cc61ba4869133e1cae5cf998bfe4d96\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://4bddef26f26939f48923b11674495515d792cffbb2dc04f092212ff0b9971636\",\"dweb:/ipfs/QmS1YAzhYLCi9oDtZN33mwBf5iExdwMhPNcnzh5nA8fPKX\"]},\"src/lib/V2DutchOrderLib.sol\":{\"keccak256\":\"0x513f3ccd5924d671ff4a8801e0f2481f52b0def06347e2448a1a2f1346ed99d3\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c777808d9f6edc1eb04d489cf402c4e8203c8a0fbf47b023192b105f1e9a2a72\",\"dweb:/ipfs/QmQxoNZiwJcADeFVoGvM5ckCBrZoURAFncGBBA1Wfb6zTd\"]},\"src/reactors/BaseReactor.sol\":{\"keccak256\":\"0xd31b25dd7209a704fb17865e8112bc83a72e1816bc1d636c89366b2f1e3c4210\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f10c83e80f01d728f48aa06905e272eef776159ea83b53885c182da15597e3ca\",\"dweb:/ipfs/Qmf2nx9abWsTMCVBV1At66HS3FVTXHreUVCpwVDKjkYadY\"]},\"src/reactors/V2DutchOrderReactor.sol\":{\"keccak256\":\"0x36b2677685d6673d39036e1750866c918c754e5e9cd8672ca8bb1159a7522a73\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ae71cbf90cf3b8758ca1b9ae0d4f600473711ab0951bf279d5e5d9b61d76f649\",\"dweb:/ipfs/QmRChvpbAnxBTZnJdTmQ1nxQmE4LDMQLeW4C1tN1CUo6NA\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IPermit2","name":"_permit2","type":"address"},{"internalType":"address","name":"_protocolFeeOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"DeadlineBeforeEndTime"},{"inputs":[{"internalType":"address","name":"duplicateToken","type":"address"}],"type":"error","name":"DuplicateFeeOutput"},{"inputs":[],"type":"error","name":"EndTimeBeforeStartTime"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"type":"error","name":"FeeTooLarge"},{"inputs":[],"type":"error","name":"IncorrectAmounts"},{"inputs":[],"type":"error","name":"InputAndOutputFees"},{"inputs":[],"type":"error","name":"InvalidCosignature"},{"inputs":[],"type":"error","name":"InvalidCosignerInput"},{"inputs":[],"type":"error","name":"InvalidCosignerOutput"},{"inputs":[{"internalType":"address","name":"feeToken","type":"address"}],"type":"error","name":"InvalidFeeToken"},{"inputs":[],"type":"error","name":"InvalidReactor"},{"inputs":[],"type":"error","name":"NativeTransferFailed"},{"inputs":[],"type":"error","name":"NoExclusiveOverride"},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32","indexed":true},{"internalType":"address","name":"filler","type":"address","indexed":true},{"internalType":"address","name":"swapper","type":"address","indexed":true},{"internalType":"uint256","name":"nonce","type":"uint256","indexed":false}],"type":"event","name":"Fill","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"oldFeeController","type":"address","indexed":false},{"internalType":"address","name":"newFeeController","type":"address","indexed":false}],"type":"event","name":"ProtocolFeeControllerSet","anonymous":false},{"inputs":[{"internalType":"struct SignedOrder","name":"order","type":"tuple","components":[{"internalType":"bytes","name":"order","type":"bytes"},{"internalType":"bytes","name":"sig","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"execute"},{"inputs":[{"internalType":"struct SignedOrder[]","name":"orders","type":"tuple[]","components":[{"internalType":"bytes","name":"order","type":"bytes"},{"internalType":"bytes","name":"sig","type":"bytes"}]}],"stateMutability":"payable","type":"function","name":"executeBatch"},{"inputs":[{"internalType":"struct SignedOrder[]","name":"orders","type":"tuple[]","components":[{"internalType":"bytes","name":"order","type":"bytes"},{"internalType":"bytes","name":"sig","type":"bytes"}]},{"internalType":"bytes","name":"callbackData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"executeBatchWithCallback"},{"inputs":[{"internalType":"struct SignedOrder","name":"order","type":"tuple","components":[{"internalType":"bytes","name":"order","type":"bytes"},{"internalType":"bytes","name":"sig","type":"bytes"}]},{"internalType":"bytes","name":"callbackData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"executeWithCallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"feeController","outputs":[{"internalType":"contract IProtocolFeeController","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"permit2","outputs":[{"internalType":"contract IPermit2","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_newFeeController","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setProtocolFeeController"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"execute((bytes,bytes))":{"params":{"order":"The order definition and valid signature to execute"}},"executeBatch((bytes,bytes)[])":{"params":{"orders":"The order definitions and valid signatures to execute"}},"executeBatchWithCallback((bytes,bytes)[],bytes)":{"params":{"callbackData":"The callbackData to pass to the callback","orders":"The order definitions and valid signatures to execute"}},"executeWithCallback((bytes,bytes),bytes)":{"params":{"callbackData":"The callbackData to pass to the callback","order":"The order definition and valid signature to execute"}},"setProtocolFeeController(address)":{"details":"only callable by the owner","params":{"_newFeeController":"the new fee controller"}}},"version":1},"userdoc":{"kind":"user","methods":{"execute((bytes,bytes))":{"notice":"Execute a single order"},"executeBatch((bytes,bytes)[])":{"notice":"Execute the given orders at once"},"executeBatchWithCallback((bytes,bytes)[],bytes)":{"notice":"Execute the given orders at once using a callback with the given callback data"},"executeWithCallback((bytes,bytes),bytes)":{"notice":"Execute a single order using the given callback data"},"permit2()":{"notice":"permit2 address used for token transfers and signature verification"},"setProtocolFeeController(address)":{"notice":"sets the protocol fee controller"}},"version":1}},"settings":{"remappings":["ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-gas-snapshot/=lib/forge-gas-snapshot/src/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","permit2/=lib/permit2/","solarray/=lib/solarray/src/","solmate/=lib/solmate/"],"optimizer":{"enabled":true,"runs":1000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/reactors/V2DutchOrderReactor.sol":"V2DutchOrderReactor"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/security/ReentrancyGuard.sol":{"keccak256":"0xa535a5df777d44e945dd24aa43a11e44b024140fc340ad0dfe42acf4002aade1","urls":["bzz-raw://41319e7f621f2dc3733511332c4fd032f8e32ad2aa7fd6f665c19741d9941a34","dweb:/ipfs/QmcYR3bd862GD1Bc7jwrU9bGxrhUu5na1oP964bDCu2id1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad","urls":["bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278","dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH"],"license":"MIT"},"lib/permit2/src/interfaces/IAllowanceTransfer.sol":{"keccak256":"0x78931704a7f1d89ef24244b155863abb751cc3b3818f64303ccb47a396d48dcb","urls":["bzz-raw://b8d6e198ee29d809564f1c1d7caa11a2c329bb5d051f61210548e546493444d2","dweb:/ipfs/QmVxWftbgETjudymgLdwF77S54DWrp6qB5ooauKXW81cm7"],"license":"MIT"},"lib/permit2/src/interfaces/IEIP712.sol":{"keccak256":"0xea70db68ce450ad38dfbd490058595441144808eb95272ae9b89e3fbe6456954","urls":["bzz-raw://e8fad9ff319665acdc2f1295bb82db3e5b4d52babc0b58f147dbdbb9f322c6e5","dweb:/ipfs/QmTbYJPcux8eJ3qGVYQh6TiwCA2FPu6HXTUg6QFTnX91Ks"],"license":"MIT"},"lib/permit2/src/interfaces/IPermit2.sol":{"keccak256":"0xaa631cc9f53e699301d94233007110a345e6779011def484e8dd97b8fe0af771","urls":["bzz-raw://fc0502cf19c9c18f320a3001201e89e350393b75837f6b7971de18b2de06f30d","dweb:/ipfs/QmT9SfhdJ7VJNNrf94g4H5usyi7ShqWGx7Cqsz9jZTjX96"],"license":"MIT"},"lib/permit2/src/interfaces/ISignatureTransfer.sol":{"keccak256":"0x6805563eaad92471fa1b3591a71d7020a93e59f1a4ac95398daf74927f5bd033","urls":["bzz-raw://48cd13806cb8e82dcc38eb93423a372fbdd3b05364ecebb8bfd9cd29078dd90c","dweb:/ipfs/QmeLyFVrzKRHcm6aaFFBCG5mFESCqWLp1KYT41H8XhzMCp"],"license":"MIT"},"lib/solmate/src/auth/Owned.sol":{"keccak256":"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea","urls":["bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4","dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx"],"license":"AGPL-3.0-only"},"lib/solmate/src/tokens/ERC20.sol":{"keccak256":"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10","urls":["bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35","dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97"],"license":"AGPL-3.0-only"},"lib/solmate/src/utils/FixedPointMathLib.sol":{"keccak256":"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843","urls":["bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9","dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi"],"license":"AGPL-3.0-only"},"lib/solmate/src/utils/SafeTransferLib.sol":{"keccak256":"0x6ab948013c2c7ca6351e593600425b0ec6df9035320280c678e735bce16e996b","urls":["bzz-raw://2ab977d0eeb2bf458f9798250215c646d2f3b1f90b5a7e2b506fdf3335c0f060","dweb:/ipfs/QmYPRoPhNtBAmCSq7imN1scMVpKNQvMTpoqab3tXUx5Tnv"],"license":"AGPL-3.0-only"},"src/base/ProtocolFees.sol":{"keccak256":"0x1152eee4ac698694bcdbf90b016411112d679812ca0abc1cacd7e6b465e6729a","urls":["bzz-raw://c1be6b94c6268b68362111e728598e7c1517b20998fdf6752d08e32d55c210f8","dweb:/ipfs/QmStQC274cQqnQSo3QDBcT5BdqEkpwZwFaWwxaYXMZidvw"],"license":"GPL-2.0-or-later"},"src/base/ReactorEvents.sol":{"keccak256":"0x61df7aa3ef970f1305c5a6d8c68b0d7ab8bebb9b7518e191c8d2fda532859f61","urls":["bzz-raw://93db11be28b3394485b57a7b120ca224fdb93b471db8468738406f77ebaa13fc","dweb:/ipfs/Qmci4TSUH81C3WDV7TMv56VmiUFZ9MDxZcGTRKhhEPS6gC"],"license":"GPL-2.0-or-later"},"src/base/ReactorStructs.sol":{"keccak256":"0x78e6db322ca69aaf552e59d5e74a00fd465a802388c2d03f9bf4b711f5704588","urls":["bzz-raw://12d8fc82c3543bfe0d2cd44cdbc524bed1f074abafe086f7e58573cbaff2a74e","dweb:/ipfs/QmREbamTn3nz89nEjv2uWHNHKSF6Yga2gQ688Cde89xcNT"],"license":"GPL-2.0-or-later"},"src/interfaces/IProtocolFeeController.sol":{"keccak256":"0x21a895ff5b778abf95753001a20b4004adfadd1bba622eaec18eb81836ede86c","urls":["bzz-raw://67f9eae1da9f238f6630247882e382458dcc0135c0a4837b99a44a2360a3845c","dweb:/ipfs/QmdJyKhVyD6nAtgdTofaU2xaoWrPGM1Q6Sd7FiN2LxXZQx"],"license":"GPL-2.0-or-later"},"src/interfaces/IReactor.sol":{"keccak256":"0x23714e546bbeeaa7fe35665d7241319c964421a9fe6d81aead4b85027cabf1e1","urls":["bzz-raw://3b94402a2e90f75d6238d4460c0b1125bf67b98523803156b104ce57cafdd05b","dweb:/ipfs/QmbY3Mr44MPEMAe9bh9tUSqpPg3AAKfkVfydwJCEzFA14a"],"license":"GPL-2.0-or-later"},"src/interfaces/IReactorCallback.sol":{"keccak256":"0xf3ee1fe09545fc5be000c33bb6779e897b4e5013bd9de3e7c3107bf466b4dfa1","urls":["bzz-raw://12d7fd1ac3dca76614796f0d012ea4de79bf09cf124cc74efffdf25a56756344","dweb:/ipfs/QmXyeSrG7caihgzUZdPdPbbRj6v1w65gBnfn9a7HhbVJX9"],"license":"GPL-2.0-or-later"},"src/interfaces/IValidationCallback.sol":{"keccak256":"0xc31e3a60e210e9a4089f48ba4fae06dec6f4d33da4fbe415cfb8cdc202003bae","urls":["bzz-raw://ee145d5fc0e0806dc9db57825142d5d7c3eafc248a27ee301ffd13592f2cda34","dweb:/ipfs/QmQr2HBHZKiUu88a3M1Hs4QSjFemsZmPEd115QG6GKjsC1"],"license":"GPL-2.0-or-later"},"src/lib/CurrencyLibrary.sol":{"keccak256":"0x73688c07cd36b5040e0deca3dd1f21a8b19585d6cdfefb816fae98af92a545ea","urls":["bzz-raw://750375d6f0e59f7977b9cfc2cf05fef7b356cea7875fbb71b0ca359d091b8479","dweb:/ipfs/QmZbdTSS1BxWqAHjmtwoJsggbRVkwnxynJuaxzKkkakm4Y"],"license":"GPL-2.0-or-later"},"src/lib/DutchDecayLib.sol":{"keccak256":"0x40df504e1791a670bfc14af79bc8fc1600435e3b43c6734a9a92ed7b780d01fc","urls":["bzz-raw://6547e03b07140af7a5a61176bf47f1dd5bd37c34d759726fc82e5c8e14d48c8e","dweb:/ipfs/QmZhkeGrKNbmv2avMgkUPjyRbPE9AbzrzPMNsGFh1kUNbe"],"license":"GPL-2.0-or-later"},"src/lib/DutchOrderLib.sol":{"keccak256":"0xdd6b9bffcc044899fac52e1e9cbe4becc7a40b56d912695e80600224367235e6","urls":["bzz-raw://78c08ec074bc21ce610f2e0c3594b383e0cd2301c32239146a771e2e5d2cb975","dweb:/ipfs/QmbMQwT9k3RWyTdihqqnu3RDiRCz1XmpMUVwxeyWzChKB5"],"license":"GPL-2.0-or-later"},"src/lib/ExclusivityLib.sol":{"keccak256":"0x3a0b93c182c269a00b2fdedf22a65af1e8a4cbb436986cffec2f5cc4acff8401","urls":["bzz-raw://a1cfcba8b7b4fdddc385e1c2dbe9fcc8ecff9d0d6e2d82332238bb0aa7505e5a","dweb:/ipfs/QmXBfqnN8V2dMdcFyHMjXxJLWL5yAWoEtanKnHqFcmeLv5"],"license":"GPL-2.0-or-later"},"src/lib/OrderInfoLib.sol":{"keccak256":"0x38672b528e63dc53f36ed82d0037110a9f5893ad0a3957e24f19fa3fdbd80015","urls":["bzz-raw://147172dbebf4bb579bc392f25666645719264c0b47378f7fc4f3a95c79bdf5a4","dweb:/ipfs/Qmd5wVnQ8rKHHQgUQzEDcAPiqrVzmNr9t2D7d1SqUg9hTo"],"license":"GPL-2.0-or-later"},"src/lib/Permit2Lib.sol":{"keccak256":"0xcb5e1e204f4ac6ea3fa164b8be1b1d31cbad0dff981072ea2c33abd720369e78","urls":["bzz-raw://cfa162286525ef8684112639c7b981c0472b06ce799f2440c626a70c273bb533","dweb:/ipfs/QmV1Uy4oodhg4SbCajv9xhiWFuwtU1YcTTvca1cDYCkND9"],"license":"GPL-2.0-or-later"},"src/lib/ResolvedOrderLib.sol":{"keccak256":"0xc56a31e72001e3e6ee0baf193423a7563cc61ba4869133e1cae5cf998bfe4d96","urls":["bzz-raw://4bddef26f26939f48923b11674495515d792cffbb2dc04f092212ff0b9971636","dweb:/ipfs/QmS1YAzhYLCi9oDtZN33mwBf5iExdwMhPNcnzh5nA8fPKX"],"license":"GPL-2.0-or-later"},"src/lib/V2DutchOrderLib.sol":{"keccak256":"0x513f3ccd5924d671ff4a8801e0f2481f52b0def06347e2448a1a2f1346ed99d3","urls":["bzz-raw://c777808d9f6edc1eb04d489cf402c4e8203c8a0fbf47b023192b105f1e9a2a72","dweb:/ipfs/QmQxoNZiwJcADeFVoGvM5ckCBrZoURAFncGBBA1Wfb6zTd"],"license":"GPL-2.0-or-later"},"src/reactors/BaseReactor.sol":{"keccak256":"0xd31b25dd7209a704fb17865e8112bc83a72e1816bc1d636c89366b2f1e3c4210","urls":["bzz-raw://f10c83e80f01d728f48aa06905e272eef776159ea83b53885c182da15597e3ca","dweb:/ipfs/Qmf2nx9abWsTMCVBV1At66HS3FVTXHreUVCpwVDKjkYadY"],"license":"GPL-2.0-or-later"},"src/reactors/V2DutchOrderReactor.sol":{"keccak256":"0x36b2677685d6673d39036e1750866c918c754e5e9cd8672ca8bb1159a7522a73","urls":["bzz-raw://ae71cbf90cf3b8758ca1b9ae0d4f600473711ab0951bf279d5e5d9b61d76f649","dweb:/ipfs/QmRChvpbAnxBTZnJdTmQ1nxQmE4LDMQLeW4C1tN1CUo6NA"],"license":"GPL-2.0-or-later"}},"version":1},"id":66} \ No newline at end of file