From 6cc6307caa76a31a89b9f1aab89be5179a6b9a86 Mon Sep 17 00:00:00 2001 From: Cody Hatfield Date: Tue, 27 Jun 2023 10:39:16 -0700 Subject: [PATCH] feat: add editContentHash function --- .../pco-license/facets/CFAPenaltyBidFacet.sol | 38 +++++++++++-------- .../pco-license/interfaces/ICFAPenaltyBid.sol | 26 ++++++++++--- .../pco-license/libraries/LibCFABasePCO.sol | 8 ++++ test/pco-license/CFAPenaltyBidFacet.ts | 34 +++++++++++++++++ .../factories/CFABasePCOFacet__factory.ts | 2 +- .../factories/CFAPenaltyBidFacet__factory.ts | 15 +++++++- .../factories/PCOLicenseDiamond__factory.ts | 2 +- .../PCOLicenseParamsFacet__factory.ts | 2 +- .../factories/RegistryDiamond__factory.ts | 2 +- 9 files changed, 102 insertions(+), 27 deletions(-) diff --git a/contracts/pco-license/facets/CFAPenaltyBidFacet.sol b/contracts/pco-license/facets/CFAPenaltyBidFacet.sol index d868739..dbc55d0 100644 --- a/contracts/pco-license/facets/CFAPenaltyBidFacet.sol +++ b/contracts/pco-license/facets/CFAPenaltyBidFacet.sol @@ -126,11 +126,10 @@ contract CFAPenaltyBidFacet is ICFAPenaltyBid, CFABasePCOFacetModifiers { * @param newContributionRate New contribution rate for bid * @param newForSalePrice Intented new for sale price. Must be within rounding bounds of newContributionRate */ - function editBid(int96 newContributionRate, uint256 newForSalePrice) - external - onlyPayer - onlyIfNotPendingBid - { + function editBid( + int96 newContributionRate, + uint256 newForSalePrice + ) external onlyPayer onlyIfNotPendingBid { LibCFABasePCO._editBid(newContributionRate, newForSalePrice); } @@ -142,11 +141,10 @@ contract CFAPenaltyBidFacet is ICFAPenaltyBid, CFABasePCOFacetModifiers { * @param newContributionRate New contribution rate for bid * @param newForSalePrice Intented new for sale price. Must be within rounding bounds of newContributionRate */ - function placeBid(int96 newContributionRate, uint256 newForSalePrice) - external - onlyIfPayerBidActive - onlyNotPayer - { + function placeBid( + int96 newContributionRate, + uint256 newForSalePrice + ) external onlyIfPayerBidActive onlyNotPayer { LibCFAPenaltyBid._placeBid( newContributionRate, newForSalePrice, @@ -154,6 +152,16 @@ contract CFAPenaltyBidFacet is ICFAPenaltyBid, CFABasePCOFacetModifiers { ); } + /** + * @notice Edit content hash + * - Must be the current payer + * - Must have permissions to update flow for payer + * @param contentHash Content hash for parcel content + */ + function editContentHash(bytes calldata contentHash) external onlyPayer { + LibCFABasePCO._editContentHash(contentHash); + } + /** * @notice Edit bid with content hash * - Must be the current payer @@ -230,12 +238,10 @@ contract CFAPenaltyBidFacet is ICFAPenaltyBid, CFABasePCOFacetModifiers { * @param newContributionRate New contribution rate for bid * @param newForSalePrice Intented new for sale price. Must be within rounding bounds of newContributionRate */ - function rejectBid(int96 newContributionRate, uint256 newForSalePrice) - external - onlyPayer - onlyIfPendingBid - onlyDuringBidPeriod - { + function rejectBid( + int96 newContributionRate, + uint256 newForSalePrice + ) external onlyPayer onlyIfPendingBid onlyDuringBidPeriod { LibCFAPenaltyBid.Bid storage _pendingBid = LibCFAPenaltyBid .pendingBid(); LibCFABasePCO.Bid storage _currentBid = LibCFABasePCO._currentBid(); diff --git a/contracts/pco-license/interfaces/ICFAPenaltyBid.sol b/contracts/pco-license/interfaces/ICFAPenaltyBid.sol index 326a87a..c23a6e2 100644 --- a/contracts/pco-license/interfaces/ICFAPenaltyBid.sol +++ b/contracts/pco-license/interfaces/ICFAPenaltyBid.sol @@ -58,16 +58,20 @@ interface ICFAPenaltyBid { * @param newContributionRate New contribution rate for bid * @param newForSalePrice Intented new for sale price. Must be within rounding bounds of newContributionRate */ - function editBid(int96 newContributionRate, uint256 newForSalePrice) - external; + function editBid( + int96 newContributionRate, + uint256 newForSalePrice + ) external; /** * @notice Place a bid to purchase license as msg.sender * @param newContributionRate New contribution rate for bid * @param newForSalePrice Intented new for sale price. Must be within rounding bounds of newContributionRate */ - function placeBid(int96 newContributionRate, uint256 newForSalePrice) - external; + function placeBid( + int96 newContributionRate, + uint256 newForSalePrice + ) external; /** * @notice Accept a pending bid as the current payer @@ -79,8 +83,10 @@ interface ICFAPenaltyBid { * @param newContributionRate New contribution rate for bid * @param newForSalePrice Intented new for sale price. Must be within rounding bounds of newContributionRate */ - function rejectBid(int96 newContributionRate, uint256 newForSalePrice) - external; + function rejectBid( + int96 newContributionRate, + uint256 newForSalePrice + ) external; /** * @notice Trigger a transfer after bidding period has elapsed @@ -110,4 +116,12 @@ interface ICFAPenaltyBid { uint256 newForSalePrice, bytes calldata contentHash ) external; + + /** + * @notice Edit content hash + * - Must be the current payer + * - Must have permissions to update flow for payer + * @param contentHash Content hash for parcel content + */ + function editContentHash(bytes calldata contentHash) external; } diff --git a/contracts/pco-license/libraries/LibCFABasePCO.sol b/contracts/pco-license/libraries/LibCFABasePCO.sol index 564cd36..117eec8 100644 --- a/contracts/pco-license/libraries/LibCFABasePCO.sol +++ b/contracts/pco-license/libraries/LibCFABasePCO.sol @@ -238,6 +238,14 @@ library LibCFABasePCO { _editBid(newContributionRate, newForSalePrice, bid.contentHash); } + function _editContentHash(bytes memory contentHash) internal { + Bid storage bid = _currentBid(); + + bid.contentHash = contentHash; + + emit PayerContentHashUpdated(bid.bidder, contentHash); + } + function _editBid( int96 newContributionRate, uint256 newForSalePrice, diff --git a/test/pco-license/CFAPenaltyBidFacet.ts b/test/pco-license/CFAPenaltyBidFacet.ts index 32ea372..8402c2c 100644 --- a/test/pco-license/CFAPenaltyBidFacet.ts +++ b/test/pco-license/CFAPenaltyBidFacet.ts @@ -1437,6 +1437,40 @@ describe("CFAPenaltyBidFacet", async function () { }); }); + describe("editContentHash", async () => { + it("should edit", async () => { + const { basePCOFacet } = await BaseFixtures.initialized(); + const { user } = await getNamedAccounts(); + + const txn = await basePCOFacet + .connect(await ethers.getSigner(user)) + ["editContentHash(bytes)"]("0x13"); + await txn.wait(); + + expect(await basePCOFacet.contentHash()).to.equal("0x13"); + }); + + it("should edit if has pending bid", async () => { + const { basePCOFacet } = await CFAPenaltyBidFixtures.afterPlaceBid(); + const { user } = await getNamedAccounts(); + + const txn = await basePCOFacet + .connect(await ethers.getSigner(user)) + ["editContentHash(bytes)"]("0x13"); + await txn.wait(); + }); + + it("should fail if not payer", async () => { + const { basePCOFacet } = await BaseFixtures.initialized(); + + const txn = basePCOFacet["editContentHash(bytes)"]("0x13"); + + await expect(txn).to.be.revertedWith( + "CFABasePCOFacet: Only payer is allowed to perform this action" + ); + }); + }); + describe("placeBid with content hash", async () => { it("should place bid with create permissions", async () => { const { diff --git a/typechain-types/factories/CFABasePCOFacet__factory.ts b/typechain-types/factories/CFABasePCOFacet__factory.ts index e1c35d9..2451a2b 100644 --- a/typechain-types/factories/CFABasePCOFacet__factory.ts +++ b/typechain-types/factories/CFABasePCOFacet__factory.ts @@ -301,7 +301,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50611728806100206000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80636b87d24c116100665780636b87d24c1461011d5780636df38b84146101255780638d107ff5146101405780639190f8d314610171578063def181011461017957600080fd5b8063123119cd146100a35780631355165f146100c85780632c55dbed146100dd5780633f5909a9146100f5578063646c2e3314610108575b600080fd5b6100ab61018e565b6040516001600160a01b0390911681526020015b60405180910390f35b6100db6100d636600461112c565b6101b4565b005b6100e5610277565b60405190151581526020016100bf565b6100db6101033660046111b0565b610286565b610110610350565b6040516100bf91906112e3565b6100ab610413565b61012d61043c565b604051600b9190910b81526020016100bf565b7f7afbdc140ed2feae39152d66ce3c9b7394a1bbd963c668f15d7196d48d2532cb545b6040519081526020016100bf565b610163610446565b610181610481565b6040516100bf91906112fd565b6000806000805160206116d38339815191525b600101546001600160a01b031692915050565b7f8a22373512790c48b83a1fe2efdd2888d4a917bcdc24d0adf63e60f671680460546001600160a01b031633146102325760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060448201526064015b60405180910390fd5b61026e8787878787878760006040519080825280601f01601f191660200182016040528015610268576020820181803683370190505b5061065c565b50505050505050565b6000610281610cee565b905090565b7f8a22373512790c48b83a1fe2efdd2888d4a917bcdc24d0adf63e60f671680460546001600160a01b031633146102ff5760405162461bcd60e51b815260206004820152601d60248201527f4f776e61626c653a2073656e646572206d757374206265206f776e65720000006044820152606401610229565b6103458989898989898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061065c92505050565b505050505050505050565b7f3c72d60a0f1018560e1ecd381dcc70c04920ba28255c0b6f8b496f8f6f727f4680546060916000805160206116d38339815191529161038f9061137e565b80601f01602080910402602001604051908101604052809291908181526020018280546103bb9061137e565b80156104085780601f106103dd57610100808354040283529160200191610408565b820191906000526020600020905b8154815290600101906020018083116103eb57829003601f168201915b505050505091505090565b6000807f7afbdc140ed2feae39152d66ce3c9b7394a1bbd963c668f15d7196d48d2532c96101a1565b6000610281610d02565b6000610450610cee565b1561047b57507f3c72d60a0f1018560e1ecd381dcc70c04920ba28255c0b6f8b496f8f6f727f455490565b50600090565b6104cd6040518060e001604052806000815260200160006001600160a01b031681526020016000600b0b8152602001600081526020016000815260200160008152602001606081525090565b6040805160e0810182526000805160206116d3833981519152805482527f3c72d60a0f1018560e1ecd381dcc70c04920ba28255c0b6f8b496f8f6f727f42546001600160a01b0381166020840152600160a01b9004600b0b928201929092527f3c72d60a0f1018560e1ecd381dcc70c04920ba28255c0b6f8b496f8f6f727f435460608201527f3c72d60a0f1018560e1ecd381dcc70c04920ba28255c0b6f8b496f8f6f727f445460808201527f3c72d60a0f1018560e1ecd381dcc70c04920ba28255c0b6f8b496f8f6f727f455460a08201527f3c72d60a0f1018560e1ecd381dcc70c04920ba28255c0b6f8b496f8f6f727f468054839160c08401916105d49061137e565b80601f01602080910402602001604051908101604052809291908181526020018280546106009061137e565b801561064d5780601f106106225761010080835404028352916020019161064d565b820191906000526020600020905b81548152906001019060200180831161063057829003601f168201915b50505050508152505091505090565b7f7afbdc140ed2feae39152d66ce3c9b7394a1bbd963c668f15d7196d48d2532c980546001600160a01b03199081166001600160a01b038a811691821784557f7afbdc140ed2feae39152d66ce3c9b7394a1bbd963c668f15d7196d48d2532ca805484168b83161790557f7afbdc140ed2feae39152d66ce3c9b7394a1bbd963c668f15d7196d48d2532cb8990557f7afbdc140ed2feae39152d66ce3c9b7394a1bbd963c668f15d7196d48d2532cc8054909316908c161790915560408051631ab1246d60e11b8152905163356248da916004808201926020929091908290030181865afa158015610752573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077691906113b8565b8310156107dd5760405162461bcd60e51b815260206004820152602f60248201527f4346414261736550434f46616365743a204d696e696d756d20666f722073616c60448201526e19481c1c9a58d9481b9bdd081b595d608a1b6064820152608401610229565b805460408051630b51881360e11b815290516000926001600160a01b0316916316a310269160048083019260209291908290030181865afa158015610826573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084a91906113b8565b905060008260000160009054906101000a90046001600160a01b03166001600160a01b031663014df4146040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c791906113b8565b90506108d585878484610e99565b6109315760405162461bcd60e51b815260206004820152602760248201527f4c69624346414261736550434f3a20496e636f727265637420666f722073616c6044820152666520707269636560c81b6064820152608401610229565b8254604080516320bc442560e01b815290517feaf1cf088be31249661a61fc7743edf628a39210375613d4be0a9cda3ec06da6926000926001600160a01b03909116916320bc4425916004808201926020929091908290030181865afa15801561099f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c391906113d1565b6040805180820182526001600160a01b0383168082529151635b69006f60e11b81527fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd360048201529293509160208301919063b6d200de90602401602060405180830381865afa158015610a3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5f91906113d1565b6001600160a01b03908116909152815184549082166001600160a01b03199182161785556020928301516001860180549184169190921617905586546040805163d41c3a6560e01b81529051600094929093169263d41c3a65926004808401939192918290030181865afa158015610adb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aff91906113d1565b426000805160206116d38339815191529081556001600160a01b038c16600160a01b6bffffffffffffffffffffffff8d1602177f3c72d60a0f1018560e1ecd381dcc70c04920ba28255c0b6f8b496f8f6f727f42557f3c72d60a0f1018560e1ecd381dcc70c04920ba28255c0b6f8b496f8f6f727f438790557f3c72d60a0f1018560e1ecd381dcc70c04920ba28255c0b6f8b496f8f6f727f448690557f3c72d60a0f1018560e1ecd381dcc70c04920ba28255c0b6f8b496f8f6f727f458a90559091507f3c72d60a0f1018560e1ecd381dcc70c04920ba28255c0b6f8b496f8f6f727f46610bee8982611439565b508a6001600160a01b03167fae3c4f18410e9cfcd20fc8664a5a0082a92f07a0a5febdc22bec0c53939373368a604051610c2a91815260200190565b60405180910390a2604051600b8b900b81526001600160a01b038c16907f6602f4d39e226f3807ddac3e7aab03883832e2ea2d07ccdeaf513c16679fdcd09060200160405180910390a28a6001600160a01b03167f488d437d8adb2ae8d8c71369f71f88a6c69e89267671cfb8f8b5f3149526a92589604051610cad91906112e3565b60405180910390a2610cc2848c30858e610ecc565b50610cdd8f838c87600001610efb909392919063ffffffff16565b505050505050505050505050505050565b600080610cf9610d02565b600b0b13905090565b7feaf1cf088be31249661a61fc7743edf628a39210375613d4be0a9cda3ec06da7547f7afbdc140ed2feae39152d66ce3c9b7394a1bbd963c668f15d7196d48d2532c980546040805163d41c3a6560e01b815290516000947feaf1cf088be31249661a61fc7743edf628a39210375613d4be0a9cda3ec06da69386936001600160a01b039283169363e6a1e888939092169163d41c3a65916004808201926020929091908290030181865afa158015610dbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de391906113d1565b30610e157f7afbdc140ed2feae39152d66ce3c9b7394a1bbd963c668f15d7196d48d2532cc546001600160a01b031690565b60405160e085901b6001600160e01b03191681526001600160a01b03938416600482015291831660248301529091166044820152606401608060405180830381865afa158015610e69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8d91906114f9565b50909695505050505050565b60008082610ea78588611537565b610eb19190611564565b6bffffffffffffffffffffffff861614915050949350505050565b604080516000815260208101909152606090610ef19087908790879087908790610f21565b9695505050505050565b604080516000815260208101909152610f1b908590859085908590611026565b50505050565b855460018701546060916001600160a01b03908116916339255d5b9116806394229ecb888b8b8a60006040519080825280601f01601f191660200182016040528015610f74576020820181803683370190505b50604051602401610f89959493929190611586565b60408051808303601f1901815291815260208201805160e094851b6001600160e01b03909116179052519185901b6001600160e01b0319168252610fd49392509087906004016115c4565b6000604051808303816000875af1158015610ff3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261101b91908101906115fa565b979650505050505050565b845460018601546040805160008152602081019091526001600160a01b03928316926339255d5b92169081906362fc305e9061106b9089908b908a906044810161169c565b60408051808303601f1901815291815260208201805160e094851b6001600160e01b03909116179052519185901b6001600160e01b03191682526110b69392509086906004016115c4565b6000604051808303816000875af11580156110d5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110fd91908101906115fa565b505050505050565b6001600160a01b038116811461111a57600080fd5b50565b80600b0b811461111a57600080fd5b600080600080600080600060e0888a03121561114757600080fd5b873561115281611105565b9650602088013561116281611105565b9550604088013561117281611105565b945060608801359350608088013561118981611105565b925060a08801356111998161111d565b8092505060c0880135905092959891949750929550565b60008060008060008060008060006101008a8c0312156111cf57600080fd5b89356111da81611105565b985060208a01356111ea81611105565b975060408a01356111fa81611105565b965060608a0135955060808a013561121181611105565b945060a08a01356112218161111d565b935060c08a0135925060e08a013567ffffffffffffffff8082111561124557600080fd5b818c0191508c601f83011261125957600080fd5b81358181111561126857600080fd5b8d602082850101111561127a57600080fd5b6020830194508093505050509295985092959850929598565b60005b838110156112ae578181015183820152602001611296565b50506000910152565b600081518084526112cf816020860160208601611293565b601f01601f19169290920160200192915050565b6020815260006112f660208301846112b7565b9392505050565b602081528151602082015260018060a01b0360208301511660408201526040820151600b0b606082015260608201516080820152608082015160a082015260a082015160c0820152600060c083015160e0808401526113606101008401826112b7565b949350505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061139257607f821691505b6020821081036113b257634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156113ca57600080fd5b5051919050565b6000602082840312156113e357600080fd5b81516112f681611105565b601f82111561143457600081815260208120601f850160051c810160208610156114155750805b601f850160051c820191505b818110156110fd57828155600101611421565b505050565b815167ffffffffffffffff81111561145357611453611368565b61146781611461845461137e565b846113ee565b602080601f83116001811461149c57600084156114845750858301515b600019600386901b1c1916600185901b1785556110fd565b600085815260208120601f198616915b828110156114cb578886015182559484019460019091019084016114ac565b50858210156114e95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000806000806080858703121561150f57600080fd5b8451935060208501516115218161111d565b6040860151606090960151949790965092505050565b600081600019048311821515161561155f57634e487b7160e01b600052601160045260246000fd5b500290565b60008261158157634e487b7160e01b600052601260045260246000fd5b500490565b6001600160a01b038681168252858116602083015284166040820152600b83900b606082015260a06080820181905260009061101b908301846112b7565b6001600160a01b03841681526060602082018190526000906115e8908301856112b7565b8281036040840152610ef181856112b7565b60006020828403121561160c57600080fd5b815167ffffffffffffffff8082111561162457600080fd5b818401915084601f83011261163857600080fd5b81518181111561164a5761164a611368565b604051601f8201601f19908116603f0116810190838211818310171561167257611672611368565b8160405282815287602084870101111561168b57600080fd5b61101b836020830160208801611293565b6001600160a01b03858116825284166020820152600b83900b6040820152608060608201819052600090610ef1908301846112b756fe3c72d60a0f1018560e1ecd381dcc70c04920ba28255c0b6f8b496f8f6f727f41a2646970667358221220503c27890d2553a2172798d0d97fdbe35d4a8cbd1bb32c012facb60062b5bff164736f6c63430008100033"; + "0x608060405234801561001057600080fd5b50613836806100206000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80636b87d24c116100665780636b87d24c146101355780636df38b84146101535780638d107ff5146101715780639190f8d31461018f578063def18101146101ad5761009e565b8063123119cd146100a35780631355165f146100c15780632c55dbed146100dd5780633f5909a9146100fb578063646c2e3314610117575b600080fd5b6100ab6101cb565b6040516100b89190612f8e565b60405180910390f35b6100db60048036038101906100d69190612fd0565b6102e0565b005b6100e561056b565b6040516100f2919061305c565b60405180910390f35b6101156004803603810190610110919061306f565b6105fe565b005b61011f610882565b60405161012c91906131b4565b60405180910390f35b61013d6109ff565b60405161014a91906131cf565b60405180910390f35b61015b610b14565b60405161016891906131e8565b60405180910390f35b610179610ba7565b60405161018691906131fc565b60405180910390f35b610197610c9c565b6040516101a491906131fc565b60405180910390f35b6101b5610eb0565b6040516101c2919061320d565b60405180910390f35b60006101f97f2e581426122a3a237e757fc1b1d8404b226cf1e5c5246ac9b0c25f1e8ce0588f60001b6110df565b6102257faaf60b1c7367730fd942ee847d7652312a91fc1be0f74b294b5d43bafc2d2b9760001b6110df565b6102517f5d8439b1d31b0562eded6fef0c09f928f13bd280e4f61fc315884484a1e42e7e60001b6110df565b600061025b6110e2565b90506102897f8d7ac8496681a847a9012f976b2f21cb7588f941041b7d6541dbd09ca9fc1b2060001b6110df565b6102b57f3d81589d8130a67b50075a6d0b73fb16360e4b5ab2bc335c7ef6aa49d280cb2c60001b6110df565b8060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b61030c7f5f4cae7078280de69f178b014b5470d02d112297804c9c3de76e21cb0faffcbb60001b6111c0565b6103387f19a5860cb9bb33db6a40fd3ba0d4971377fdd3a73d23b95f027f587eaa1f19dd60001b6111c0565b6103647ffa8f68c4a81de9dd4c6fd4c4eccd94f59d960e57e289895fd77ce7d3a5dcb85160001b6111c0565b6103907f8e8a830db13ff3c1289ce06f783ab1ff9a634cfc1c8ed90cb723ef37c15eb95e60001b6111c0565b6103986111c3565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610429576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042090613279565b60405180910390fd5b6104557f784145c86fd27dd93691dbda1082fbe1e8e48d526119e12bb756ff1f93dada5960001b6111c0565b6104817fe499fdbaec3a63681b494ec546360fdaf3aa658c46c51e9abd4624b0fd11fecb60001b6111c0565b6104ad7f7772de88d8038dea5b0b6941bddcad38cf6713e3644c2d2f0c4996128ce359aa60001b6110df565b6104d97fa54fcd0d11abb1325eaef62a91a93d3a53ce891fcca2f55634132b08080632a060001b6110df565b6105057f89085d0e09c63a023591d4952d781101e9029470fc6ce8afc0693d4feff2615760001b6110df565b61056287878787878787600067ffffffffffffffff81111561052a576105296132b7565b5b6040519080825280601f01601f19166020018201604052801561055c5781602001600182028036833780820191505090505b506111f0565b50505050505050565b60006105997f0e11ad406e665357ca61c803f86a40441e9a544511746ec3ca13f8821a3f65aa60001b6110df565b6105c57f6ccd5235bc74370fcdeba08ee6afa9c8c05f321a828ec05f249eaaddf595361460001b6110df565b6105f17f12195ce69751f3806e4106c765f06dc122f8b36bb22253e50609c0b79d81117460001b6110df565b6105f961237e565b905090565b61062a7f5f4cae7078280de69f178b014b5470d02d112297804c9c3de76e21cb0faffcbb60001b6111c0565b6106567f19a5860cb9bb33db6a40fd3ba0d4971377fdd3a73d23b95f027f587eaa1f19dd60001b6111c0565b6106827ffa8f68c4a81de9dd4c6fd4c4eccd94f59d960e57e289895fd77ce7d3a5dcb85160001b6111c0565b6106ae7f8e8a830db13ff3c1289ce06f783ab1ff9a634cfc1c8ed90cb723ef37c15eb95e60001b6111c0565b6106b66111c3565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073e90613279565b60405180910390fd5b6107737f784145c86fd27dd93691dbda1082fbe1e8e48d526119e12bb756ff1f93dada5960001b6111c0565b61079f7fe499fdbaec3a63681b494ec546360fdaf3aa658c46c51e9abd4624b0fd11fecb60001b6111c0565b6107cb7fbcdfecf24f94935a595ea6b7be6b8a756d9c20111a6e7ff9649c527f521e312160001b6110df565b6107f77f5fec07e018a410366b7479ba635540ebbe6bc302401bd714f5ca162c580f169160001b6110df565b6108237f08e8dae8139fbd573cd81506bbf50028362db4fac69dede637e0be65d76dcd8a60001b6110df565b6108778989898989898989898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506111f0565b505050505050505050565b60606108b07fb8dd078bc5181384ec5369dc6ad18323fa790b3d472c895ec07c3b05b525f3a260001b6110df565b6108dc7fa7fd1d11582dcf772c6afa2248db918ac9dee40f92b38cd9b7b6acf76bc5f15760001b6110df565b6109087fca89c57de6f86a7ee0bd03b34010fae13c3bd1c1dfce0e3b6e810a089f763ff560001b6110df565b60006109126110e2565b90506109407fdd8c3b18e935a4d41b4b6443ad97cfe2b8ea29fdcd6b4b9731ca2d5e93bed73160001b6110df565b61096c7f3cbb2a770168d19794a19a0aa802eaca6b99f9c698fb1ea7fdd87ec65e914bef60001b6110df565b80600501805461097b906132cd565b80601f01602080910402602001604051908101604052809291908181526020018280546109a7906132cd565b80156109f45780601f106109c9576101008083540402835291602001916109f4565b820191906000526020600020905b8154815290600101906020018083116109d757829003601f168201915b505050505091505090565b6000610a2d7f2dcb04768aed535a4dae8cf6c6d1fdfbecb176c8dae8f07a0a2f1d001af4440060001b6110df565b610a597f0f69b5b9c42e4b9b6c7c5d24107663b2a35853952767e34c72b48bfd8b866d7260001b6110df565b610a857f16018fd16ed63e814858d827d62ca297fed4af57d5406a84f6b10bbd1f0f107560001b6110df565b6000610a8f612417565b9050610abd7f87050f4d47b2f49d7d60cf4cf20d6cc54dc1cca2134fe68651da388ff27b136e60001b6110df565b610ae97f9b2c9a84054c55fadf43c05d6420997c46c30cab181b236ecfebd13c58e6741c60001b6110df565b8060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b6000610b427f853c5ab795645a366b86afa791d17026a6e07cb4bc2419f0cb26f88881b6e6d460001b6110df565b610b6e7f33e7a163955bfd5389da175d8f5938e46b7d225e9b5d4e445ad214c924e07bae60001b6110df565b610b9a7f237e5b574d14167e1c36ef69132b6a4ccb350be1a8921d1c39372437cfb3ebd460001b6110df565b610ba26124f5565b905090565b6000610bd57fe6de5f45793e9c07709e14c27d80a6676f4a3714ba293b0d25bfffc79a9bad8060001b6110df565b610c017f95c84246c97ad7094e7abe650fd152fe897ddeb5574bb7059e8677289fe80f9f60001b6110df565b610c2d7ff617688fd6772d1040d105e9c6f445b57c8658602da839f4bb00f463bffb9d9d60001b6110df565b6000610c37612417565b9050610c657f769c79f565bef55a19fbd189ca7630d7d1de07358031b30637d0339880df3e2760001b6110df565b610c917ff9d11828815a9a8ece2ea943458e79dca7f5b81b17bbc00f97ff8a6921e3021d60001b6110df565b806002015491505090565b6000610cca7f2e66e292cd3e54840ad7c0907700249b344c58be8750ded8d1742a4e85ebf3f560001b6110df565b610cf67f539c4691adb7a457b9d9c97c6709fd460224dd4dee10255fb45a60e9c5b32d8360001b6110df565b610d227f089bca70064ce2fdc8f28d242813ffa57782aff8667638e05dce27bfd80b0f4060001b6110df565b610d2a61237e565b15610e2457610d5b7fd4f01dbed529ea1dbbcb4b3bb38b0a59d3ef402eee5006cdcf41afdeec52dad360001b6110df565b610d877f840559f627a5b54518b6423c933a660e1514d6c20e463c635831213757726f3760001b6110df565b610db37f0770193109b340af9d2cbb51de7378a799059810fbb9584556718fe9390bdae760001b6110df565b6000610dbd6110e2565b9050610deb7fe1ac2ba07310a81e6cd6696f4ca5443e3df9d80707f66e4b7c79b56d1846c9a460001b6110df565b610e177f80ef43200dd530e8af247824b271b46c84369343bedb1f32064038b73f335a5560001b6110df565b8060040154915050610ead565b610e507fb6b6335daae675d09af474db7b28b04abe05d452302395d1b998228bcfaaee9560001b6110df565b610e7c7fe6eda4689c01c32446878b9140448d9ad4778a7c5d87903682337d18935c0c5b60001b6110df565b610ea87f929675a2fe05ac349e1dad3962d16f17937848c25ba52651c0b9f6ed2006baba60001b6110df565b600090505b90565b610eb8612f38565b610ee47f71bc246d667858ac01fdfe78dd242a63a56c45d5e353fec7f54033a4d194a06760001b6110df565b610f107ff2ce800c94aa09e3105269982c11d7411077be8fefb3cc4f8209870311053f1360001b6110df565b610f3c7f8735cf660891137422d74963770ab74b6dc496ded8fbed9fe3a7deb5e9a2cda860001b6110df565b6000610f466110e2565b9050610f747f1c348d6e798a29eaec347504d2bc1dd5665915e9c52bdc7da38992362c85760260001b6110df565b610fa07f402b16cf405775c50c8f24ebe739d8bd00433a86d0e12711923560b344c1b0c960001b6110df565b806040518060e0016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a9004600b0b600b0b600b0b8152602001600282015481526020016003820154815260200160048201548152602001600582018054611057906132cd565b80601f0160208091040260200160405190810160405280929190818152602001828054611083906132cd565b80156110d05780601f106110a5576101008083540402835291602001916110d0565b820191906000526020600020905b8154815290600101906020018083116110b357829003601f168201915b50505050508152505091505090565b50565b60006111107fce954879093f8a4b337b1d97c20d4580a92e0002f0441446d989fe80c567d4a560001b6127e9565b61113c7f39a1effad31454ab2e8ef97a058b47694bad8a6e1bf3eb9f8ed6d0f6b08af8b160001b6127e9565b6111687f4be7708471ace32a144661dd4838165211d1dcb70c72d5190e426fda67a876ce60001b6127e9565b60007f3c72d60a0f1018560e1ecd381dcc70c04920ba28255c0b6f8b496f8f6f727f4190506111b97fc5a8593d23a153b112004b34012ad330cbd9aea7e609ef2bbecf3e3ce5856c8560001b6127e9565b8091505090565b50565b6000807f8a22373512790c48b83a1fe2efdd2888d4a917bcdc24d0adf63e60f67168046090508091505090565b61121c7f88c964b4f124d791257cb5f450a9457c9d19ceac9f1bcd9e2c2cb2e9e3ae5cd660001b6127e9565b6112487ff6a8ba0fbeea4b271e91e1410b147bdf79c2f61bd4598c2949d31dcb5ada85ef60001b6127e9565b6112747f84c115115b1345f2d7f0c299c4a4203c87d11ffc74a5202a50a6e74809a62af360001b6127e9565b600061127e612417565b90506112ac7f262fec07f91f6854d2e2835ddceb92e31a8507afa754c1b219dcbb02a5ae8bb760001b6127e9565b6112d87ff0eb93271b575173a920caae54d575c94dc75e059c063d4fbdd7c32de370ac5160001b6127e9565b878160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506113477f1f2a3e09b44da4454050b235b7a76e1c82f8145c64187217e5fe4d945c9bd6eb60001b6127e9565b6113737f0aebb9a66d911cc381ac3bca1b0e2a72a68cc64996b544b504a0ee0090d707c960001b6127e9565b868160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506113e27f6153db46fe5d70ee2c9976f01e4ab223869c743bca47213c452e1fef69b2727f60001b6127e9565b61140e7f4d4678d74ba2a3cc98397e40521536112a61171927785896d8e4434b823f6b4a60001b6127e9565b8581600201819055506114437f91a1f4cda7e305478d3926378effb0bf5a0f21460c2e93b80b260ef2fcc1c83260001b6127e9565b61146f7f7bc9b98db825d9306c2f14d687874dd4a339de4e69d6d7d264c68382c825d9e660001b6127e9565b888160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506114de7fa5e7da91e44f83856ce648a77dd02719c016d0ffd8be2d6e38b82481bfa2e56460001b6127e9565b61150a7f618ad79054417fcfc0c42ba9a52e6fe328d7deb9187dcbbef8fe00a3ff1b5c3b60001b6127e9565b6115367fe5442b9e9212022427e464aee87b699268b22e26d08bc8d9c1ec0ddc6d5d9bb760001b6127e9565b8060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663356248da6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115c9919061330b565b83101561160b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160290613327565b60405180910390fd5b6116377ffa5032076fd82bc0c1946d1981a428cc26248d80fbafc5f782f55c0f9605177060001b6127e9565b6116637f703b6142d075d44bce6327bbd55a7868acd45951f376db7d5cba1248e9fe697a60001b6127e9565b61168f7fbb93b0b9d188f31ee6d77460bcc89d410c3b73a7a85a090bca8cbca5f52591bf60001b6127e9565b60008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166316a310266040518163ffffffff1660e01b8152600401602060405180830381865afa158015611700573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611724919061330b565b90506117527f03e0044963bfccbd958d79a151f8e8446cd8e29c72a0e6d0e1f00e582a58937860001b6127e9565b61177e7f7a408560b8965243c81d13f5533b6b94de164ea30982550f2e1c1722115e44e160001b6127e9565b60008260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663014df4146040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611813919061330b565b90506118417f179c4f533ee34e4fd1df7c1c9278eb1fc4da56906c573efb61d4738caffa7a3a60001b6127e9565b61186d7f2dec982741d477d1e6d0460b5befb7a789da1de42d2bb00f9a8881df0d8f069860001b6127e9565b6118997f31da499c2b122ff072bd4f79b11a00775d656f9b3cfad909b4a87ac404c638f960001b6127e9565b6118a5858784846127ec565b6118e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118db9061338b565b60405180910390fd5b6119107fb9fa539c35bd81941804118a6d9a01a5d2723c4b4e8d65d1dc437ef6069a000260001b6127e9565b61193c7fe7f46d99d3f073e5ea3844a481c5c3d49476426d7dde90a20c0893fe37a3250d60001b6127e9565b6119687f97de8a52064bf7ec32cf3fcf8d1adfb91d88b82a829f2af4936592bf3681891d60001b6127e9565b6000611972612901565b90506119a07f44517275cb6fd9d4d974fa7bb879d183c326d4598a83e2073d8fd5e902d149ab60001b6127e9565b6119cc7f3d1a9b078edcb61e9277f4620b06ba7bed9692924af942e7fa68585bb5c8fe9b60001b6127e9565b60008460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6191906133ef565b9050611a8f7f5b97a67cab742341a902e8ccc525b3bfd976d8a4009b0927b69400aae5e7852860001b6127e9565b611abb7f5c398b180efe4c38de3b0d6f3e10619a0e70fa0f364970d2f45f60800f5c276960001b6127e9565b60405180604001604052808273ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1663b6d200de7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36040518263ffffffff1660e01b8152600401611b3b9190613416565b602060405180830381865afa158015611b58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7c9190613427565b73ffffffffffffffffffffffffffffffffffffffff168152508260000160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050611c567fd566e8c3536ed503ae12ed8363e082cc23d9e5b04b1f897449bf3e16fa9bd0f360001b6127e9565b611c827fed3829a3f4ba084167e04c1399f5e5e9e5b949c0eb342972bc0508c93319d16060001b6127e9565b60008560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d41c3a656040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d17919061344e565b9050611d457f567208a52eeba86b8bf6c38f2f3ed4d7874b54609668ae37978705ffa7482e5360001b6127e9565b611d717fdf28882f0fa4379f501f4e70435d27e581352cbe171389d759f0a42cef0c3f2b60001b6127e9565b6000611d7b6110e2565b9050611da97ff6c47a8eb36c9ed7e2ec71b06de6469a8e0a64845f68a25c8bf66054b6a458f460001b6127e9565b611dd57f9f3de26848cdb9cdeec5014a99a2a26b7b9b791c301eee7132865c1e46023ba760001b6127e9565b428160000181905550611e0a7f41a502f5142338eb6ffb6a0fbdf64a258be7d5e6a91d568ab38e0d48a0022f1d60001b6127e9565b611e367f80ef15aa68e2e090ef0d144cb128a68dd6f1e23d422681d34fadc320a6e20c0260001b6127e9565b8a8160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611ea57f0d486df9853673a8804fbfc83856b637e6317b50ed20b32336ad1591272a8d9060001b6127e9565b611ed17ffc37c9c9d3b7673901114e47201f4e33a4122af87c5b83b854e01865bc8b5e9e60001b6127e9565b898160010160146101000a8154816bffffffffffffffffffffffff0219169083600b0b6bffffffffffffffffffffffff160217905550611f337fe9f46f3370e8ffbbee2016559b4b43169928d889b4cd73db59ef6e8d7acbf96560001b6127e9565b611f5f7f8416889a1b5ed0f5aeebbd7d057eed07ca5e70b03425263712ab6443a9692c0560001b6127e9565b858160020181905550611f947fe28eb6cd3deba4aae39b866e7318c54cd71f33ac4a1c3469a9052d80d93fd46960001b6127e9565b611fc07f840ccb0b32a590060272faeae8bfc7e2779dfa32138b3c9acf7917cd09db3e0f60001b6127e9565b848160030181905550611ff57fc4eeb52fcaa844c1289c9ddfff41a2ec5628255d6be42d0ffea141bdea86222f60001b6127e9565b6120217f3b4ce095daebefb8c735a6bc384f996ebb9761a0720b31b99c44e924921fd15560001b6127e9565b8881600401819055506120567fde32dadd9cd436d98b26f2e140b2a6bb553e949df4a0431d7e9bb9009f5e1b9d60001b6127e9565b6120827f194487f33e12ed9fcea45e0390b59c9137a836fe2d876bbfce9c9781aba6ecbf60001b6127e9565b8781600501908161209391906134f3565b506120c07f0a97c7593034e595df7c21f9906e2bcd78fc3583191104d3c76eb87c00de61d360001b6127e9565b6120ec7fd742fdfb38ed970a5692f708fb4b6fd8137d11ac516209efa0f04f18124b49ef60001b6127e9565b8a73ffffffffffffffffffffffffffffffffffffffff167fae3c4f18410e9cfcd20fc8664a5a0082a92f07a0a5febdc22bec0c53939373368a60405161213291906131fc565b60405180910390a26121667f246da26f84fb842723495a987e935d0153236b42a41495bef74b731afe26500360001b6127e9565b6121927f5f2fcfce7f58f7cf41b9d83b49e5976c83923a4c7355891ce6dda7cf6a93f1b460001b6127e9565b8a73ffffffffffffffffffffffffffffffffffffffff167f6602f4d39e226f3807ddac3e7aab03883832e2ea2d07ccdeaf513c16679fdcd08b6040516121d891906131e8565b60405180910390a261220c7ff7ec03095125a197608661b97e4260031adc2b26a977d85e39f062f715c225d460001b6127e9565b6122387f38da4f3982b2992cd7ed52c5b2cd939e57f6e2331942e8bf7a0e7beb1cdca8c760001b6127e9565b8a73ffffffffffffffffffffffffffffffffffffffff167f488d437d8adb2ae8d8c71369f71f88a6c69e89267671cfb8f8b5f3149526a9258960405161227e91906131b4565b60405180910390a26122b27f95a3a7c0c2ef29fbc0f393114099f3483b49cb1e5840914f8dfd41604e0a6dad60001b6127e9565b6122de7f860e7c1d7e4e1fdcc9ad78220f687aa3014a001a6cf267754a31f08ec97b72b860001b6127e9565b6122fa8b30848d886000016129df90949392919063ffffffff16565b506123277ff39112a6595e798dcee4eb7d4d7459c2470970536ba8f903b43c08dfa703db3f60001b6127e9565b6123537ffe775fe37eaebb4054c9727ef0b17f3457ae7186dea17d13a8e884aa28279a8c60001b6127e9565b61236d8f838c87600001612a47909392919063ffffffff16565b505050505050505050505050505050565b60006123ac7faf1ad97f8c914b1c5deba1b1376412646162740bd8886cd86849e8b4e491f63160001b6127e9565b6123d87f1d5faf8dc021a38b20188471d01980301598715996675faba89ab27beaec831a60001b6127e9565b6124047f3c2f2e77f1bf89a4da2c31c6509f87e1228eb35d593230dd3800f9f9023500cc60001b6127e9565b600061240e6124f5565b600b0b13905090565b60006124457f92f07c330c4bea535a175f6d7edcd79f1061766100f5c93b2c1122350289101460001b6127e9565b6124717fabcaf7167b0959f4b40a7f7524422d292f906cea68d83d448c2753f3a342834a60001b6127e9565b61249d7fdcefbedc4048be08781429da32373422ac2a0c0fe788fe899decaefbb183e2ea60001b6127e9565b60007f7afbdc140ed2feae39152d66ce3c9b7394a1bbd963c668f15d7196d48d2532c990506124ee7fb4759446eb72cb3fde3f5c1f4c12ac34a9b4f237f15076f76cf491f5b30434b160001b6127e9565b8091505090565b60006125237f8082b09841dcf8a739f5a8f0ca0dbf561c0209c8944f8de94941d45ed256e13960001b6127e9565b61254f7f0af1d937e2b5a6843d095e3cfdddcdd568fb658f83d475b04b1e4e060b81877460001b6127e9565b61257b7f1d52999b88939151fc84998673943d723b6ca88e56660a8c69400e9e4d8e9de160001b6127e9565b6000612585612417565b90506125b37f7aedcfe7369b2cf8b4664abafebe7626e4bb019aa465cfb3e495b6047cb4ff8560001b6127e9565b6125df7f506ba5624d84364dd6ae1e10703edf9228f6ff88a6eade7cc0666e28227adb4d60001b6127e9565b60006125e9612901565b90506126177f60da66c4c800ac03d0261d62f088e1f129d2afc96f569327491353357ac0199860001b6127e9565b6126437fbd41c3b5f9f48e17eedde437b0391a7397b0d6ff152efa375c8943707bcd2cca60001b6127e9565b60008160000160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6a1e8888460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d41c3a656040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061271b919061344e565b30612724612aa7565b6040518463ffffffff1660e01b8152600401612742939291906135bd565b608060405180830381865afa15801561275f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278391906135ea565b50509150506127b47fa637fbcd68df0de264c38f38ff4cc10a852085f716233979fb56b35bec7bb5ea60001b6127e9565b6127e07f656c9083338e5f43d2d9fa3d5835459eb63019cdecd4e4d6c655839197d66a8860001b6127e9565b80935050505090565b50565b600061281a7fee4275330143c87b2f69cb7189cc05aaac1364f7db13fd21bf3e2ab91657a67760001b6127e9565b6128467fbaed8f6390ff5138da8399549d468be8e12fb5f24080f3b73b19a643a44cd97060001b6127e9565b6128727f2cb7ee538d30734c3172d163a216862a45e20b243266f7f6b895005168a8a03f60001b6127e9565b6000828487612881919061362d565b61288b9190613660565b90506128b97f311edfab847562ce720e65016fadd407fe93f8d4d7ea1f6bb1761f22182b590960001b6127e9565b6128e57f2bd426d5fa78baee52c94118e026102690091b4896268ed22de2878411e5e68160001b6127e9565b846bffffffffffffffffffffffff168114915050949350505050565b600061292f7f9e0978ee7861dbf94eb7d84767e36ebf9494d7d82501d7bc685bfb520b89024260001b6127e9565b61295b7f975b3935def4698eb1afc745c1e879e94ce14a84d69ced54654dbe2f44ea6ebd60001b6127e9565b6129877fe649f278db1dbe9ddb5441e7b23df20623cd6eea58c5e624ff67e6d05532f68360001b6127e9565b60007feaf1cf088be31249661a61fc7743edf628a39210375613d4be0a9cda3ec06da690506129d87fd6423ebc471d1790b63ef0a7217d20a1ab317b36712726182a0f18905eb8888560001b6127e9565b8091505090565b6060612a3c8686868686600067ffffffffffffffff811115612a0457612a036132b7565b5b6040519080825280601f01601f191660200182016040528015612a365781602001600182028036833780820191505090505b50612bbc565b905095945050505050565b612aa184848484600067ffffffffffffffff811115612a6957612a686132b7565b5b6040519080825280601f01601f191660200182016040528015612a9b5781602001600182028036833780820191505090505b50612d7e565b50505050565b6000612ad57fa1c9801bc424edae1828709ab9e40c6e0c882f2aa8712a06dac98c2253846ea260001b6127e9565b612b017f8f0b881387582b4a68cb909143d403cc8b0f9eec8ae112b400e20f684e63ac7f60001b6127e9565b612b2d7f6b816038bac4f3c1b8f69a4abd796689d768b8fca24aaa816c2ae53e1115c87560001b6127e9565b6000612b37612417565b9050612b657fad55ed57c0ec64401fecec77679a360cfa083620932f2c13a70325e1630a177760001b6127e9565b612b917f943ed1f7955919a1f864db3d2f15d8580b889fcd550ac7ac84b017b358d0aacf60001b6127e9565b8060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b60608660000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166339255d5b8860010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168960010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166394229ecb888b8b8a600067ffffffffffffffff811115612c8257612c816132b7565b5b6040519080825280601f01601f191660200182016040528015612cb45781602001600182028036833780820191505090505b50604051602401612cc9959493929190613688565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050856040518463ffffffff1660e01b8152600401612d2a939291906136d0565b6000604051808303816000875af1158015612d49573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190612d72919061370e565b90509695505050505050565b8460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166339255d5b8660010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168760010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166362fc305e878988600067ffffffffffffffff811115612e4157612e406132b7565b5b6040519080825280601f01601f191660200182016040528015612e735781602001600182028036833780820191505090505b50604051602401612e8794939291906137c1565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050846040518463ffffffff1660e01b8152600401612ee8939291906136d0565b6000604051808303816000875af1158015612f07573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190612f30919061370e565b505050505050565b6040518060e0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000600b0b8152602001600081526020016000815260200160008152602001606081525090565b600060208201905060018060a01b038316825292915050565b60018060a01b0381168114612fbb57600080fd5b50565b80600b0b8114612fcd57600080fd5b50565b600080600080600080600060e0888a031215612feb57600080fd5b8735612ff681612fa7565b80975050602088013561300881612fa7565b80965050604088013561301a81612fa7565b8095505060608801359350608088013561303381612fa7565b8093505060a088013561304581612fbe565b8092505060c0880135905092959891949750929550565b6000602082019050821515825292915050565b60008060008060008060008060006101008a8c03121561308e57600080fd5b893561309981612fa7565b8099505060208a01356130ab81612fa7565b8098505060408a01356130bd81612fa7565b8097505060608a0135955060808a01356130d681612fa7565b8095505060a08a01356130e881612fbe565b8094505060c08a0135925060e08a013567ffffffffffffffff8082111561310e57600080fd5b818c0191508c601f83011261312257600080fd5b81358181111561313157600080fd5b8d602082850101111561314357600080fd5b6020830194508093505050509295985092959850929598565b60005b8381101561317a57808201518184015260208101905061315f565b50600083830152505050565b6000815180845261319e81602086016020860161315c565b6020601f19601f83011685010191505092915050565b6020815260006131c76020830184613186565b905092915050565b600060208201905060018060a01b038316825292915050565b600060208201905082600b0b825292915050565b600060208201905082825292915050565b602081528151602082015260018060a01b0360208301511660408201526040820151600b0b606082015260608201516080820152608082015160a082015260a082015160c0820152600060c083015160e080840152613270610100840182613186565b91505092915050565b60208152601d60208201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060408201526000606082019050919050565b634e487b7160e01b600052604160045260246000fd5b60008160011c905060018216806132e557607f821691505b60208210810361330557634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561331d57600080fd5b8151905092915050565b60208152602f60208201527f4346414261736550434f46616365743a204d696e696d756d20666f722073616c60408201527f65207072696365206e6f74206d6574000000000000000000000000000000000060608201526000608082019050919050565b60208152602760208201527f4c69624346414261736550434f3a20496e636f727265637420666f722073616c60408201527f652070726963650000000000000000000000000000000000000000000000000060608201526000608082019050919050565b60006020828403121561340157600080fd5b815161340c81612fa7565b8091505092915050565b600060208201905082825292915050565b60006020828403121561343957600080fd5b815161344481612fa7565b8091505092915050565b60006020828403121561346057600080fd5b815161346b81612fa7565b8091505092915050565b806000525060006020600020905090565b601f8211156134d457600081815260208120601f850160051c810160208610156134ae578190505b601f850160051c820191505b818110156134d0578281556001810190506134ba565b5050505b505050565b60008260011b6000198460031b1c19831617905092915050565b815167ffffffffffffffff81111561350e5761350d6132b7565b5b6135228161351c84546132cd565b84613486565b60006020809150601f8311600181146135565760008415613544578387015190505b61354e85826134d9565b8655506135b5565b601f19841661356486613475565b60005b8281101561358a5785890151825560018201915084860195508481019050613567565b50858210156135a9578488015160001960f88860031b161c1981168255505b505060018460011b0185555b505050505050565b600060608201905060018060a01b0380861683528085166020840152808416604084015250949350505050565b6000806000806080858703121561360057600080fd5b84519350602085015161361281612fbe565b80935050604085015191506060850151905092959194509250565b600081600019048311821515161561365557634e487b7160e01b600052601160045260246000fd5b828202905092915050565b60008261367d57634e487b7160e01b600052601260045260246000fd5b828204905092915050565b600060018060a01b038088168352808716602084015280861660408401525083600b0b606083015260a060808301526136c460a0830184613186565b90509695505050505050565b60018060a01b03841681526060602082015260006136f16060830185613186565b82810360408401526137038185613186565b915050949350505050565b60006020828403121561372057600080fd5b815167ffffffffffffffff8082111561373857600080fd5b818401915084601f83011261374c57600080fd5b81518181111561375f5761375e6132b7565b5b601f1960405181603f83601f8601160116810191508082108483111715613789576137886132b7565b5b816040528281528760208487010111156137a257600080fd5b6137b383602083016020880161315c565b809550505050505092915050565b600060018060a01b03808716835280861660208401525083600b0b6040830152608060608301526137f56080830184613186565b90509594505050505056fea26469706673582212206326a74ca8478584695c2ac6f04ef37ae8f70de380474190b6aa33428336284164736f6c63430008100033"; type CFABasePCOFacetConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/CFAPenaltyBidFacet__factory.ts b/typechain-types/factories/CFAPenaltyBidFacet__factory.ts index b35597b..f6dd0ea 100644 --- a/typechain-types/factories/CFAPenaltyBidFacet__factory.ts +++ b/typechain-types/factories/CFAPenaltyBidFacet__factory.ts @@ -176,6 +176,19 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [ + { + internalType: "bytes", + name: "contentHash", + type: "bytes", + }, + ], + name: "editContentHash", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, { inputs: [], name: "hasPendingBid", @@ -321,7 +334,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50613e88806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a85760003560e01c806392f1f73e1161007157806392f1f73e146101245780639e41ec6714610139578063b544f6dd1461014f578063ce2ccb1514610162578063e52a78741461016a578063f11663e81461017257600080fd5b8062fa6802146100ad578063084024a2146100c2578063499ca2f5146100f657806390c33bba1461010957806390ee40bf1461011c575b600080fd5b6100c06100bb366004613500565b610185565b005b600080516020613d73833981519152546000600160a01b909104600b0b135b60405190151581526020015b60405180910390f35b6100c0610104366004613500565b61021a565b6100c061011736600461352c565b610459565b6100e1610567565b61012c6106ef565b6040516100ed9190613605565b6101416108b8565b6040519081526020016100ed565b6100c061015d36600461352c565b6108c7565b6100c0610973565b6100c0610bae565b6100c0610180366004613500565b610de9565b61018d610eb9565b6101b25760405162461bcd60e51b81526004016101a990613668565b60405180910390fd5b600080516020613db383398151915254600080516020613df3833981519152906001600160a01b031633036101f95760405162461bcd60e51b81526004016101a9906136cf565b6040805160008152602081019091526102159084908490610ecd565b505050565b600080516020613db383398151915254600080516020613df3833981519152906001600160a01b031633146102615760405162461bcd60e51b81526004016101a990613742565b306001600160a01b031663084024a26040518163ffffffff1660e01b8152600401602060405180830381865afa15801561029f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c3919061379f565b6102df5760405162461bcd60e51b81526004016101a9906137c8565b600080516020613e3383398151915280546040805163400e2d8f60e11b81529051600080516020613e1383398151915293926000926001600160a01b039091169163801c5b1e916004808201926020929091908290030181865afa15801561034b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036f9190613816565b83549091506000906103819042613845565b905081811080156103975750610395610567565b155b6103b35760405162461bcd60e51b81526004016101a990613858565b600080516020613d7383398151915254600080516020613db383398151915254600080516020613d93833981519152546040805191825251600080516020613e1383398151915293600080516020613df3833981519152936001600160a01b03918216939116917f70ba5911930f2b49bef0e3806b54c696faa41fcf48becb8291d011ca4c1d8db49181900360200190a361044e8989611517565b505050505050505050565b600080516020613db383398151915254600080516020613df3833981519152906001600160a01b031633146104a05760405162461bcd60e51b81526004016101a990613742565b306001600160a01b031663084024a26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610502919061379f565b1561051f5760405162461bcd60e51b81526004016101a9906138a2565b610560858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a6c92505050565b5050505050565b7feaf1cf088be31249661a61fc7743edf628a39210375613d4be0a9cda3ec06da754600080516020613e3383398151915280546040805163d41c3a6560e01b81529051600094600080516020613e138339815191529493600080516020613df383398151915293600080516020613dd383398151915293889384936001600160a01b039182169363e6a1e88893929091169163d41c3a65916004808201926020929091908290030181865afa158015610624573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064891906138e8565b60018701546040516001600160e01b031960e085901b16815261067a92916001600160a01b0316903090600401613911565b608060405180830381865afa158015610697573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106bb9190613934565b5050875491935091508211806106d4575080600b0b6000145b806106e457506106e2610eb9565b155b965050505050505090565b61073b6040518060e001604052806000815260200160006001600160a01b031681526020016000600b0b8152602001600081526020016000815260200160008152602001606081525090565b6040805160e081018252600080516020613e1383398151915280548252600080516020613d73833981519152546001600160a01b0381166020840152600160a01b9004600b0b928201929092527fab844abc5ac35bdf8e8581a4c7c97fb9e92911442226ad6bdb029a2dbfe670df5460608201527fab844abc5ac35bdf8e8581a4c7c97fb9e92911442226ad6bdb029a2dbfe670e05460808201527fab844abc5ac35bdf8e8581a4c7c97fb9e92911442226ad6bdb029a2dbfe670e15460a08201527fab844abc5ac35bdf8e8581a4c7c97fb9e92911442226ad6bdb029a2dbfe670e28054839160c084019161083090613972565b80601f016020809104026020016040519081016040528092919081815260200182805461085c90613972565b80156108a95780601f1061087e576101008083540402835291602001916108a9565b820191906000526020600020905b81548152906001019060200180831161088c57829003601f168201915b50505050508152505091505090565b60006108c2612157565b905090565b6108cf610eb9565b6108eb5760405162461bcd60e51b81526004016101a990613668565b600080516020613db383398151915254600080516020613df3833981519152906001600160a01b031633036109325760405162461bcd60e51b81526004016101a9906136cf565b610560858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610ecd92505050565b306001600160a01b031663084024a26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d5919061379f565b6109f15760405162461bcd60e51b81526004016101a9906137c8565b600080516020613e3383398151915280546040805163400e2d8f60e11b81529051600080516020613e1383398151915293926000926001600160a01b039091169163801c5b1e916004808201926020929091908290030181865afa158015610a5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a819190613816565b8354909150600090610a939042613845565b90508181101580610aa75750610aa7610567565b610b0a5760405162461bcd60e51b815260206004820152602e60248201527f43464150656e616c747942696446616365743a2042696420706572696f64206860448201526d185cc81b9bdd08195b185c1cd95960921b60648201526084016101a9565b600080516020613d7383398151915254600080516020613db383398151915254600080516020613d93833981519152546040805191825251600080516020613e1383398151915293600080516020613df3833981519152936001600160a01b039182169391169133917f5057e7232685b7cad2bf4919b2c3e735cf044c7b689b15fd24035359a9581458919081900360200190a4610ba661228f565b505050505050565b600080516020613db383398151915254600080516020613df3833981519152906001600160a01b03163314610bf55760405162461bcd60e51b81526004016101a990613742565b306001600160a01b031663084024a26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c57919061379f565b610c735760405162461bcd60e51b81526004016101a9906137c8565b600080516020613e3383398151915280546040805163400e2d8f60e11b81529051600080516020613e1383398151915293926000926001600160a01b039091169163801c5b1e916004808201926020929091908290030181865afa158015610cdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d039190613816565b8354909150600090610d159042613845565b90508181108015610d2b5750610d29610567565b155b610d475760405162461bcd60e51b81526004016101a990613858565b600080516020613d7383398151915254600080516020613db383398151915254600080516020613d93833981519152546040805191825251600080516020613e1383398151915293600080516020613df3833981519152936001600160a01b03918216939116917fcea76e88a336bcad5acb8cf244393e65f4bbe4b4bcaa2e989f754f5f2bd29eaf9181900360200190a3610de061228f565b50505050505050565b600080516020613db383398151915254600080516020613df3833981519152906001600160a01b03163314610e305760405162461bcd60e51b81526004016101a990613742565b306001600160a01b031663084024a26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e92919061379f565b15610eaf5760405162461bcd60e51b81526004016101a9906138a2565b6102158383612b2f565b600080610ec4612bf6565b600b0b13905090565b600080516020613d7383398151915254600080516020613e13833981519152906000600160a01b909104600b0b1315610f5d5760405162461bcd60e51b815260206004820152602c60248201527f4c696243464150656e616c74794269643a2050656e64696e672062696420616c60448201526b72656164792065786973747360a01b60648201526084016101a9565b600080516020613e33833981519152805460408051630b51881360e11b81529051600080516020613dd3833981519152926000926001600160a01b03909116916316a31026916004808201926020929091908290030181865afa158015610fc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fec9190613816565b905060008360000160009054906101000a90046001600160a01b03166001600160a01b031663014df4146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611045573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110699190613816565b9050600080516020613df3833981519152611086888a8585612d27565b6110e55760405162461bcd60e51b815260206004820152602a60248201527f4c696243464150656e616c74794269643a20496e636f727265637420666f722060448201526973616c6520707269636560b01b60648201526084016101a9565b6001810154600160a01b9004600b90810b908a900b121561116e5760405162461bcd60e51b815260206004820152603a60248201527f4c696243464150656e616c74794269643a204e657720636f6e7472696275746960448201527f6f6e2072617465206973206e6f74206869676820656e6f75676800000000000060648201526084016101a9565b600184015485546040805163d41c3a6560e01b8152905160009384936001600160a01b039182169362422bbe93919092169163d41c3a659160048083019260209291908290030181865afa1580156111ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ee91906138e8565b33306040518463ffffffff1660e01b815260040161120e93929190613911565b606060405180830381865afa15801561122b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124f91906139ac565b925092505061125f826000612d56565b6112c85760405162461bcd60e51b815260206004820152603460248201527f4c696243464150656e616c74794269643a204352454154455f464c4f572070656044820152731c9b5a5cdcda5bdb881b9bdd0819dc985b9d195960621b60648201526084016101a9565b8a600b0b81600b0b12156113545760405162461bcd60e51b815260206004820152604760248201527f4c696243464150656e616c74794269643a204352454154455f464c4f5720706560448201527f726d697373696f6e20646f6573206e6f74206861766520656e6f75676820616c6064820152666c6f77616e636560c81b608482015260a4016101a9565b4288556001600160601b038b16600160a01b02331760018901556002880185905560038801849055600488018a9055600588016113918a82613a3b565b5060408051600b8d900b8152602081018c905233917f51dc3f0ae56a56b314941620a5450aa63fb32261ffdd59993bdd4a5645ed6d72910160405180910390a286546040805163d41c3a6560e01b815290516000926001600160a01b03169163d41c3a659160048083019260209291908290030181865afa15801561141a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143e91906138e8565b905060008760000160010160009054906101000a90046001600160a01b03166001600160a01b0316638d997f6e838f6040518363ffffffff1660e01b81526004016114a19291906001600160a01b03929092168252600b0b602082015260400190565b602060405180830381865afa1580156114be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e29190613816565b905060006114f08d83613afb565b90506115076001600160a01b038416333084612db5565b5050505050505050505050505050565b6040805160e081018252600080516020613e1383398151915280548252600080516020613d73833981519152546001600160a01b0381166020840152600160a01b9004600b0b928201929092527fab844abc5ac35bdf8e8581a4c7c97fb9e92911442226ad6bdb029a2dbfe670df5460608201527fab844abc5ac35bdf8e8581a4c7c97fb9e92911442226ad6bdb029a2dbfe670e05460808201527fab844abc5ac35bdf8e8581a4c7c97fb9e92911442226ad6bdb029a2dbfe670e15460a08201527fab844abc5ac35bdf8e8581a4c7c97fb9e92911442226ad6bdb029a2dbfe670e28054600080516020613e3383398151915293600080516020613dd383398151915293600093909260c08401919061163090613972565b80601f016020809104026020016040519081016040528092919081815260200182805461165c90613972565b80156116a95780601f1061167e576101008083540402835291602001916116a9565b820191906000526020600020905b81548152906001019060200180831161168c57829003601f168201915b505050505081525050905060008360000160009054906101000a90046001600160a01b03166001600160a01b031663d41c3a656040518163ffffffff1660e01b8152600401602060405180830381865afa15801561170b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172f91906138e8565b9050600061173b612157565b90508260400151600b0b87600b0b12156117bd5760405162461bcd60e51b815260206004820152603e60248201527f4c696243464150656e616c74794269643a204e657720636f6e7472696275746960448201527f6f6e2072617465206d757374206265203e3d2070656e64696e6720626964000060648201526084016101a9565b6117c5612e26565b604051632ec8eec760e01b815230600482015260009081906001600160a01b03851690632ec8eec790602401608060405180830381865afa15801561180e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118329190613b0e565b50509150915060008082846118479190613b44565b12611859576118568284613b44565b90505b600187015460408088015190516346ccbfb760e11b81526000926001600160a01b031691638d997f6e916118a8918a916004016001600160a01b03929092168252600b0b602082015260400190565b602060405180830381865afa1580156118c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e99190613816565b905060006118f5612e55565b905060008512156119895761190c8930838a612e83565b604051632ec8eec760e01b81523060048201526001600160a01b03881690632ec8eec790602401608060405180830381865afa158015611950573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119749190613b0e565b50919650945061198690508486613b44565b92505b6119938c8c612b2f565b6000828960a001516119a59190613afb565b9050600080868611156119eb576119bc8787613845565b9550828611156119da576119d08387613845565b95508591506119ee565b6119e48684613845565b90506119ee565b50815b8015611a0957611a096001600160a01b038b16333084612db5565b60208b0151611a23906001600160a01b038c169085612ea3565b8115611a3d57611a3d6001600160a01b038b163384612ea3565b611a5b33611a49612e55565b6001600160a01b038d1691908c612db5565b505050505050505050505050505050565b600080516020613e33833981519152805460408051631ab1246d60e11b81529051600080516020613dd383398151915292600080516020613df3833981519152926001600160a01b039091169163356248da916004808201926020929091908290030181865afa158015611ae4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b089190613816565b851015611b6d5760405162461bcd60e51b815260206004820152602d60248201527f4c69624346414261736550434f3a204d696e696d756d20666f722073616c652060448201526c1c1c9a58d9481b9bdd081b595d609a1b60648201526084016101a9565b825460408051630b51881360e11b815290516000926001600160a01b0316916316a310269160048083019260209291908290030181865afa158015611bb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bda9190613816565b905060008460000160009054906101000a90046001600160a01b03166001600160a01b031663014df4146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c579190613816565b9050611c6587898484612d27565b611cc15760405162461bcd60e51b815260206004820152602760248201527f4c69624346414261736550434f3a20496e636f727265637420666f722073616c6044820152666520707269636560c81b60648201526084016101a9565b84546040805163d41c3a6560e01b815290516000926001600160a01b03169163d41c3a659160048083019260209291908290030181865afa158015611d0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2e91906138e8565b4285556001850180546001600160a01b0316600160a01b6001600160601b038d1602179055600285018490556003850183905560048501899055905060058401611d788882613a3b565b5060018401546040518981526001600160a01b03909116907fae3c4f18410e9cfcd20fc8664a5a0082a92f07a0a5febdc22bec0c53939373369060200160405180910390a26001840154604051600b8b900b81526001600160a01b03909116907f6602f4d39e226f3807ddac3e7aab03883832e2ea2d07ccdeaf513c16679fdcd09060200160405180910390a260018401546040516001600160a01b03909116907f488d437d8adb2ae8d8c71369f71f88a6c69e89267671cfb8f8b5f3149526a92590611e46908a90613b6c565b60405180910390a2604051632ec8eec760e01b81523060048201526000906001600160a01b03831690632ec8eec790602401608060405180830381865afa158015611e95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb99190613b0e565b505060018801546040516346ccbfb760e11b81526001600160a01b038681166004830152600b8f900b602483015292945060009350911690638d997f6e90604401602060405180830381865afa158015611f17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3b9190613816565b905081811115611f6657611f663330611f548585613845565b6001600160a01b038716929190612db5565b60018088015490870154604051631cd43d1160e31b81526000926001600160a01b039081169263e6a1e88892611fa492899216903090600401613911565b608060405180830381865afa158015611fc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe59190613934565b5050915050600081600b0b131561202f576120298760010160009054906101000a90046001600160a01b031630868f8c600001612ed390949392919063ffffffff16565b50612064565b6120628760010160009054906101000a90046001600160a01b031630868f8c600001612ef890949392919063ffffffff16565b505b600061206e612e55565b60018a0154604051631cd43d1160e31b81529192506001600160a01b03169063e6a1e888906120a590889030908690600401613911565b608060405180830381865afa1580156120c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e69190613934565b5090935050506000600b83900b13156121185761211381868f8c600001612f1d909392919063ffffffff16565b612121565b6121218d612f3d565b8284111561214857612148336121378587613845565b6001600160a01b0388169190612ea3565b50505050505050505050505050565b600080516020613e3383398151915280546040805163304fb4bb60e21b8152905160009392600080516020613e138339815191529285926001600160a01b039092169163c13ed2ec916004808201926020929091908290030181865afa1580156121c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e99190613816565b905060008360000160009054906101000a90046001600160a01b03166001600160a01b0316637d51ce906040518163ffffffff1660e01b8152600401602060405180830381865afa158015612242573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122669190613816565b905060008183856004015461227b9190613b7f565b6122859190613b9e565b9695505050505050565b6040805160e081018252600080516020613df383398151915280548252600080516020613db3833981519152546001600160a01b0381166020840152600160a01b9004600b0b928201929092527f3c72d60a0f1018560e1ecd381dcc70c04920ba28255c0b6f8b496f8f6f727f435460608201527f3c72d60a0f1018560e1ecd381dcc70c04920ba28255c0b6f8b496f8f6f727f44546080820152600080516020613d938339815191525460a08201527f3c72d60a0f1018560e1ecd381dcc70c04920ba28255c0b6f8b496f8f6f727f468054600080516020613e3383398151915293600080516020613dd3833981519152939092600092849160c084019161239790613972565b80601f01602080910402602001604051908101604052809291908181526020018280546123c390613972565b80156124105780601f106123e557610100808354040283529160200191612410565b820191906000526020600020905b8154815290600101906020018083116123f357829003601f168201915b50505050508152505090506000612432600080516020613e1383398151915290565b6040805160e0810182528254815260018301546001600160a01b0381166020830152600160a01b9004600b0b918101919091526002820154606082015260038201546080820152600482015460a082015260058201805491929160c08401919061249b90613972565b80601f01602080910402602001604051908101604052809291908181526020018280546124c790613972565b80156125145780601f106124e957610100808354040283529160200191612514565b820191906000526020600020905b8154815290600101906020018083116124f757829003601f168201915b505050505081525050905060008560000160009054906101000a90046001600160a01b03166001600160a01b031663d41c3a656040518163ffffffff1660e01b8152600401602060405180830381865afa158015612576573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061259a91906138e8565b82518555602083015160408401516001600160601b0316600160a01b026001600160a01b03909116176001860155606083015160028601556080830151600386015560a0830151600486015560c083015190915060058501906125fd9082613a3b565b50612606612e26565b604051632ec8eec760e01b815230600482015260009081906001600160a01b03841690632ec8eec790602401608060405180830381865afa15801561264f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126739190613b0e565b50509150915060008082846126889190613b44565b1261269a576126978284613b44565b90505b600188015460408087015190516346ccbfb760e11b81526000926001600160a01b031691638d997f6e916126e99189916004016001600160a01b03929092168252600b0b602082015260400190565b602060405180830381865afa158015612706573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061272a9190613816565b90506000612736612e55565b9050818310156127c95761274c8a308389612e83565b604051632ec8eec760e01b81523060048201526001600160a01b03871690632ec8eec790602401608060405180830381865afa158015612790573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127b49190613b0e565b5091965094506127c690508486613b44565b92505b8183106128b957895460018b01546020898101516040808c01518151600081529384019091526001600160a01b03948516946339255d5b94169283926394229ecb9261281d928e9291309160448101613bc0565b60408051601f19818403018152918152602080830180516001600160e01b031660e095861b179052815160008152908101918290529286901b6001600160e01b03191690526128729392509060248101613bfe565b6000604051808303816000875af19250505080156128b257506040513d6000823e601f3d908101601f191682016040526128af9190810190613c34565b60015b156128b957505b60018a0154604051631cd43d1160e31b81526000916001600160a01b03169063e6a1e888906128f0908a9030908790600401613911565b608060405180830381865afa15801561290d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129319190613934565b5050915050600081600b0b131561295b576040880151612956908c9084908a90612f1d565b61296f565b82841061296f5761296f8860400151612f3d565b600080848611156129c3576129848587613845565b955060008b60a001518b60a0015161299c9190613845565b9050808711156129bd579150816129b38188613845565b96508691506129c1565b8692505b505b81156129e35760208a01516129e3906001600160a01b038b169084612ea3565b8015612a035760208b0151612a03906001600160a01b038b169083612ea3565b505060018b015460208a0151604051631cd43d1160e31b81526001600160a01b039092169163e6a1e88891612a3f918b91903090600401613911565b608060405180830381865afa158015612a5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a809190613934565b5090925050506000600b82900b1315612aa5576020890151612aa5908c90308a612e83565b60018c015460208a810151908a015160028f0154604051632142170760e11b81526001600160a01b039384166004820152918316602483015260448201529116906342842e0e90606401600060405180830381600087803b158015612b0957600080fd5b505af1158015612b1d573d6000803e3d6000fd5b50505050505050505050505050505050565b7f3c72d60a0f1018560e1ecd381dcc70c04920ba28255c0b6f8b496f8f6f727f468054600080516020613df3833981519152916102159185918591612b7390613972565b80601f0160208091040260200160405190810160405280929190818152602001828054612b9f90613972565b8015612bec5780601f10612bc157610100808354040283529160200191612bec565b820191906000526020600020905b815481529060010190602001808311612bcf57829003601f168201915b5050505050611a6c565b7feaf1cf088be31249661a61fc7743edf628a39210375613d4be0a9cda3ec06da754600080516020613e3383398151915280546040805163d41c3a6560e01b81529051600094600080516020613dd38339815191529386936001600160a01b039283169363e6a1e888939092169163d41c3a65916004808201926020929091908290030181865afa158015612c8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cb391906138e8565b30612cbc612e55565b6040518463ffffffff1660e01b8152600401612cda93929190613911565b608060405180830381865afa158015612cf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d1b9190613934565b50909695505050505050565b60008082612d358588613b7f565b612d3f9190613b9e565b6001600160601b038616149150505b949350505050565b600080826002811115612d6b57612d6b613cd6565b03612d7c5750600182811614612daf565b6001826002811115612d9057612d90613cd6565b03612da35750600182811c811614612daf565b506001600283901c8116145b92915050565b6040516001600160a01b0380851660248301528316604482015260648101829052612e209085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612feb565b50505050565b600080516020613d7383398151915280546001600160a01b0316905542600080516020613e1383398151915255565b7f7afbdc140ed2feae39152d66ce3c9b7394a1bbd963c668f15d7196d48d2532cc546001600160a01b031690565b604080516000815260208101909152612e209085908590859085906130bd565b6040516001600160a01b03831660248201526044810182905261021590849063a9059cbb60e01b90606401612de9565b6040805160008152602081019091526060906122859087908790879087908790613194565b604080516000815260208101909152606090612285908790879087908790879061329a565b604080516000815260208101909152612e209085908590859085906132c8565b600080516020613e3383398151915280546040805163d41c3a6560e01b81529051600080516020613dd383398151915293926000926001600160a01b039091169163d41c3a65916004808201926020929091908290030181865afa158015612fa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fcd91906138e8565b6003830154909150612e209084906001600160a01b0316838761332c565b6000613040826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661334c9092919063ffffffff16565b805190915015610215578080602001905181019061305e919061379f565b6102155760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016101a9565b845460018601546040805160008152602081019091526001600160a01b03928316926339255d5b921690819063b4b333c6906131029088908b908b9060448101613cec565b60408051808303601f1901815291815260208201805160e094851b6001600160e01b03909116179052519185901b6001600160e01b031916825261314d939250908690600401613bfe565b6000604051808303816000875af115801561316c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ba69190810190613c34565b855460018701546060916001600160a01b03908116916339255d5b91168063354b9590888b8b8a60005b6040519080825280601f01601f1916602001820160405280156131e8576020820181803683370190505b506040516024016131fd959493929190613bc0565b60408051808303601f1901815291815260208201805160e094851b6001600160e01b03909116179052519185901b6001600160e01b0319168252613248939250908790600401613bfe565b6000604051808303816000875af1158015613267573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261328f9190810190613c34565b979650505050505050565b855460018701546060916001600160a01b03908116916339255d5b9116806394229ecb888b8b8a60006131be565b845460018601546001600160a01b03918216916339255d5b9116806350209a6287898860005b6040519080825280601f01601f191660200182016040528015613318576020820181803683370190505b506040516024016131029493929190613d20565b604080516000815260208101909152612e2090859085908590859061335b565b6060612d4e8484600085613385565b845460018601546001600160a01b03918216916339255d5b9116806362fc305e87898860006132ee565b6060824710156133e65760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016101a9565b600080866001600160a01b031685876040516134029190613d56565b60006040518083038185875af1925050503d806000811461343f576040519150601f19603f3d011682016040523d82523d6000602084013e613444565b606091505b509150915061328f87838387606083156134bf5782516000036134b8576001600160a01b0385163b6134b85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a9565b5081612d4e565b612d4e83838151156134d45781518083602001fd5b8060405162461bcd60e51b81526004016101a99190613b6c565b80600b0b81146134fd57600080fd5b50565b6000806040838503121561351357600080fd5b823561351e816134ee565b946020939093013593505050565b6000806000806060858703121561354257600080fd5b843561354d816134ee565b935060208501359250604085013567ffffffffffffffff8082111561357157600080fd5b818701915087601f83011261358557600080fd5b81358181111561359457600080fd5b8860208285010111156135a657600080fd5b95989497505060200194505050565b60005b838110156135d05781810151838201526020016135b8565b50506000910152565b600081518084526135f18160208601602086016135b5565b601f01601f19169290920160200192915050565b602081528151602082015260018060a01b0360208301511660408201526040820151600b0b606082015260608201516080820152608082015160a082015260a082015160c0820152600060c083015160e080840152612d4e6101008401826135d9565b60208082526041908201527f4346414261736550434f46616365743a2043616e206f6e6c7920706572666f7260408201527f6d20616374696f6e207768656e207061796572206269642069732061637469766060820152606560f81b608082015260a00190565b6020808252603c908201527f4346414261736550434f46616365743a205061796572206973206e6f7420616c60408201527f6c6f77656420746f20706572666f726d207468697320616374696f6e00000000606082015260800190565b634e487b7160e01b600052604160045260246000fd5b6020808252603d908201527f4346414261736550434f46616365743a204f6e6c79207061796572206973206160408201527f6c6c6f77656420746f20706572666f726d207468697320616374696f6e000000606082015260800190565b6000602082840312156137b157600080fd5b815180151581146137c157600080fd5b9392505050565b6020808252602e908201527f43464150656e616c747942696446616365743a2050656e64696e67206269642060408201526d191bd95cc81b9bdd08195e1a5cdd60921b606082015260800190565b60006020828403121561382857600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115612daf57612daf61382f565b6020808252602a908201527f43464150656e616c747942696446616365743a2042696420706572696f642068604082015269185cc8195b185c1cd95960b21b606082015260800190565b60208082526026908201527f43464150656e616c747942696446616365743a2050656e64696e67206269642060408201526565786973747360d01b606082015260800190565b6000602082840312156138fa57600080fd5b81516001600160a01b03811681146137c157600080fd5b6001600160a01b0393841681529183166020830152909116604082015260600190565b6000806000806080858703121561394a57600080fd5b84519350602085015161395c816134ee565b6040860151606090960151949790965092505050565b600181811c9082168061398657607f821691505b6020821081036139a657634e487b7160e01b600052602260045260246000fd5b50919050565b6000806000606084860312156139c157600080fd5b83519250602084015160ff811681146139d957600080fd5b60408501519092506139ea816134ee565b809150509250925092565b601f82111561021557600081815260208120601f850160051c81016020861015613a1c5750805b601f850160051c820191505b81811015610ba657828155600101613a28565b815167ffffffffffffffff811115613a5557613a5561372c565b613a6981613a638454613972565b846139f5565b602080601f831160018114613a9e5760008415613a865750858301515b600019600386901b1c1916600185901b178555610ba6565b600085815260208120601f198616915b82811015613acd57888601518255948401946001909101908401613aae565b5085821015613aeb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820180821115612daf57612daf61382f565b60008060008060808587031215613b2457600080fd5b505082516020840151604085015160609095015191969095509092509050565b8082018281126000831280158216821582161715613b6457613b6461382f565b505092915050565b6020815260006137c160208301846135d9565b6000816000190483118215151615613b9957613b9961382f565b500290565b600082613bbb57634e487b7160e01b600052601260045260246000fd5b500490565b6001600160a01b038681168252858116602083015284166040820152600b83900b606082015260a06080820181905260009061328f908301846135d9565b6001600160a01b0384168152606060208201819052600090613c22908301856135d9565b828103604084015261228581856135d9565b600060208284031215613c4657600080fd5b815167ffffffffffffffff80821115613c5e57600080fd5b818401915084601f830112613c7257600080fd5b815181811115613c8457613c8461372c565b604051601f8201601f19908116603f01168101908382118183101715613cac57613cac61372c565b81604052828152876020848701011115613cc557600080fd5b61328f8360208301602088016135b5565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b038581168252848116602083015283166040820152608060608201819052600090612285908301846135d9565b6001600160a01b03858116825284166020820152600b83900b6040820152608060608201819052600090612285908301846135d9565b60008251613d688184602087016135b5565b919091019291505056feab844abc5ac35bdf8e8581a4c7c97fb9e92911442226ad6bdb029a2dbfe670de3c72d60a0f1018560e1ecd381dcc70c04920ba28255c0b6f8b496f8f6f727f453c72d60a0f1018560e1ecd381dcc70c04920ba28255c0b6f8b496f8f6f727f42eaf1cf088be31249661a61fc7743edf628a39210375613d4be0a9cda3ec06da63c72d60a0f1018560e1ecd381dcc70c04920ba28255c0b6f8b496f8f6f727f41ab844abc5ac35bdf8e8581a4c7c97fb9e92911442226ad6bdb029a2dbfe670dd7afbdc140ed2feae39152d66ce3c9b7394a1bbd963c668f15d7196d48d2532c9a26469706673582212201766494272092cd19f261c631732db01ae6af78a2066d700db03a611ecdf605364736f6c63430008100033"; + "0x60806040523480156200001157600080fd5b5061cacd80620000226000396000f3fe608060405234801561001057600080fd5b50600436106100b35760003560e01c806392f1f73e1161007157806392f1f73e146101645780639e41ec6714610182578063b544f6dd146101a0578063ce2ccb15146101bc578063e52a7874146101c6578063f11663e8146101d0576100b3565b8062fa6802146100b8578063084024a2146100d4578063499ca2f5146100f2578063852d11111461010e57806390c33bba1461012a57806390ee40bf14610146575b600080fd5b6100d260048036038101906100cd919061ba68565b6101ec565b005b6100dc61061a565b6040516100e9919061ba98565b60405180910390f35b61010c6004803603810190610107919061ba68565b610722565b005b6101286004803603810190610123919061baf5565b6110be565b005b610144600480360381019061013f919061bb3c565b611392565b005b61014e611820565b60405161015b919061ba98565b60405180910390f35b61016c611c22565b604051610179919061bbf9565b60405180910390f35b61018a611e51565b604051610197919061bc65565b60405180910390f35b6101ba60048036038101906101b5919061bb3c565b611ee4565b005b6101c461230b565b005b6101ce612aba565b005b6101ea60048036038101906101e5919061ba68565b613452565b005b6102187f78d7ebf9734fb14e1cd1c753e8c8a1328e70f15a6e9d6f72e9a9fa53727f7d1160001b613899565b6102447fb762e814f568369d6d9a034dd042b43951c6bf795eede2a61631d0cb9485f9f260001b613899565b6102707f8d6a4b3125d8ecdfe4230a355eb8fc82dd9166e46281707c146a8921560d85bc60001b613899565b61029c7faa3743ce923f5dec592f1187bce3301765cee5d33df18f40f69208286f4b889b60001b613899565b6102a461389c565b6102e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102da9061bc76565b60405180910390fd5b61030f7f1abc5923c3af99276b48675cf588a992e0626c586f0c7352b3cdff0663c13ef560001b613899565b61033b7f25268fb33eb9fbcbbc4ef8dc6dca647c94a75c9679cc0a92c852873815f55e2360001b613899565b6103677f44a3045dea4809c55d70d13c023de6147a22c5cd201bb989283c2473f96b17ae60001b613899565b6103937f28e12ea1a9976c791ac6a4a6b2d2bb380fb1904d8c34fcee78ab1197b6fe2bb860001b613899565b6103bf7f139b2060560716912d78fc9a9732380465f126ae41d6064b3a1634d9b6bb5d6e60001b613899565b60006103c9613935565b90506103f77f8eec63707fabb1c2500f4838ab45fc26b98cfede28134db8448d752e488f3b9f60001b613899565b6104237f85fb32cc2c1ce8a46c77ee9ff0f45b093a0cacd7973e187a761dbed6b491501760001b613899565b61044f7f768a667cddc46c632b3ef0c1bb89ee1cea482db6972864a7075f02605ce7695860001b613899565b8060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036104e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d89061bd00565b60405180910390fd5b61050d7fe40e80fa17abf85bb1d7e7ffafd2e2595627c7a0890f855899a661ec581ebfe360001b613899565b6105397f97248b332a2686922e0470ea6baee39844df2f1e57380d020ae90a21809177b360001b613899565b6105657f852ae8e63bb255aac1e8319d7837103034838c757dbd173656560b081e28b68e60001b613a13565b6105917f47ccfbb93ffdbcd098467d698753aba9bb328dde80eceb8ce6179229134fb6eb60001b613a13565b6105bd7f0acc258547574f8fd69d40df3b7339f7b5593f15ee45b3c4c4370c1c585855b560001b613a13565b6106158383600067ffffffffffffffff8111156105dd576105dc61bd64565b5b6040519080825280601f01601f19166020018201604052801561060f5781602001600182028036833780820191505090505b50613a16565b505050565b60006106487f14cfac7605e1d8f0e4eb1f937ea19942a102bbe7dfd402ead15e15fe6d94910c60001b613a13565b6106747f1e71a164c42e9891b3a10bd0d64ffbdffababcbb4aab98f01602e245f70e415f60001b613a13565b6106a07fd2a8574e972e722cedb48a83d0dc2bc0603a7a6f77147b5a910dfba00f258f4560001b613a13565b60006106aa614af0565b90506106d87f35d30f85f5259536701445997d04b7dd90412a86ec111b7dcceaa1bf1b3207e060001b613a13565b6107047fa59ce7fa1a86d6a0fccf04de254b613dc528ac443c3ecd08affaf190f3650dbb60001b613a13565b60008160010160149054906101000a9004600b0b600b0b1391505090565b61074e7fb4c28f49c04930610a7d4f350f959895688cbd01faa83eb46a5737f2c32b8e8860001b613899565b61077a7f0e15a1002f88b0e789ceb642231481cf1b4a07ce3cf6db62e422a620f0dc2d3360001b613899565b6107a67f377d2d70c3ddb3a64588dab161dc4d569490a33418cab580858d4b7f2294d52f60001b613899565b60006107b0613935565b90506107de7f49d1251a3afe701cd506dc9c4fad58265d54bcef62db046ff9ee34a24c88926960001b613899565b61080a7f2d2ce0e7016790b3a91ada7286c4ac7104a430aadb9c0ae5b6e90af4dd4d391a60001b613899565b6108367f7c6616957281916367afc655deced87ecc4b2a643e9c77d536963f80159bc0d460001b613899565b8060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bf9061bd7a565b60405180910390fd5b6108f47f4de7fd4692fc2401737f91cb782841fa70ab4efb8eb32bc79760881f57bf017660001b613899565b6109207fc475190c49242832e37651d0ea7de60e390ab3219b9ed8a0451080fed0c70f1260001b613899565b61094c7fdcba33b9b377f55f9da27f953e70d85809e5a1587852c7a6f009fef114692e0f60001b613a13565b6109787f79a86677a90fdf2dedb5ec9180126f26d501d62c46934798f895be9069e622fc60001b613a13565b6109a47fcac287ff0f0ec25f26a36321a4b66e00e43643865aa39694a49761c0f311ef4f60001b613a13565b6109d07f17173d274d84989dfe6fd5c64dc5d9a198f387a63bbd2c7d0ac42e41cc24147260001b613a13565b3073ffffffffffffffffffffffffffffffffffffffff1663084024a26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3f919061bdde565b610a7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a759061be0a565b60405180910390fd5b610aaa7fb530da3c08b649c92677dd12d98b76b69ff6b073d0687b9fe011dd382da3d2a260001b613a13565b610ad67f7e5106a8928f4adf5cee7255a8fb027a6bee0c4c67ccd8d669ac321a32a5aee760001b613a13565b610b027f6152fb6a92f4346ba6248b901005feaf5b8196713fc58cf4698173e959642dd360001b613a13565b610b2e7f27f9961d162062354088fca3a5b67d4fba33f156524042995c20e72ec6b758c660001b613a13565b610b5a7fdad8b61a89adae703a4a12f0bf4d88afac2e42136129590d5ad31b2071672af660001b613a13565b6000610b64614af0565b9050610b927f7fb57103faf1b66e8aa883f5599dd5037e77ce5e07bbe14ef1cb77c8cf23a62860001b613a13565b610bbe7f8adced1bf25b2ce6cdb86036d6aad6591498f9e0a306dd192b12dc631350d62160001b613a13565b6000610bc8614bce565b9050610bf67f224ad493b4da2a3c4883fd5d087cec9a4a5d28021b0926255573682e3a95f6df60001b613a13565b610c227f0c1c592a7328f6ebaa004223570e7c62539d62bd2adfaf363eb3d36f28ced7a260001b613a13565b60008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663801c5b1e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb7919061be6e565b9050610ce57f13d1bd1ee9a250dab2a1b19fd3b053947391410e939ee464981cf0781be0964d60001b613a13565b610d117f915ee6d8d31c020b7d1a584ff3f6b15a1459171d9216758b595bc8f1782fa11d60001b613a13565b6000836000015442610d23919061bea0565b9050610d517f8289f05b086ffc4e1a099a73b6f9fbe7e6689c7a1e6cbe971a8a3b1f7605890f60001b613a13565b610d7d7fa9bee148165231173e5c2019216187faae24fb1d45f2a69c6b450e72959a92b260001b613a13565b610da97fece210c336127d8efd2a77c26fa5c708dd5a6a11e0bc0d0e8c4ae452b6f6dcdc60001b613a13565b8181108015610dbd5750610dbb611820565b155b610dfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df39061bebe565b60405180910390fd5b610e287fbecf183b5e405e57890153a92b01d5e3e74785f3b6481e635975123ac37f2eab60001b613a13565b610e547f4f4aef36009b254cfca9ac2e2a08a77a159a35a11bc534fdb2ac78d1cbba341860001b613a13565b610e807fda6d8c99fd74ff9694b9e8b560a6acfc8cd8508a9428a98f52d735b49f99406360001b613a13565b610eac7fcd40122be1b0fbc7120f4287d53e5e7e41c63b2d2e2db94766bdacf3e3ae14cc60001b613a13565b610ed87f3f3cb7d7002d2379754df7cc9c0614c5dac5d1d5352beac39fd6050f07f8a6c760001b613a13565b6000610ee2614af0565b9050610f107f7f64994f7fc3113402990a5ac2a6811143e8f8d46baa4a34ef163944d08e28b360001b613a13565b610f3c7f2cfde92d894fada5d70cf179576def32c9508c8828c8b3a74e5209006d5ae2c760001b613a13565b6000610f46613935565b9050610f747f888646cedeae86287240730fa1ffee9b12e0bf63f2bb4f94606c787b20cdc71c60001b613a13565b610fa07f792ca63a63892cee76bace5763d954720a1f05491b5de18675f9bff7446131b360001b613a13565b8160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f70ba5911930f2b49bef0e3806b54c696faa41fcf48becb8291d011ca4c1d8db48360040154604051611049919061bc65565b60405180910390a361107d7f186a678e24ff29fad1cd30f77cc56b8828ad9703284b5f4f4431595853e0fed260001b613a13565b6110a97f987edcb449b970dc915234663bd9c55b6e7a60c07a555a2816469c1a87bea2c160001b613a13565b6110b38989614cac565b505050505050505050565b6110ea7fb4c28f49c04930610a7d4f350f959895688cbd01faa83eb46a5737f2c32b8e8860001b613899565b6111167f0e15a1002f88b0e789ceb642231481cf1b4a07ce3cf6db62e422a620f0dc2d3360001b613899565b6111427f377d2d70c3ddb3a64588dab161dc4d569490a33418cab580858d4b7f2294d52f60001b613899565b600061114c613935565b905061117a7f49d1251a3afe701cd506dc9c4fad58265d54bcef62db046ff9ee34a24c88926960001b613899565b6111a67f2d2ce0e7016790b3a91ada7286c4ac7104a430aadb9c0ae5b6e90af4dd4d391a60001b613899565b6111d27f7c6616957281916367afc655deced87ecc4b2a643e9c77d536963f80159bc0d460001b613899565b8060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125b9061bd7a565b60405180910390fd5b6112907f4de7fd4692fc2401737f91cb782841fa70ab4efb8eb32bc79760881f57bf017660001b613899565b6112bc7fc475190c49242832e37651d0ea7de60e390ab3219b9ed8a0451080fed0c70f1260001b613899565b6112e87f92844e7391217aa3ddd91a1cad9967d97dc30aa671cc82f1884634f4bcdc93a460001b613a13565b6113147fb3490f5dbc869d47b0bf63af2e812d4aa32fef76bae63364240b7aea9e34c7f160001b613a13565b6113407fcf323d205130ea1466dceb687f3b8a07fd3ba408e945fb739105e112ae77b71d60001b613a13565b61138d83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506160bb565b505050565b6113be7fb4c28f49c04930610a7d4f350f959895688cbd01faa83eb46a5737f2c32b8e8860001b613899565b6113ea7f0e15a1002f88b0e789ceb642231481cf1b4a07ce3cf6db62e422a620f0dc2d3360001b613899565b6114167f377d2d70c3ddb3a64588dab161dc4d569490a33418cab580858d4b7f2294d52f60001b613899565b6000611420613935565b905061144e7f49d1251a3afe701cd506dc9c4fad58265d54bcef62db046ff9ee34a24c88926960001b613899565b61147a7f2d2ce0e7016790b3a91ada7286c4ac7104a430aadb9c0ae5b6e90af4dd4d391a60001b613899565b6114a67f7c6616957281916367afc655deced87ecc4b2a643e9c77d536963f80159bc0d460001b613899565b8060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152f9061bd7a565b60405180910390fd5b6115647f4de7fd4692fc2401737f91cb782841fa70ab4efb8eb32bc79760881f57bf017660001b613899565b6115907fc475190c49242832e37651d0ea7de60e390ab3219b9ed8a0451080fed0c70f1260001b613899565b6115bb7e3d76421642e88070a8534bef335e74a1dd2ed68c57f2226e89b5c2166788c060001b613a13565b6115e77f32defdbd2a81f528c98adbcf64b8e0027eaccd7ab1cdbbab2bae42945741cd1a60001b613a13565b6116137f398baff99084e66dabd07015134ec2682d281e44c27d9b4f1cedf56535e1f73d60001b613a13565b61163f7f34d00cc00a176d4d7301900c3514ead83a5f8717c162296d660bda1188e1636160001b613a13565b3073ffffffffffffffffffffffffffffffffffffffff1663084024a26040518163ffffffff1660e01b8152600401602060405180830381865afa15801561168a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ae919061bdde565b156116ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e59061bf22565b60405180910390fd5b61171a7f763a29d784dae040766681ddcd3e1c568a1037acd5fb955ec53f0840048fdc4560001b613a13565b6117467f23ef0dc9cdc0245fad483fa265155e019ff0a2c55a4076262f01ee282a13d8ff60001b613a13565b6117727f9094a698ac7e4667097c56892aef7fcf6b98b10ad887d7fcff2fbcd2a3acabd960001b613a13565b61179e7f362539bf82fd458002cbd24a96f2d49c00ce2406aad4fcedde5efa33c878bd3a60001b613a13565b6117ca7f41a5435fbf7b0ca265880daf0351f1f2a8a277c90c1d4802a0feeed2e2b789b460001b613a13565b611819858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050616283565b5050505050565b600061184e7fd564188e4ad834dd51117e79f3fbfa6118fbdb4b3230f332fafce07be6bfa2e760001b613a13565b61187a7fa7ad2274b50d52f53a502a8aff61daf96d51435d368ea3ca62c4e82ec20d83b560001b613a13565b6118a67f50db9752f76043902d0a16f783d4d5b53eeb1329fc0fe179a63a2c71fbaf632360001b613a13565b60006118b0614af0565b90506118de7f4e61f3739dafbde44456dbbfc5be5d199c777865257910e2e7b401e9cdce49d760001b613a13565b61190a7f144e54828bf77874c7b26d317a2b6edfc24d7fc139f8daff052b53ec4369eade60001b613a13565b6000611914614bce565b90506119427f2ced705533d1850b68c1d784d07c6b8393b6a08862d46ce618cc80a1c0cffa9e60001b613a13565b61196e7f7ccfc6c685c16fd5609c47abdf728ac36e8432b20ad7871f0523b1820ca3159260001b613a13565b6000611978613935565b90506119a67fde086d76967ed69a11b46f2efd54327acee48acda8e8095712ed0d47e9ac877260001b613a13565b6119d27f54f0986f8cdc4cfb990bcdf6026c130973e287b00de3b2690a4e790d20a842d860001b613a13565b60006119dc61795f565b9050611a0a7fd9ca79a6ee1ebd3a715fe4e9712d3c14ae8782149b30e53afe29bb6221ddc19360001b613a13565b611a367fa9d61a17d0867f8166e025216dd807315299fa4aab9ac1b555ff9c72466a36d360001b613a13565b6000808260000160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6a1e8888660000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d41c3a656040518163ffffffff1660e01b8152600401602060405180830381865afa158015611aeb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0f919061bf86565b8660010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518463ffffffff1660e01b8152600401611b539392919061bfb8565b608060405180830381865afa158015611b70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b94919061bfe5565b505091509150611bc67f8e7b910a0e2ee428c445f0678d85657e4d9acff461d989c248216213392b657a60001b613a13565b611bf27ff6d8deb7f44e38d34aa7d2ad47e2909fa40ba56bb9fa76ff5e68db9da599aeb960001b613a13565b8560000154821180611c075750600081600b0b145b80611c175750611c1561389c565b155b965050505050505090565b611c2a61ba00565b611c567fa1216a2bab7ef103c749188258a3b0093fb41b189bfe3ab888b2bc2613a4c07660001b613a13565b611c827f2cedf7b931997dc3c88ac625b65677c47ffd37d3ffb931f3554feba7817a8d6d60001b613a13565b611cae7fb819c95c29221f5c0d15740c1a5d75ca95fc01cf72506373ba961786459bc8e060001b613a13565b6000611cb8614af0565b9050611ce67f824276bf996a963018fe6817e858d439f1d2a78cbc88e6861493121a727be88860001b613a13565b611d127f98b7adaaab0c53d4a024354f84feac4c3f55cdc67dbf788598e3aaf43d91b35960001b613a13565b806040518060e0016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a9004600b0b600b0b600b0b8152602001600282015481526020016003820154815260200160048201548152602001600582018054611dc99061c028565b80601f0160208091040260200160405190810160405280929190818152602001828054611df59061c028565b8015611e425780601f10611e1757610100808354040283529160200191611e42565b820191906000526020600020905b815481529060010190602001808311611e2557829003601f168201915b50505050508152505091505090565b6000611e7f7f12bfb1fd7afa1bb6f51a7c384afe871f637abd4c3f283d7530757c2e9f1070ee60001b613a13565b611eab7f8abd3c5f50761e3e7e87aea31f44a85a9cf581db7c32426af474199e7bd429f060001b613a13565b611ed77f6e4f88c0f896da4acddbd526422429f8cab68a16fa742c7cceacecfac2b9107960001b613a13565b611edf617a3d565b905090565b611f107f78d7ebf9734fb14e1cd1c753e8c8a1328e70f15a6e9d6f72e9a9fa53727f7d1160001b613899565b611f3c7fb762e814f568369d6d9a034dd042b43951c6bf795eede2a61631d0cb9485f9f260001b613899565b611f687f8d6a4b3125d8ecdfe4230a355eb8fc82dd9166e46281707c146a8921560d85bc60001b613899565b611f947faa3743ce923f5dec592f1187bce3301765cee5d33df18f40f69208286f4b889b60001b613899565b611f9c61389c565b611fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd29061bc76565b60405180910390fd5b6120077f1abc5923c3af99276b48675cf588a992e0626c586f0c7352b3cdff0663c13ef560001b613899565b6120337f25268fb33eb9fbcbbc4ef8dc6dca647c94a75c9679cc0a92c852873815f55e2360001b613899565b61205f7f44a3045dea4809c55d70d13c023de6147a22c5cd201bb989283c2473f96b17ae60001b613899565b61208b7f28e12ea1a9976c791ac6a4a6b2d2bb380fb1904d8c34fcee78ab1197b6fe2bb860001b613899565b6120b77f139b2060560716912d78fc9a9732380465f126ae41d6064b3a1634d9b6bb5d6e60001b613899565b60006120c1613935565b90506120ef7f8eec63707fabb1c2500f4838ab45fc26b98cfede28134db8448d752e488f3b9f60001b613899565b61211b7f85fb32cc2c1ce8a46c77ee9ff0f45b093a0cacd7973e187a761dbed6b491501760001b613899565b6121477f768a667cddc46c632b3ef0c1bb89ee1cea482db6972864a7075f02605ce7695860001b613899565b8060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036121d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d09061bd00565b60405180910390fd5b6122057fe40e80fa17abf85bb1d7e7ffafd2e2595627c7a0890f855899a661ec581ebfe360001b613899565b6122317f97248b332a2686922e0470ea6baee39844df2f1e57380d020ae90a21809177b360001b613899565b61225d7ff5c36c657ce78c3b2bd4fa2c30dc80d46f40e4793f182315ee81089204ae7e0960001b613a13565b6122897fffc7fbb7b1cbfa5b1319bfa63292d9bfcbca46a1d28f9a5890fe130ff6b27e4d60001b613a13565b6122b57fa357dbf15ca6e801524ee303eb1ee3495b169e0e0940295a83c8a976988e4a8160001b613a13565b612304858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613a16565b5050505050565b6123377fdcba33b9b377f55f9da27f953e70d85809e5a1587852c7a6f009fef114692e0f60001b613a13565b6123637f79a86677a90fdf2dedb5ec9180126f26d501d62c46934798f895be9069e622fc60001b613a13565b61238f7fcac287ff0f0ec25f26a36321a4b66e00e43643865aa39694a49761c0f311ef4f60001b613a13565b6123bb7f17173d274d84989dfe6fd5c64dc5d9a198f387a63bbd2c7d0ac42e41cc24147260001b613a13565b3073ffffffffffffffffffffffffffffffffffffffff1663084024a26040518163ffffffff1660e01b8152600401602060405180830381865afa158015612406573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061242a919061bdde565b612469576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124609061be0a565b60405180910390fd5b6124957fb530da3c08b649c92677dd12d98b76b69ff6b073d0687b9fe011dd382da3d2a260001b613a13565b6124c17f7e5106a8928f4adf5cee7255a8fb027a6bee0c4c67ccd8d669ac321a32a5aee760001b613a13565b6124ed7fe3d1f6ce17f6fe19be3e2a3b7a49335580c2e805a6fa6aa2bb3749f159a07e8d60001b613a13565b6125197fc87c41791afe20f0ec21445d009e812afaaca251f234aec33b99555742c927ef60001b613a13565b6125457f97e0ebb787b01e1625b86e0190dc1c97c86b56dd4f6b9ec007c5d70b09229c2860001b613a13565b600061254f614af0565b905061257d7ffcec8048d8ed50cca590988a3f884b6a5f190118618d32bc62fc5d1e0962a22760001b613a13565b6125a97fd7c7703eee12864b6c4922326e4a8d529f5f2bc09ab3ec737c0b32f7f3b36a5860001b613a13565b60006125b3614bce565b90506125e17f17f896b8ec6121c1403740d8b5fe11fb48ee4caf5977dae70e285f6d7404083760001b613a13565b61260d7f46a4731189ccad37b7766ac6843fd1a93c0a1c36c6ff1fe786840e786ce9f61560001b613a13565b60008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663801c5b1e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561267e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126a2919061be6e565b90506126d07f5709612f440cb332f5d92e32dfe502d90d6a3e22f9b94775abe8e6ea5fb063f860001b613a13565b6126fc7f09ea11a47c1f30a210fd073deb5e738ee79bd5ce1238d4c5ed0a9234e1c2a64760001b613a13565b600083600001544261270e919061bea0565b905061273c7fa7b8b291b75d64870e006945f41944a35e0aeccc549f145d6d61fc51c051791060001b613a13565b6127687fc84cb266eee66513645e8808d76e040652259f18526e03a029636321e58a865160001b613a13565b6127947f1634b6f73c250da2aa11840a924c2f337a77a1fa182942a868bc2fb42c981ec160001b613a13565b81811015806127a757506127a6611820565b5b6127e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127dd9061c066565b60405180910390fd5b6128127f923f58f0432cab2efe6f7174fd10a6781aab34e54098ded0ebaea28c7c1b891260001b613a13565b61283e7fffbefbc100219040aa5776632ca4193cf61430592b136933f9c1fad99f3ab33360001b613a13565b61286a7f5d994cb5635db2f8249478432956abf2a783fe782f4b7c07a4fd446bfeecd3f960001b613a13565b6128967f0e5cc1448e3626a098c40425f7b3248e83b8893afc0d70c95b233622175096d960001b613a13565b6128c27f79beca93f63f29fe02a41ef59990b241999513eda671d51282bd948ae03e5f7260001b613a13565b60006128cc614af0565b90506128fa7fbe45b396b1d22fbc4c7227a0849933f932a28516ce0b1b555f2c974f22b55a2860001b613a13565b6129267f978d50f30895ff9f91980e0da7beac841b54c9832f8cd953489237b2e25a8ffc60001b613a13565b6000612930613935565b905061295e7fec31466f9525ad3cef2e4821e37f0995d5e747df219705e0e05d6573d0ea900d60001b613a13565b61298a7f4a59290777842536005469d3446ba645b3e94f97dce5d7cb1a5364ee1cf18cad60001b613a13565b8160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5057e7232685b7cad2bf4919b2c3e735cf044c7b689b15fd24035359a95814588460040154604051612a4a919061bc65565b60405180910390a4612a7e7f8cb78ee39f9a1ec01742d2f5da8f6763c8db269bf37caec8bc13c25c170687f860001b613a13565b612aaa7f5ea29c1c4782b66b1a6e24ab1291205d7548b91b85eb7531f332b261d91d519260001b613a13565b612ab2617deb565b505050505050565b612ae67fb4c28f49c04930610a7d4f350f959895688cbd01faa83eb46a5737f2c32b8e8860001b613899565b612b127f0e15a1002f88b0e789ceb642231481cf1b4a07ce3cf6db62e422a620f0dc2d3360001b613899565b612b3e7f377d2d70c3ddb3a64588dab161dc4d569490a33418cab580858d4b7f2294d52f60001b613899565b6000612b48613935565b9050612b767f49d1251a3afe701cd506dc9c4fad58265d54bcef62db046ff9ee34a24c88926960001b613899565b612ba27f2d2ce0e7016790b3a91ada7286c4ac7104a430aadb9c0ae5b6e90af4dd4d391a60001b613899565b612bce7f7c6616957281916367afc655deced87ecc4b2a643e9c77d536963f80159bc0d460001b613899565b8060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612c60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c579061bd7a565b60405180910390fd5b612c8c7f4de7fd4692fc2401737f91cb782841fa70ab4efb8eb32bc79760881f57bf017660001b613899565b612cb87fc475190c49242832e37651d0ea7de60e390ab3219b9ed8a0451080fed0c70f1260001b613899565b612ce47fdcba33b9b377f55f9da27f953e70d85809e5a1587852c7a6f009fef114692e0f60001b613a13565b612d107f79a86677a90fdf2dedb5ec9180126f26d501d62c46934798f895be9069e622fc60001b613a13565b612d3c7fcac287ff0f0ec25f26a36321a4b66e00e43643865aa39694a49761c0f311ef4f60001b613a13565b612d687f17173d274d84989dfe6fd5c64dc5d9a198f387a63bbd2c7d0ac42e41cc24147260001b613a13565b3073ffffffffffffffffffffffffffffffffffffffff1663084024a26040518163ffffffff1660e01b8152600401602060405180830381865afa158015612db3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd7919061bdde565b612e16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0d9061be0a565b60405180910390fd5b612e427fb530da3c08b649c92677dd12d98b76b69ff6b073d0687b9fe011dd382da3d2a260001b613a13565b612e6e7f7e5106a8928f4adf5cee7255a8fb027a6bee0c4c67ccd8d669ac321a32a5aee760001b613a13565b612e9a7f6152fb6a92f4346ba6248b901005feaf5b8196713fc58cf4698173e959642dd360001b613a13565b612ec67f27f9961d162062354088fca3a5b67d4fba33f156524042995c20e72ec6b758c660001b613a13565b612ef27fdad8b61a89adae703a4a12f0bf4d88afac2e42136129590d5ad31b2071672af660001b613a13565b6000612efc614af0565b9050612f2a7f7fb57103faf1b66e8aa883f5599dd5037e77ce5e07bbe14ef1cb77c8cf23a62860001b613a13565b612f567f8adced1bf25b2ce6cdb86036d6aad6591498f9e0a306dd192b12dc631350d62160001b613a13565b6000612f60614bce565b9050612f8e7f224ad493b4da2a3c4883fd5d087cec9a4a5d28021b0926255573682e3a95f6df60001b613a13565b612fba7f0c1c592a7328f6ebaa004223570e7c62539d62bd2adfaf363eb3d36f28ced7a260001b613a13565b60008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663801c5b1e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561302b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061304f919061be6e565b905061307d7f13d1bd1ee9a250dab2a1b19fd3b053947391410e939ee464981cf0781be0964d60001b613a13565b6130a97f915ee6d8d31c020b7d1a584ff3f6b15a1459171d9216758b595bc8f1782fa11d60001b613a13565b60008360000154426130bb919061bea0565b90506130e97f8289f05b086ffc4e1a099a73b6f9fbe7e6689c7a1e6cbe971a8a3b1f7605890f60001b613a13565b6131157fa9bee148165231173e5c2019216187faae24fb1d45f2a69c6b450e72959a92b260001b613a13565b6131417fece210c336127d8efd2a77c26fa5c708dd5a6a11e0bc0d0e8c4ae452b6f6dcdc60001b613a13565b81811080156131555750613153611820565b155b613194576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161318b9061bebe565b60405180910390fd5b6131c07fbecf183b5e405e57890153a92b01d5e3e74785f3b6481e635975123ac37f2eab60001b613a13565b6131ec7f4f4aef36009b254cfca9ac2e2a08a77a159a35a11bc534fdb2ac78d1cbba341860001b613a13565b6132187f1ff6a09ef403d29a34d5791e7ca784b9458ca9369da6fcf70bd19c7a4e5f6d4860001b613a13565b6132447f53335407813a5e53c25145055bf08ecbffbd61d01c4dce0466ab447ef66ad57360001b613a13565b6132707fc43dafbe0e46a11249a26c009091ac5d3ade830e115a6ee7ee3168429817cc7360001b613a13565b600061327a614af0565b90506132a87fabd876883f7343e852176e9f318e56c66bc6075f0f5055f31142f870e75fd98260001b613a13565b6132d47f4de3e215d36f0729536302230f2677e841a2dd2447d176bed77612036863bf4c60001b613a13565b60006132de613935565b905061330c7fa0a63c46fcb823453cf5745d49e2504ba5089d87dd694f75d15b265868e5635f60001b613a13565b6133387ff97534256f8ed98ebd59a7a5b9a344236eac10c4887e8ff6032c8c33c7f7269d60001b613a13565b8160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fcea76e88a336bcad5acb8cf244393e65f4bbe4b4bcaa2e989f754f5f2bd29eaf83600401546040516133e1919061bc65565b60405180910390a36134157f6e0defef4339afcdaf50e12d586cb3ed3c8b0edaaa834a910a5965e24e6b8fc060001b613a13565b6134417fcaabd7ed7f9c20db6acf1eb1b21ff4f3213b65cef905cee8620bddce77fdc3eb60001b613a13565b613449617deb565b50505050505050565b61347e7fb4c28f49c04930610a7d4f350f959895688cbd01faa83eb46a5737f2c32b8e8860001b613899565b6134aa7f0e15a1002f88b0e789ceb642231481cf1b4a07ce3cf6db62e422a620f0dc2d3360001b613899565b6134d67f377d2d70c3ddb3a64588dab161dc4d569490a33418cab580858d4b7f2294d52f60001b613899565b60006134e0613935565b905061350e7f49d1251a3afe701cd506dc9c4fad58265d54bcef62db046ff9ee34a24c88926960001b613899565b61353a7f2d2ce0e7016790b3a91ada7286c4ac7104a430aadb9c0ae5b6e90af4dd4d391a60001b613899565b6135667f7c6616957281916367afc655deced87ecc4b2a643e9c77d536963f80159bc0d460001b613899565b8060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146135f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135ef9061bd7a565b60405180910390fd5b6136247f4de7fd4692fc2401737f91cb782841fa70ab4efb8eb32bc79760881f57bf017660001b613899565b6136507fc475190c49242832e37651d0ea7de60e390ab3219b9ed8a0451080fed0c70f1260001b613899565b61367b7e3d76421642e88070a8534bef335e74a1dd2ed68c57f2226e89b5c2166788c060001b613a13565b6136a77f32defdbd2a81f528c98adbcf64b8e0027eaccd7ab1cdbbab2bae42945741cd1a60001b613a13565b6136d37f398baff99084e66dabd07015134ec2682d281e44c27d9b4f1cedf56535e1f73d60001b613a13565b6136ff7f34d00cc00a176d4d7301900c3514ead83a5f8717c162296d660bda1188e1636160001b613a13565b3073ffffffffffffffffffffffffffffffffffffffff1663084024a26040518163ffffffff1660e01b8152600401602060405180830381865afa15801561374a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061376e919061bdde565b156137ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137a59061bf22565b60405180910390fd5b6137da7f763a29d784dae040766681ddcd3e1c568a1037acd5fb955ec53f0840048fdc4560001b613a13565b6138067f23ef0dc9cdc0245fad483fa265155e019ff0a2c55a4076262f01ee282a13d8ff60001b613a13565b6138327fab6d259290f2e5bceecb1d4ed90fd109c6d13f8e8ad51f282e53ab857fdbeba560001b613a13565b61385e7fce23198a507674f9bc25feb0f36c52f3e956a440e73379a8480e618c0502c32760001b613a13565b61388a7f9b8319010d98a5c2b86a7b763a11336de8881a4376209411581842cd1770002260001b613a13565b6138948383619e0e565b505050565b50565b60006138ca7faf1ad97f8c914b1c5deba1b1376412646162740bd8886cd86849e8b4e491f63160001b619f92565b6138f67f1d5faf8dc021a38b20188471d01980301598715996675faba89ab27beaec831a60001b619f92565b6139227f3c2f2e77f1bf89a4da2c31c6509f87e1228eb35d593230dd3800f9f9023500cc60001b619f92565b600061392c619f95565b600b0b13905090565b60006139637fce954879093f8a4b337b1d97c20d4580a92e0002f0441446d989fe80c567d4a560001b619f92565b61398f7f39a1effad31454ab2e8ef97a058b47694bad8a6e1bf3eb9f8ed6d0f6b08af8b160001b619f92565b6139bb7f4be7708471ace32a144661dd4838165211d1dcb70c72d5190e426fda67a876ce60001b619f92565b60007f3c72d60a0f1018560e1ecd381dcc70c04920ba28255c0b6f8b496f8f6f727f419050613a0c7fc5a8593d23a153b112004b34012ad330cbd9aea7e609ef2bbecf3e3ce5856c8560001b619f92565b8091505090565b50565b613a427fa9a1d9706e3464c6ba18b9ad57dbb64a097f1262412d42e1e70ddeabf586c9e060001b61a289565b613a6e7f6391f06a663c68ece6f0fd161d2a9b3b45ff024ed8701c63ad3a3b45a00f243960001b61a289565b613a9a7f4ac891747a24b3a1b2be65ecd28089a82aadaff3647e12c857f560604d7d4cf960001b61a289565b6000613aa4614af0565b9050613ad27f6b319746161fb8be1287e85b6031191b14182c7f46349f31d71fbb10704a148a60001b61a289565b613afe7fc71da29d9cd9630480fe54fe9355cde37e552a96b746260fd42d52c0799785db60001b61a289565b613b2a7fe049e67233614936b61fd83e4743927e599dfdda567e80c764806984739995b560001b61a289565b60008160010160149054906101000a9004600b0b600b0b1315613b82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b799061c0ca565b60405180910390fd5b613bae7f9cccb3eb2b8644393218b420cea2a8516a29a0960efb5e758fcace80338598a860001b61a289565b613bda7f76fb57d8b06ac2f69cdb36b0cbaa993e78e712e64705b5b86812f72aa804a4b660001b61a289565b613c067f37b25fb100c52217f0c1ffe6d2f4a87e9f3830bc93c236ca91eb4725af52a7e660001b61a289565b6000613c10614bce565b9050613c3e7fcebcd44cfcea46c757f172ba96c50947715ecc52611982faaaaf6cea7da2fbe560001b61a289565b613c6a7fc92be236950be9d7d0569738120118c2a95766a564fc8452986db365b5c08c8760001b61a289565b6000613c7461795f565b9050613ca27f97211fa2fd9d0a723357349ec1fdb517d87658d66a0ad6ff97d371a6e0d9758960001b61a289565b613cce7f14e1d8eb8d704caf493c59e22da9f90d9b9f53417f7a17698d6cb6338434ddad60001b61a289565b60008260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166316a310266040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d63919061be6e565b9050613d917f3dafdfa408e4de78b3be78425f1afa2b7a0bae5f04fbca26afa75060e9a2dc1d60001b61a289565b613dbd7f2f6e173d19abc79e37f499e7e6da97c1a9e542d63c302ed221aa327943f61d7760001b61a289565b60008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663014df4146040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e52919061be6e565b9050613e807f2d9aa15bf12dba69787175baa284ce8ac6d102dad09085e458819dbe2d87da1160001b61a289565b613eac7f0f72f85940d64a7a704cb113434de93be9fb857941fa355c41b26744122e645760001b61a289565b6000613eb6613935565b9050613ee47f1816fd80bb8aa64f9b9bfdd5d4082192a9588bb7dbfaaec2779caedcb0010eb960001b61a289565b613f107fcaf10ff04d9b3420c2c8d7ba0298e192f0a0b5e46cea2a6f75db43f77f7a7b3360001b61a289565b613f3c7fc434a42128af633dd7dc817a5b26411053e11958d1d71e70e49fe8de28ffd6f160001b61a289565b613f48888a858561a28c565b613f87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f7e9061c12e565b60405180910390fd5b613fb37f38af53faeac707e8c3ab7cda22bf63eb1e86d9fcbd429c3acfc49635e62cc93160001b61a289565b613fdf7fc226d99136d2c30d0673ca817bb8d707fbc0853fb8c097480d51944be97d043960001b61a289565b61400b7f6c3ceb064d6cc2b89f485a5cab73f0308c403b47c641b4f0917c770903239c8860001b61a289565b6140377f48e6de82f2120424693d34a9772b9a13a728ea6b1e41dd38f7ffa8e0b800d8e160001b61a289565b8060010160149054906101000a9004600b0b600b0b89600b0b1215614091576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140889061c192565b60405180910390fd5b6140bd7f2b1cd9270b65192e167457505a82e044ea27f2102715b9930b20bff444f944f860001b61a289565b6140e97fe52381c4a40b4e7a938024d9d7cd35cf6f3c6d77e53cc040c7728f6e4ec6458360001b61a289565b6141157fbb41e2da523e534793fe34e16490a683245f212b79c1c968de2f979f911a76a360001b61a289565b6000808560000160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662422bbe8860000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d41c3a656040518163ffffffff1660e01b8152600401602060405180830381865afa1580156141c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141ed919061bf86565b33306040518463ffffffff1660e01b815260040161420d9392919061bfb8565b606060405180830381865afa15801561422a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061424e919061c1f6565b925092505061427f7f3e90907908656be9bb5b9c5110b4df0b467188ff48ab8cc8c18dd6ff8db9d9fd60001b61a289565b6142ab7fd31a4e853c6edd3c3ed87667b2ead572b2f5ce45d8416ffb799d78f807414c5360001b61a289565b6142d77f0e45314758beaab7f450224b4af2f6608e8fda7a06d89e099ddf11655534259260001b61a289565b6142e282600061a3a1565b614321576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016143189061c240565b60405180910390fd5b61434d7f34390ed3a82ee42932076e2785828e6981534b8f7882c982f493959d89511ad460001b61a289565b6143797fe233fbd65c7aa701a3bbbeda8e1e7d659446f5f8032dbc9b42ea7ecc2ea0e08f60001b61a289565b6143a57f1d341c993ae41d1e1a45288a06de7f8bb1afa2a62c7f1d338baa3a393c0d5c6560001b61a289565b6143d17f305225e9fdfbff9f9517dbc7e2013a3830cff0fb9e9f65e09a959cb453b6f92560001b61a289565b8a600b0b81600b0b121561441a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016144119061c2a4565b60405180910390fd5b6144467f1a02836421f22f79b23a3c751773d5a150bc2da285b7c0a0d00564b7bd29698260001b61a289565b6144727f056d8f2d00b734b67e1bdbacb77ce510f2956ca904b1228796a6a5bd87f7541660001b61a289565b61449e7f500e2a26478938dd2cf028569232ffca6348c468c7a7543a937c79f04f74f16860001b61a289565b4288600001819055506144d37f50d3e9a1e584946667ad47745a52a3d401ad8139bbbb55de76aa2dea37012c2660001b61a289565b6144ff7f5857a31449e2609342a684df3f41f58ee2d3412a215f671c32ec573d390bfeed60001b61a289565b338860010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061456e7f0b66216b638727057ca98221f4af4f6383e63ae1299047d746e686a5f9cf8f4160001b61a289565b61459a7fa1870f058fa3f0024d592bc2772b9496995ed23c8cd9f0a167a0ad6d3c67894f60001b61a289565b8a8860010160146101000a8154816bffffffffffffffffffffffff0219169083600b0b6bffffffffffffffffffffffff1602179055506145fc7f212e9f532bcfa49220960fa365ef7c101394deb29d54a87d8fe602c1c258285860001b61a289565b6146287fd218fc462616e14d094de1430d1218a55a19377bafb1e9f386f8995a4b8bea6260001b61a289565b84886002018190555061465d7fb63dcdf593e65ea7981565406f85d9799345be4c6506cdb2b059d85c11bcf81860001b61a289565b6146897f73cf2727907539c3bd17ed267f7b8d9e43324ef978b68066ab9dcc5775f1790d60001b61a289565b8388600301819055506146be7f9b54b2db2c39177e3f4fc602f290c39e02512eca2110a6ebf74a84271d38752e60001b61a289565b6146ea7f55c5f119b0a429ff1318b8b0ff623f2207775d347278044145e5cb0cf0efef1760001b61a289565b89886004018190555061471f7f0e3281851af0bc71ad42be65de363dce6bb1cd8063968edff6041ae74064ae8760001b61a289565b61474b7f0d4ee09f7850f69a76425acc6a43deb8966a2d7cf265b29bb18763bebf76442160001b61a289565b8888600501908161475c919061c3ac565b506147897f92a10494b8fd5fb0a80eb2625e904f3f4d15d1e6a438a0f9e6fd09ee2a612a9260001b61a289565b6147b57f13b8f2967ef6dc7043c20d1a9c85bbe3a3c2c34cf6e2874fa5363daebb19bd8360001b61a289565b3373ffffffffffffffffffffffffffffffffffffffff167f51dc3f0ae56a56b314941620a5450aa63fb32261ffdd59993bdd4a5645ed6d728c8c6040516147fd92919061c476565b60405180910390a26148317f0a9034ba30af50e990c4b50fe3704004cf16329cf6f19b01b5a99568d72c8dfa60001b61a289565b61485d7f8048338757f084481f22e46f9585e067d47970ad7c5f0e11cc0c8629ae04e13860001b61a289565b60008760000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d41c3a656040518163ffffffff1660e01b8152600401602060405180830381865afa1580156148ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148f2919061bf86565b90506149207ffc8111db633c6ed708ddf88cc37a9a2854dceb3e9a06cb359cbafcdb6209cc8860001b61a289565b61494c7fd4dcbaa63ff859ff8e7bb02b25547ff9d6706d520c27680af1456a715904884260001b61a289565b60008760000160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638d997f6e838f6040518363ffffffff1660e01b81526004016149b092919061c491565b602060405180830381865afa1580156149cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149f1919061be6e565b9050614a1f7fb8e4f5fdeeacce89a7eb9390070eaef1fee936b7c2b6a6b2c61cb58bf2a7a91c60001b61a289565b614a4b7fe0b858fc4979216c1cff9dd24a2fcf7cda402c6d7b3ac96c9f21ccbaa65596a760001b61a289565b60008c82614a59919061c4b4565b9050614a877f3be3e6b333a963d5413c6273fc94cb8d9d316082603272f5577247e3eaf35e2660001b61a289565b614ab37faad63be2e7c3fb5b2c7989586fd9a45c51dcfbc12fe5a9158d3e14b22065de1660001b61a289565b614ae03330838673ffffffffffffffffffffffffffffffffffffffff1661a6a4909392919063ffffffff16565b5050505050505050505050505050565b6000614b1e7fe8e3c56e67a53d5f8152bdf9bff79eaba3647182dd36793c6672b548cf08112e60001b61a289565b614b4a7fab04d3ffc8c48efc9e033636128b710b3b9571e3767594872fd0a0427f6744da60001b61a289565b614b767fc988ee358c649916dc7f3e1ebb8f6cb7c3e9ef3500f162adb8228974371c639560001b61a289565b60007fab844abc5ac35bdf8e8581a4c7c97fb9e92911442226ad6bdb029a2dbfe670dd9050614bc77f3a3d3a32cbafa8305c63ac9866743e872cd25620e92914c636eab5e6aa7eb88760001b61a289565b8091505090565b6000614bfc7f92f07c330c4bea535a175f6d7edcd79f1061766100f5c93b2c1122350289101460001b619f92565b614c287fabcaf7167b0959f4b40a7f7524422d292f906cea68d83d448c2753f3a342834a60001b619f92565b614c547fdcefbedc4048be08781429da32373422ac2a0c0fe788fe899decaefbb183e2ea60001b619f92565b60007f7afbdc140ed2feae39152d66ce3c9b7394a1bbd963c668f15d7196d48d2532c99050614ca57fb4759446eb72cb3fde3f5c1f4c12ac34a9b4f237f15076f76cf491f5b30434b160001b619f92565b8091505090565b614cd87f8a30e006e25a2fb52e070c0a57cbe5b1aeb9f923fb24b77bb75d6fabd8d27d7f60001b61a289565b614d047f900dd5e29b8dbb049b5b01fb74135fca41dc4690c2a21eeae2f4c87a57482bad60001b61a289565b614d307f15b3cf0615570384bb0e89a0fd2a707b9b606b561125514f5deb40405dd2ba0f60001b61a289565b6000614d3a614bce565b9050614d687f820b64b121d0431eb6a6e5173e3c4918187c38c5f6b0449dc00e30966978cc6060001b61a289565b614d947f4c9ead7f507c54fbdd3fb4624a2789faaa54a4f00edd80a7e72e4de161934db160001b61a289565b6000614d9e61795f565b9050614dcc7f98d16bff1c0d9143cbedb31a2f76f204118705a30d974abf333ac426c84a03a760001b61a289565b614df87f169068a5b5ae765a40f4fe34a40138ebc40743f645eba8d5acbe9c1e95d0e31c60001b61a289565b6000614e02614af0565b6040518060e0016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a9004600b0b600b0b600b0b8152602001600282015481526020016003820154815260200160048201548152602001600582018054614eb89061c028565b80601f0160208091040260200160405190810160405280929190818152602001828054614ee49061c028565b8015614f315780601f10614f0657610100808354040283529160200191614f31565b820191906000526020600020905b815481529060010190602001808311614f1457829003601f168201915b5050505050815250509050614f687f80ddab2251ebddb4a7cb960904ceaced21982379be17c54674c717f98a132b2960001b61a289565b614f947f1bc934c94d3c95a42cca872a26100212f715794ed43284252e70ed762e0a55bc60001b61a289565b60008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d41c3a656040518163ffffffff1660e01b8152600401602060405180830381865afa158015615005573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615029919061bf86565b90506150577f88444024b78dfd67851fa968b32fc661c032ae9ce473183a9ef34b0d84164c2a60001b61a289565b6150837fad56bb98e7e83d3708ae3bc93860011dc92f56dad99c65af28d7d9d3ba26d69960001b61a289565b600061508d617a3d565b90506150bb7f825f28a33547c59fadb4b0bbaad3a512c965ccea0cf7254329c5d84556ca5aef60001b61a289565b6150e77f9dc4c99c5897185a6f01799ff06dae0eff6a1cabe7375b443335e312bee13c1460001b61a289565b6151137f3b53170a483d15d1f1e56fe110b222b5db2b09af504f75503e94c0a23d10610460001b61a289565b8260400151600b0b87600b0b1215615160576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016151579061c4d2565b60405180910390fd5b61518c7f19c3692b5f96e7756e4df88bc08308b2d0b2f41fbba6e997d75ae1e2afa72b4c60001b61a289565b6151b87f071261f3bd210597f29f7a503f881d4314c1ca7d27a7379184eeb1d4bb9eeab360001b61a289565b6151e47f962890eab4ba40cd1254a1043504caf1d7a87b776ac345a2943c71825dc9431660001b61a289565b6151ec61a72d565b6152187f807adfc2a5bc92f32cb93c11ae8dcec9d55b502f64158bcac6f971ee85949b2660001b61a289565b6152447f58cf4d3bb6445f8b7aa97c7cb270ff875ed953579e1a1411f24f31a66682e66d60001b61a289565b6000808373ffffffffffffffffffffffffffffffffffffffff16632ec8eec7306040518263ffffffff1660e01b8152600401615280919061c536565b608060405180830381865afa15801561529d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906152c1919061c54f565b5050915091506152f37f64863229652d1f5efeff718df018d3db4a4d54be8d968f39270b1d85fce5b9f560001b61a289565b61531f7f9f8855ebe6194a95488b3638080502353e4edaa0521b5c6d9ca4d4cd9685e22060001b61a289565b600061534d7fac0294973fddbfe1c3a0be8f5630ea4c8d9b6bff8b8534c007bdb78740fdcae560001b61a289565b6153797fa364102589f0e2f5836154272eb3ecabb7a57f41e2cb0a07f4402a944b8efeb860001b61a289565b60008284615387919061c587565b12615423576153b87f9b620ed95ce6d060f1b8484714082cef668e8903361cdd8965fa71c6bde55c3b60001b61a289565b6153e47f47f51a80211c1f671fb6052dff9d3d0789b9b5e4b9aac6014ee1990077fa0fb660001b61a289565b6154107fb8c6f2b379fde93b4fbea973ce6317afb1c4ed2a86a61bdecb3896f24282d2e460001b61a289565b818361541c919061c587565b9050615450565b61544f7f6366d3328f8c77c028a1070fcef94a5aeb3af894eec6a350981327e116764eca60001b61a289565b5b61547c7fc2d4e127debf2a23476113722a334d7c86c5744856748ffc55715efeae6d448b60001b61a289565b6154a87ff5d2d01a2b66e351a18049505d3a977f1d2afd40a250bf256bffc6fdc972e0f060001b61a289565b60008760000160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638d997f6e8789604001516040518363ffffffff1660e01b815260040161551092919061c491565b602060405180830381865afa15801561552d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615551919061be6e565b905061557f7f0bda55a82936d2a63b25c83e23a0aabe00d9144c38ac11e8f107b430c54112f060001b61a289565b6155ab7fd0cf42cc4257371ca8a9fe8966daf11a5e170d0dd4ce2e60ca7be111ca15d2e760001b61a289565b60006155b561a8b0565b90506155e37f306df84957716980e94ebe595da47048630a513dab9043eca01547c4ab3367a860001b61a289565b61560f7fb31fdea857fbd60002f5bc67f4fc3d44170f90bf062fb7f2a532ebc66348030660001b61a289565b60008512156157fe576156447fc1f1d04347bf0fde9e82350eab15e5ebc2c9607b4f7efa9c45f08e95b711064b60001b61a289565b6156707f18daeecccd6f077148f7b94fc5a56c1fac73c00055abfd1dc3618a1c1e3bbe1b60001b61a289565b61569c7f6c7c965037af68319e38d2df382d048cae6acf68ee77e5271f4458575a2a26cc60001b61a289565b6156b63082898c60000161a9c5909392919063ffffffff16565b6156e27f76b38b31ca5562994bee816226c3a58f4b39425ad6417e0dbc7684482470403060001b61a289565b61570e7f9ada3d21fb69bf58f3fba75b3fcb1d0162d03c625d7a666cf607f98a797630ad60001b61a289565b8673ffffffffffffffffffffffffffffffffffffffff16632ec8eec7306040518263ffffffff1660e01b8152600401615747919061c536565b608060405180830381865afa158015615764573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615788919061c54f565b90505080955081965050506157bf7f5bc8a5fd0f0281ed598293366f33ccf4719c0ddc3c707ac8f9576cb131c7862660001b61a289565b6157eb7fa1ee076b5f0d19c3ae091ad3dc0159e9e05cceb8bf836343f4b23ac4ab8a4b8a60001b61a289565b83856157f7919061c587565b925061582b565b61582a7f1f6247ad970608fa3139ec8a8c14af504e9f8707cbc7e762dd68581441a76dca60001b61a289565b5b6158577f04a8cb508735783acb8583dce74d5dc096f9fae5ed0fd65aa09117660585f95460001b61a289565b6158837f65586e9a60025459a5694a30b51e62e9c7b3b6b5ce382250b06a4b166db5946360001b61a289565b61588d8c8c619e0e565b6158b97fb92eeadb42babdc2881fb7032519c15f40039f82d487ff91eb88577a0516ed5560001b61a289565b6158e57f8dca3c98627064a943f5d953f385d003251bd035f1638b586a2084af481c6fbe60001b61a289565b6000828960a001516158f7919061c4b4565b90506159257fc4d0e53ff930fd9ffa4d1bf2994958098c3efed35d26e273cc1a3906b9660eb860001b61a289565b6159517f8d147937441c3498ae11923155922b9912adffecc8831ee2e220303fa1defd6060001b61a289565b600061597f7f10d9d028f7fc3542a8bccf19800058381103b7953382304f407f09f018b197cb60001b61a289565b6159ab7f4bf6bfd7c59c73baf3af4d5656a3972aa58c9ba6d883e95e3ff1723302a19fe760001b61a289565b60006159d97f15d8516021355dce45ef4387a36a600cdc819e1a1ad43442ee9cac63228d427e60001b61a289565b615a057f7c4a7b099dd8c5baf7f121af9087e96c5aecb59f6d5fe2c0d7c9f2b65a05e84360001b61a289565b86861115615c8957615a397f5c902c9696d113ae7fb26881f5cace5346111b56047ea9019d6bb6a1b23778b460001b61a289565b615a657f2792aded8c5ef929043263cfb81ee21cbbcc22ee807d0621b9c4cb639d8a2ed560001b61a289565b615a917f825ef4691042a19e16b6b9eaa8d40daf8b17829a14bf9afc8e4a20cdde1202dd60001b61a289565b8686615a9d919061bea0565b9550615acb7fd4d8d12c63ca51ad36eb0194c88b50c2b6d7e03ec5c45b8bf1d118280d35a09960001b61a289565b615af77f580034f5cdaad41516c0cbf4f6ab1537e302e536afeda703a62abbea2c92aa3560001b61a289565b82861115615bf157615b2b7ff9a16cdf660b344abdbe4b577e9a921900ba971987c32044d6cc1204dfe6a37d60001b61a289565b615b577f74874ed471d99e7be4bac080304509c537abe912f41e3d059703a3d3622150b660001b61a289565b615b837f1963db68e18f34be49fb61b46e5cf843538a0b31c3226224a33c01ce36ea198260001b61a289565b8286615b8f919061bea0565b9550615bbd7f8bcfe7abf70e7a83a13dea9b2ce6ba765db404afc4142d6e48ce863c6b63089b60001b61a289565b615be97f67288024dd7fed04df3ea48ad9ad70fdf50c14c0bf7a97882eef02c47e1c4ea360001b61a289565b859150615c84565b615c1d7fedfdedd01bde25de70ab54488182791fc368ecfc262c594557c36052d562105d60001b61a289565b615c497fd30f09399a77d4a5cfbe5e70f147ca6d879aaa84b066afb03bcf712e3ee4ef8360001b61a289565b615c757f146c5c114d135c06f06c9274a35272f7a12f9ab2e66830ae1e74f1b1f1058ce260001b61a289565b8583615c81919061bea0565b90505b615d11565b615cb57f9357eb32325095d30a739627c4e759333464d5a5af6683126a5d754f627039c760001b61a289565b615ce17f0123770c1251345a660042d2482ffc658e1d2e6224cdb8511db2adfdc6fe766760001b61a289565b615d0d7f9968024f6fda910612fd770e423603a81c61ca903411cbb3e9e2e8e51ccee0a560001b61a289565b8290505b615d3d7f8ab0fad36d81be0e0fd4f2cfe9bdfbe06c8b5645b46729122d8ce5ecc173fd4260001b61a289565b615d697fdd623315c5ff06757fbb4b5a2dd8aaf82a22b75653f7cd1a2362a466f5cfe64a60001b61a289565b6000811115615e2857615d9e7f76e703d5ebb4999d1fe165c9f1f1915e02203188605435a5aa19611affc2399860001b61a289565b615dca7f32ffc650adeac0cefac1b79c0f5e2944045276d7efa446dbb5db0aface564ce360001b61a289565b615df67fe39211bf076396b9224ffc11c0f8e1471336d93df5cee7e865b00c78e94e9fe660001b61a289565b615e233330838d73ffffffffffffffffffffffffffffffffffffffff1661a6a4909392919063ffffffff16565b615e55565b615e547fedf5fb9741da12c74c475caa0f7aa5705cccc88fe0705ccf8fb125d5fc6ad8ba60001b61a289565b5b615e817fd4a1cdb6276594af1577dfc045f7706bc94a5d5aaee9d656e05002ae3646112060001b61a289565b615ead7fddec74a914caeadaf9f3545b9ad22604ef8a8d817ff3bc3a50efc7088996cc8360001b61a289565b615edc8b60200151848c73ffffffffffffffffffffffffffffffffffffffff1661aa259092919063ffffffff16565b615f087f5757de5ea97e5681eef7aba3e311aa9bc69ad96f3417a86bc22c48d843c410b460001b61a289565b615f347f27bbf91ee3b28b40d16e0980da9ad7ab4bdf79fdc464d098ed50f2122e5c92a860001b61a289565b6000821115615ff157615f697f8494460da08f7afba4f24bafa72e74b4100638b3e1459ecdf9fe70e75101528d60001b61a289565b615f957f5ea5f12b71fa3d7f902b8bbc43503292abb2653b5a547dbb1ebb8a4df2afc1e960001b61a289565b615fc17f1a3395ba20f143273dd65c576bbcfc48c92dc7d35c3a194dfb8a264d43c2fda960001b61a289565b615fec33838c73ffffffffffffffffffffffffffffffffffffffff1661aa259092919063ffffffff16565b61601e565b61601d7f92ceee8732c4fabed5fa0dee5657f7d8955e3bb6258b0089f1616598412c3b4660001b61a289565b5b61604a7f14026c6a3043c0abb6465d4de1779e60de5f46b0973840f8db711641e52c85f960001b61a289565b6160767ffaca71de4162cc793665feae997d0c3460aa01e61b65ed61b70f9c1704a1a00660001b61a289565b6160aa3361608261a8b0565b8b8d73ffffffffffffffffffffffffffffffffffffffff1661a6a4909392919063ffffffff16565b505050505050505050505050505050565b6160e77f24ac25cd11a04ecd56647e666ff1ba9dc9be1de5bc9775d8f22676199b47ddfc60001b619f92565b6161137feba4ad35cb54163926f7dc1fae8567536dedcd037d6cc61689d6aa6181ae9f2560001b619f92565b61613f7fa2555c23e708c06a48cf97cda1cbc130238fc38f8313cbaef8b16c1829f0589960001b619f92565b6000616149613935565b90506161777f9f59f1a1ce8b4f0420e4a21af9c30830aa94e157671976fd63f432793119ca2c60001b619f92565b6161a37f98361259abd4b40ee04fcd3de75588c3025a08b77fe196aa7861748a6a5ae1ec60001b619f92565b818160050190816161b4919061c3ac565b506161e17f206ce3ea97b4090d02656776a86bf933b2e8eff098727e4adeaa3d5d3dcc385460001b619f92565b61620d7f2009dafdb1ce5795bcdae67ef6c870954a61c7c97f3daed10718023acc099c8e60001b619f92565b8060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f488d437d8adb2ae8d8c71369f71f88a6c69e89267671cfb8f8b5f3149526a92583604051616277919061c5b4565b60405180910390a25050565b6162af7f73f6a5d67886e0a391a7e8f6904fe095c1dcab2e9ee0b5e7c7854ac7f4bf77b560001b619f92565b6162db7fafdb1a589cfee8a68ee41cd71bdab0e105396de169358e1ba90d7a8c54c7cb3460001b619f92565b6163077f6c0905b0822051e66414c3cc082b637bedd8db871633fb5b1a20e42592f0c21960001b619f92565b6000616311614bce565b905061633f7fd1dbef7e0992befd32377b14a05c1c9b5904c2429cd827bc77e508678cb4e37760001b619f92565b61636b7fb3a70b9222c050b59728f761810abd0eeff52ba85179054263ceaf3b6c16afcd60001b619f92565b600061637561795f565b90506163a37f8c712ac9455d143904cc9598373a83f965ea50bb9d4d6264947608cc0ee2a2eb60001b619f92565b6163cf7fdca1ac821b04b7bc80051eae95657206dfb634a26ef732702799c4351586141d60001b619f92565b60006163d9613935565b90506164077f447ca8251bd441e0f775a60e981a735488ff119d4f58a1a4e44ff55adab620ca60001b619f92565b6164337f456c3d65bb3fb86a950ab749ac7f41d89de9cd8d637ccafb642c721012d1a69f60001b619f92565b61645f7f88a7094d28951f7083c53add03c6ce901c7d19a540b8be50345ea1864f99603c60001b619f92565b8260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663356248da6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156164ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906164f2919061be6e565b851015616534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161652b9061c5cf565b60405180910390fd5b6165607f19ff6f10864e86565688f31db1e98f57a6b8e6770c5d308c77a523072e326dea60001b619f92565b61658c7f291318500a8b13a10d0be4c25778a58810d2e5a8b3e359a89a17d796c728984560001b619f92565b6165b87f026203e30a150cc9008979b45ee6fc9f3f444d77e0425f84878320cc69d1389b60001b619f92565b60008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166316a310266040518163ffffffff1660e01b8152600401602060405180830381865afa158015616629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061664d919061be6e565b905061667b7fcdbce5b1e4291121742c332e7d810a09f3a8b43c8a4da4251ab08a99f801c11060001b619f92565b6166a77f6bcb95312f32513325a0f67d84fdbe379df96b07df62cc6def28c8bdd717c01c60001b619f92565b60008460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663014df4146040518163ffffffff1660e01b8152600401602060405180830381865afa158015616718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061673c919061be6e565b905061676a7fd9fe3aa834b8ea213f74b97908002c4a4c2bbd269ca6dc2c83da0c7e25223e0160001b619f92565b6167967f4b9b45d45c7fa21ebed737089cc5b5b6c0864cb94e795ba42b7ffa8c5b0ac5cb60001b619f92565b6167c27ffd5012c8a260b91eb82250e1076afc3f1efe5616d543fcfaa599a28126cc332a60001b619f92565b6167ce8789848461a28c565b61680d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016168049061c633565b60405180910390fd5b6168397f87fdd076eb369cae01639df5d24d97cddf5ff33a4a2df9ef694e0d13c2eee45460001b619f92565b6168657f4e4d82b4811087f627678d34f2437738442212113793406ef6483c5f384775f760001b619f92565b6168917fab194abf8809c48b9250399f323bef1ccf17f5fec128b0599dfa009758a991ae60001b619f92565b60008560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d41c3a656040518163ffffffff1660e01b8152600401602060405180830381865afa158015616902573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616926919061bf86565b90506169547f395de1ecac7b261076f245b0d37fc2ffffda8d58b74a4f6bc2d51ccc82d6afd360001b619f92565b6169807f17a0c26611346ebd44108165b927462ab4d5d4cb389d768a58a52b17e43cb2e960001b619f92565b4284600001819055506169b57f7ca9f4da0c7e7206d8bb0cc52d7e7cf9dd8afe7b51496335767a86390a9d7d9f60001b619f92565b6169e17f657c33b7833cb6f1dcfa192841f997b410c65955068d7980c190b953865e314160001b619f92565b8360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168460010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550616a747f398599676e7f9fce49c971bf9cfbc9cde4d51d5840e2d2f1fda6ef16439f89c860001b619f92565b616aa07ffc8598582b8da100cb6e5f9a790f653a09315804af6d4f562f8eb8cf152eb49960001b619f92565b888460010160146101000a8154816bffffffffffffffffffffffff0219169083600b0b6bffffffffffffffffffffffff160217905550616b027f3a2bf7920fb0c21260035e5f41e3d4e0d6503ba0436df535ccfa891835c5c04360001b619f92565b616b2e7f58ddecb93ae9387bc8930b8015db411c8304078573651eec75eb603be26c8f2060001b619f92565b828460020181905550616b637fd16a0d77dbe61dd5478d76dfa419076af27ad8dc94d79912f2754baba366ab3e60001b619f92565b616b8f7f1b3c6c09a0b889c474f93a5c4aecdb74a94e6cee3f283fcbbb7fd38e9d95389b60001b619f92565b818460030181905550616bc47f6d4f6ed8d1a1ffff8ada767f7ade0479c0f3ae2561b8d6ac9e32e5572a66dac760001b619f92565b616bf07f358accd17f99e3bb59140ea36a962b6865788908031ae87405e045f313fdaeaa60001b619f92565b878460040181905550616c257fd507c6fdb9d425639cf3c8c12f2a8e712ab580b55488fdb42192fb021dddc2bb60001b619f92565b616c517f36b996dbd901afd01a6bf64a61f4889701a5638f84a48a1ac88456f50e3a73dd60001b619f92565b86846005019081616c62919061c3ac565b50616c8f7f160382624d1cc3785137efd3e5512311d7896b2dffda54c0093293558642f25860001b619f92565b616cbb7fd191a1515b43eba10908a5e72269922e32aa8b4f9df890514172599f7198d6b260001b619f92565b8360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fae3c4f18410e9cfcd20fc8664a5a0082a92f07a0a5febdc22bec0c539393733689604051616d25919061bc65565b60405180910390a2616d597fcb14b1293be444474fdc165192978618b4244180458723f9c44a82ef22d104c060001b619f92565b616d857f0117759d6c7cf4e9ea56b823d49025733ab8c3671bb9e42e784ef7e6f3ba73b160001b619f92565b8360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f6602f4d39e226f3807ddac3e7aab03883832e2ea2d07ccdeaf513c16679fdcd08a604051616def919061c697565b60405180910390a2616e237f72bac7384b231c20ad63407a544c8ebc6ae54cee42ddd95997bfac9a33ca8b4460001b619f92565b616e4f7f8751ac6ab3a6b8e5423b50a02b02078f79f83df6eee024a81189de107fde984160001b619f92565b8360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f488d437d8adb2ae8d8c71369f71f88a6c69e89267671cfb8f8b5f3149526a92588604051616eb9919061c5b4565b60405180910390a2616eed7f398ec5896d3f0b63155d70060c80fde3130432cf863016a0e3ce8363088f746360001b619f92565b616f197f4576cc816586087e9a4e38de01917ef7a4874e9ea6033df5b212f86249da605560001b619f92565b60008173ffffffffffffffffffffffffffffffffffffffff16632ec8eec7306040518263ffffffff1660e01b8152600401616f54919061c536565b608060405180830381865afa158015616f71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190616f95919061c54f565b5050915050616fc67ff0df56e1ab6b1383f50b625d95feb3a91226f4448927dc70c9ced9ff5df8bb4760001b619f92565b616ff27f2d7b0dc039ec9b64e6e1d5c63c54be42ec780121c1aa01b8735e5bbfa964321660001b619f92565b60008660000160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638d997f6e848d6040518363ffffffff1660e01b815260040161705692919061c491565b602060405180830381865afa158015617073573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190617097919061be6e565b90506170c57f0380889f3eb84491e0ce4e19f2bcca8a6273ae94e549cc12fd1bbe972c2c89ce60001b619f92565b6170f17fb6c0662b43e5f58395516a823c3a0ff5946b9fe5ab3a991fb53fd2b9ef5859c860001b619f92565b818111156171ba576171257f756093189f936dee1b1a3c35d7b4463eff33993643f47ede0eafdc9b7681e28760001b619f92565b6171517fff0b72edc22f89257beed03719cb51a5a76524336fd6c87a8fea12143864aa4e60001b619f92565b61717d7fb0e4f0170c2363a177f757cfa6d710fdcc7270cc4887f2c18bfc4d49bf0745bf60001b619f92565b6171b53330848461718e919061bea0565b8673ffffffffffffffffffffffffffffffffffffffff1661a6a4909392919063ffffffff16565b6171e7565b6171e67f5c94dc846d84a2e71e589c97a35fa321bbd5f2fd86a4c5c4b1882242994d372360001b619f92565b5b6172137ff0a74c9bf6d37afad4c167e9aabd10197ae41a1fe2a139582f92e1462df9dc7d60001b619f92565b61723f7fdd0b7dc7f5dbc18c9e0031fec7047616a9722b74fa174fa9a9951b0a158e705660001b619f92565b60008760000160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6a1e888858960010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518463ffffffff1660e01b81526004016172c99392919061bfb8565b608060405180830381865afa1580156172e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061730a919061bfe5565b505091505061733b7f4719d4be317fdde6bf12a04468ddba913f37ad5224b5c42046d3bcfb523a82b460001b619f92565b6173677f750b82fd1322478ab4482cf74d60df914e9a98582d30901acfc951af6219438c60001b619f92565b600081600b0b131561743d5761739f7fbcc40430a11c2521f349bba07a5046fd52a6a4135f91688da98080caf5ea84af60001b619f92565b6173cb7f37e9f33aee9ffaa0029da68f383a04f5e7a87b1f6853319bf2ef0987993d661e60001b619f92565b6173f77f7113377934ed2629c62b2601d646c2728e5bab0be3d39213de0ec9cf9701fd2660001b619f92565b6174378760010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630868f8c60000161aaab90949392919063ffffffff16565b50617503565b6174697f613116a4df2a29a196d3e4b104f63f2e8fa672e4488addac9b13a249a59feedb60001b619f92565b6174957f2f96fae69c9582ce64098298a469ba73c7ccad464204f6d280321e2deb064af860001b619f92565b6174c17fc8c473a35868330b6f7665f685ce11914c845f703621d38173ceeb764039b12b60001b619f92565b6175018760010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630868f8c60000161ab1390949392919063ffffffff16565b505b61752f7f9fc74a29942fc17da4bba827558cae8111fb4ae2c6f4b57cfcad5cb9cf59580960001b619f92565b61755b7f488181ed0a637f9feea52bf25719593231865b8201b753fb9425811a556df39360001b619f92565b600061756561a8b0565b90506175937fda5db530d0bd947e84534c44309455d7bcc853dcece306f5a937d60fc4dd493160001b619f92565b6175bf7f0e52a46db1266548cd553e871834a352271997309b352797d67344e82985d9e260001b619f92565b8860000160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6a1e8888630846040518463ffffffff1660e01b81526004016176239392919061bfb8565b608060405180830381865afa158015617640573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190617664919061bfe5565b909192509050508092505061769b7fdac639bb34adce7fe99654447ec5bbb59927172aadc2e302e06a07c1be78c9ff60001b619f92565b6176c77f138ac01894f0e1d82cfdb1f33ac3590947cac808fcc01c8000d438846f8889d960001b619f92565b600082600b0b1315617776576176ff7f6fe32bbbaacd07842cf78e3df6a1424862631ec969112062f34978d72a2eaf6360001b619f92565b61772b7f7761a437d5742c5f8382554ce9b4e87f3b212f84497aaf40c5a032161e6aced760001b619f92565b6177577fb779f89c7e12dd7f83be68479d3f3c8d0a47e12cb992a428d47c79528e121c6e60001b619f92565b61777181868f8c60000161ab7b909392919063ffffffff16565b617804565b6177a27fcf7f4e51fe3f0bc10c198f16ff93843828e242b8051efa7406b5019937f9827260001b619f92565b6177ce7fa50f0617e744ec57e823d160757aa201e3b6fa8206e6142c41e3e987d40eb31460001b619f92565b6177fa7f98ac8b98fda279a2f1a2b904173d97fc03c64f601a4b5e45f3f0fed7625842b560001b619f92565b6178038d61abdb565b5b6178307f2286c7f54cf6de897e644542f09523e2e7fd84426afe298ab260f0750def64d260001b619f92565b61785c7f64b50abeb27541f8ab4212c6a317a48be0b6a2e7a95062c61b8e391569e5c9b360001b619f92565b82841115617923576178907f82b850944153f4132eb81c0b4f99519dbf5d5b7e76304cccb7eb8da975c0f44160001b619f92565b6178bc7f37d0af51d04486421c816294277dc0a3e09d09015a6119b91e323165dc0473a860001b619f92565b6178e87f3bdbd1d53f14282a503e4dcc91565dec869656810656b64ae0f16640f3e78efd60001b619f92565b61791e3384866178f8919061bea0565b8773ffffffffffffffffffffffffffffffffffffffff1661aa259092919063ffffffff16565b617950565b61794f7f394529dd88ec3080d2a22491cc6493fc48a00e228fe09f95f4dd2887a4a33f7c60001b619f92565b5b50505050505050505050505050565b600061798d7f9e0978ee7861dbf94eb7d84767e36ebf9494d7d82501d7bc685bfb520b89024260001b619f92565b6179b97f975b3935def4698eb1afc745c1e879e94ce14a84d69ced54654dbe2f44ea6ebd60001b619f92565b6179e57fe649f278db1dbe9ddb5441e7b23df20623cd6eea58c5e624ff67e6d05532f68360001b619f92565b60007feaf1cf088be31249661a61fc7743edf628a39210375613d4be0a9cda3ec06da69050617a367fd6423ebc471d1790b63ef0a7217d20a1ab317b36712726182a0f18905eb8888560001b619f92565b8091505090565b6000617a6b7f6b67fd7f8bf72319fd81e2519c69ef1585cc4355e2db51d8ae9c2b74ecca5fc960001b61a289565b617a977f7e3907657cad659239cdd0b0d2be848d8c8bcdadae446904262fbccaf4b2ca2060001b61a289565b617ac37f49bca5574fd2e54b0c5e7b533c1e99aa924d889574326b593b01c4fcca117bf360001b61a289565b6000617acd614bce565b9050617afb7f33be28a24b775457aab0c1874b73ccde4fdf88d17c8048c13a48471435a2f7ef60001b61a289565b617b277fcf348ae289855bd784cbf9c90fa5089eeba3c67abbc2adb3c82587993192c42660001b61a289565b6000617b31614af0565b9050617b5f7fe24b847882b212cc932e86347037c028b19dbc13727a9d47ed10f6e70f76939d60001b61a289565b617b8b7fee81e7e702aa88d583460507a41f30b235416cc38d2896e76fbf848e1dcfb72e60001b61a289565b60008260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c13ed2ec6040518163ffffffff1660e01b8152600401602060405180830381865afa158015617bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190617c20919061be6e565b9050617c4e7f6b4cfbdfe9edf4cdf6e720482283aa13c7109bf92e56a491fef0b3040c323bb960001b61a289565b617c7a7fc9fcb462b012ba58c3d9f04feb342824cd2d6860aeb0453a25f971370a80d68560001b61a289565b60008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637d51ce906040518163ffffffff1660e01b8152600401602060405180830381865afa158015617ceb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190617d0f919061be6e565b9050617d3d7f0d047e3bff6c8d94ee73f35bd2ca749f984a0e48c094c08e6d1a700ec1d7ad8360001b61a289565b617d697fd2b676209eb4fa974859e5d6c5b35e65fa31c2baf61257ef7e8cdfaf50aa276760001b61a289565b600081838560040154617d7c919061c6ab565b617d86919061c6d1565b9050617db47f50c01e4fc310d371099fc697fed77a3ae5f980b1a0eab30ef4d447f8e7ef310060001b61a289565b617de07f9c3ff4f4c0102273dee8dad65c273e3d71d8aaf3a358ec7654443988b917595b60001b61a289565b809550505050505090565b617e177f68448f902b4d899d071926abe0070fc91ab7a1a7bf52c13a5aef8a17514a62e760001b61a289565b617e437f73dbb8877329239c2872e8f57ca47b7dc8d089f18f7ded613c269b0cd3b33f5160001b61a289565b617e6f7ff391e2c96b64de172098de5989e57256fe69844e9363a6a8f9ad9d23bed0edc160001b61a289565b6000617e79614bce565b9050617ea77f8fc6ee57f00a36c7c72dc5fee94bf07344e69558a469b42bd41d89c33574643160001b61a289565b617ed37f08136b929a7913fe8d654eeb3b7e18691df38d5c7eed4195c253e1a25530d31360001b61a289565b6000617edd61795f565b9050617f0b7fb031b8bdfc2287de31013ba049ea6886e9cef45729eb7c8219db3ede9538283060001b61a289565b617f377fbd148e343a4e4d5707513cad8d941a02cc740fb4e7ccdc9b371b2d612171752460001b61a289565b6000617f41613935565b9050617f6f7f5cafa2afe5feb61933a00f9c7d8138c307e5bc42bcc3c47a064eb96848ba6c5a60001b61a289565b617f9b7fad8ead30aa5a96fa085ec08c1a612636a8d5ed5d6df758e1d0e44b30f5cf273460001b61a289565b6000816040518060e0016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a9004600b0b600b0b600b0b81526020016002820154815260200160038201548152602001600482015481526020016005820180546180549061c028565b80601f01602080910402602001604051908101604052809291908181526020018280546180809061c028565b80156180cd5780601f106180a2576101008083540402835291602001916180cd565b820191906000526020600020905b8154815290600101906020018083116180b057829003601f168201915b50505050508152505090506181047fdc138bf6dfeacfb9f535d0d8523f66a665e7ef17b8946d0b3bb9b603f2f0b42460001b61a289565b6181307fb790e2a40bf3c456b007a874720032772520bd114a0d3809d8ae41ed1cf82a9060001b61a289565b600061813a614af0565b6040518060e0016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a9004600b0b600b0b600b0b81526020016002820154815260200160038201548152602001600482015481526020016005820180546181f09061c028565b80601f016020809104026020016040519081016040528092919081815260200182805461821c9061c028565b80156182695780601f1061823e57610100808354040283529160200191618269565b820191906000526020600020905b81548152906001019060200180831161824c57829003601f168201915b50505050508152505090506182a07f3ec54e192e883ff73f0b80caa8d43077626d7d30c6f7993192f638032e862f9260001b61a289565b6182cc7fef975db2f2203e3b0e0a91e3b76d3081cd7e2b54a9303bd22f3478753307df9760001b61a289565b60008560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d41c3a656040518163ffffffff1660e01b8152600401602060405180830381865afa15801561833d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190618361919061bf86565b905061838f7f41de1f80c04f591081694669b76ae1fbe215b0acd775a57691ad95d71bf2698e60001b61a289565b6183bb7f2c70792328475e20032d3b27d4f840504e514a34de912f10fcb31ccc6cf4d37560001b61a289565b816000015184600001819055506183f47f6ff4dd4dcbd781b6445bf95797a1a30ce2b195c7dca11b6243f837b288aaab7060001b61a289565b6184207f7808e0ee00631009bb75acec4f60002af4183d57094652d75c588adf4b9fe87460001b61a289565b81602001518460010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506184937f0ee90b89254e0c4893ae0f73980c751ff334c25eacd558b84bb83f98af77796060001b61a289565b6184bf7fff769034878b670a3803252219278dfa63e6241080b154a7a16f81f12dfdbe2b60001b61a289565b81604001518460010160146101000a8154816bffffffffffffffffffffffff0219169083600b0b6bffffffffffffffffffffffff1602179055506185257f9e39c7ff27e40729219f998032ecde35ebc6723b559cc71815417bc92cbda56960001b61a289565b6185517f89fd31ad5baa19010cc46e00965cd53cf3847b12c85817e21526852e6990e94a60001b61a289565b8160600151846002018190555061858a7fbbc8298945b31b59d98fb3535ac226f374ed2e62959baebd2ad7cbdda98e1ff660001b61a289565b6185b67fdaf3dfb0ae8fcc3d87cbf598661c892e9c77e961d8d79c4f6eb44179116b8a8860001b61a289565b816080015184600301819055506185ef7f29b20665eca8ac26b82b272413df8376e4c9631a8902194cc6211715f7fd2eb460001b61a289565b61861b7fce929a8dc6db693722f83acbda3465682aa86de8451141a62ce93cf7774bc12c60001b61a289565b8160a0015184600401819055506186547fcee49c59dd89303648c899f8610c2b8aa75d955f557ae15d15673f714aee744760001b61a289565b6186807f48d8120fc93777adfb23f91ddbbe927ee40be7ddcd415b0107e10cce8ef2ca4360001b61a289565b8160c00151846005019081618695919061c3ac565b506186c27fcc726fdb291b6c3ebcb3a12dca0e21c14d634fd395eeba0fa810f3acc2701ef260001b61a289565b6186ee7f28adfc230c21aec299cf6ac1ccbbf00ff3fbe54ae3b4606dd38320c29c85325660001b61a289565b6186f661a72d565b6187227fe6f55766feadeefd2c491b674f562cbaa64e6bac80450879f3da003eb9c43b4560001b61a289565b61874e7f187324f79a14849720c28800124610b6cba62d662c7eca4e8d5ef81d44a8328b60001b61a289565b6000808273ffffffffffffffffffffffffffffffffffffffff16632ec8eec7306040518263ffffffff1660e01b815260040161878a919061c536565b608060405180830381865afa1580156187a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906187cb919061c54f565b5050915091506187fd7f9f7babb4efe054273f72de6dc4f2e38ef80b53240fdd8df1015658fe180190f960001b61a289565b6188297f2c6a961cd8573cf3baa04b790fcc0bac856051f1ec392a671089307e4de994fa60001b61a289565b60006188577f98e2eea4e1631736ca571082dd3ad9a8e0f1a7c0c13cfa70583bed2cafd5427460001b61a289565b6188837f4faa5b98ba524a1ddc4089e1ff91882def44925ac6dd79d7893d90fb20904e9460001b61a289565b60008284618891919061c587565b1261892d576188c27f547eea898f4f068182ca5075ea67d89b25fb83428478bff547219fe249f68ed660001b61a289565b6188ee7f6eb8e3a01ede6e74709fffd7a290e1f2ceebf52f911e10d81c53c427c02f7b2460001b61a289565b61891a7f5851e8dc44e51903cb0035abbdc8faacf69e7126714506a2f0f65d3a838d0c2960001b61a289565b8183618926919061c587565b905061895a565b6189597ff47ac4945b550ca89d079a2e4c9434810d3b586f953213e898db79a64fd2e14560001b61a289565b5b6189867fd33bdd21b2776dec22cdf190f2cb83937e00592c99384bb53ccc1e087596f5a560001b61a289565b6189b27f56457b2a37e32b0e01a08e83ed547b4a1d2cf7fd11f3135abcd36622c7eacf8060001b61a289565b60008860000160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638d997f6e8688604001516040518363ffffffff1660e01b8152600401618a1a92919061c491565b602060405180830381865afa158015618a37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190618a5b919061be6e565b9050618a897f827cdeb8bbb104c6e37d6b07413cae21db44f60bbedb608e3ab5bc34e6ed2fa460001b61a289565b618ab57f5e684f9598f51c7b45e82913b81e0bb2797f1253b001260dc22d9871dc888d5160001b61a289565b6000618abf61a8b0565b9050618aed7f5e13a88896404a9bec16bb05d69691ea96ac64ceae8ba6e47f322123406abbcd60001b61a289565b618b197fb8711246ad14e806a370253f2b59125b9436af704d88290f6e4cc13fa5b1bc3060001b61a289565b81831015618d0757618b4d7f6ea03105c0814356d86aeb90d86a06e9972802308e174252de875ba57178c02d60001b61a289565b618b797f16d30e84ddd8c6a9c290bcba19d0289416e41f0a2a1dd75a676e3c78b2c3082360001b61a289565b618ba57f0355ec6ed64473b4a86f2e04deeb388f77e280264a5bd0f54d386bb664b0558660001b61a289565b618bbf3082888d60000161a9c5909392919063ffffffff16565b618beb7fb862fb8756eb01df73b3f49d11771ff8fec5fee0eca07d4103b73ac8a5455f7660001b61a289565b618c177fa531596dd26ac99baa1bb330cad5a02d9d1b68b1aea215ed9bf28096e2f9d9c560001b61a289565b8573ffffffffffffffffffffffffffffffffffffffff16632ec8eec7306040518263ffffffff1660e01b8152600401618c50919061c536565b608060405180830381865afa158015618c6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190618c91919061c54f565b9050508095508196505050618cc87f0dbd70ff24c86b393d7025e01529038a5ce8405c84fe3267c219538eca77b89060001b61a289565b618cf47ff642b33d001b220e89d59380c51c789bdd6740969651555b4ea5d2e94968eaf360001b61a289565b8385618d00919061c587565b9250618d34565b618d337f5f916ef389e240ff8645c2da655e6697ef099baeb98cfa732a15f7e5bfbf05a260001b61a289565b5b618d607fcbc76f39078a42d9bdf1b72603944ee335438f172f7f849135e1e4e5b6eddf0b60001b61a289565b618d8c7f963df5bdd4d9bdd8e9e644f1d0f5c37d8c71d6f03860618c52bef827b174274360001b61a289565b81831061902e57618dbf7fb05d01711375db29e189de38e6bf11fa4e9bc14d0423385ba9af36f34f6f8d9c60001b61a289565b618deb7fc8ca557065d1e8af8d6c52c8e142f589a46fc0c5a77c2ef7288e2f93b7142bf760001b61a289565b618e177fbf9b5fcf38a521e68294d0030009c051858ed126fd44ad7ef0597344e169a5a360001b61a289565b8960000160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166339255d5b8b60000160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168c60000160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166394229ecb8a8c60200151308e60400151600067ffffffffffffffff811115618eec57618eeb61bd64565b5b6040519080825280601f01601f191660200182016040528015618f1e5781602001600182028036833780820191505090505b50604051602401618f3395949392919061c6f9565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050600067ffffffffffffffff811115618f9057618f8f61bd64565b5b6040519080825280601f01601f191660200182016040528015618fc25781602001600182028036833780820191505090505b506040518463ffffffff1660e01b8152600401618fe19392919061c741565b6000604051808303816000875af192505050801561902257506040513d6000823e3d601f19601f8201168201806040525081019061901f919061c77f565b60015b1561902957505b61905b565b61905a7ffba9ac85f13ac3c4351e0f9f5619ee20c91463b4af51e438cdf25dea36802b4a60001b61a289565b5b6190877fd6f3ae4a08f00bc4dc54b242377f3753440c77ab2944ace20ea9a19eb3aa6e3e60001b61a289565b6190b37f628424e629290a23f7448905b6304484ecd8e1ad7747bc2b634e72249039957660001b61a289565b60008a60000160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6a1e8888830856040518463ffffffff1660e01b81526004016191199392919061bfb8565b608060405180830381865afa158015619136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061915a919061bfe5565b505091505061918b7fbea41f0f10c095b7950d16fe471c7bfc1e1657f777e38b18859addea769e611160001b61a289565b6191b77f95ddad605c3a2eccec0671f0a66553944dafe0443f330fa70e77d2c7bb50474660001b61a289565b600081600b0b131561926a576191ef7f972dbbc3c1d960ecd04ae6393712adc377f5f96b1eab5860eaea790d57635cf460001b61a289565b61921b7f968d1ec22ef9f0ff4be5ef959e719b6204547240a12b7b59ef2af6eec6a1f58260001b61a289565b6192477f899e269f1aed601432b7924fc6ac5fc1895d671a5268c9074f2911af8cfa222160001b61a289565b61926582888a604001518e60000161ab7b909392919063ffffffff16565b61938d565b6192967f4b017760ed667d34381941b85632694a55b63d33dec2a637575cba6ce96b8ca160001b61a289565b6192c27f3580762e5de1bca0d0d1852a7f2cc6ab2c6cfe916ae201ba8515cfe6a96d103660001b61a289565b82841061935f576192f57ffe770986c524f0067ae5de06e754eb1249fee3a187bf5241c9bc7ee64cb0d5e060001b61a289565b6193217f69102394ad8e7008e4d87d9bf4bd4eb8881577dbd65eb4882e32d798941c9d0360001b61a289565b61934d7fbf5dae54c2a4313dd2b1dd82b8d56ce9e70320dc996f30e08d4bb83d80a464e260001b61a289565b61935a886040015161abdb565b61938c565b61938b7fa7cfe655cf591d87aa03c06c36fddd7c5f752a68d215c20d984cca325774d6df60001b61a289565b5b5b6193b97f0d3f798de5a8baa51e2caa4d2182a4d4e026fb4d91970ce931e15e9a24a74bad60001b61a289565b6193e57f849c49df7daca9c089cae0fbccd81656399c1acc62957aac0e0d6335d667d49c60001b61a289565b6194117fa269dd80542ea306826c64135af1d16fe58e7c3dce8614a5c69f8aa89513ff5860001b61a289565b600061943f7fe5b53856d871be6373a7651a5fa12f3851e16938c4607a745454ef07fdcfa66960001b61a289565b61946b7f3da21fdacf76ade4ef2b8d87ffff831e8eccff91877ca9bd897d5c4580b8edb660001b61a289565b60006194997f9dc8e4b599202d3968c96e2e9c5926998d9dec5e17db6cbb13b064c88fc1e96860001b61a289565b6194c57f65970be68a4ae6a4c2496a44d43bac23c1896a3532d3e1b6e2e10f08677bf4e260001b61a289565b8486111561980a576194f97f63f7630fc4235190886dfc0db97f6296112b7e1a39a5a7f7dbf7f2bdba6dda5a60001b61a289565b6195257fa95270e848af13314a627fd7aa180419f37f1735506c4935980ad9b3199355f260001b61a289565b6195517f6891d432d55140bbe88954f728fc471eed0e0a3d97c7c703cdbad3c9233f2f5660001b61a289565b848661955d919061bea0565b955061958b7ff6ae10d791a592229344ef9da137a98b8a5f0b359b81315aea530e8ea92147ef60001b61a289565b6195b77f94bad6073993b1321f577f256028be78dcf962b8f0191810f8c70e16ff2488d160001b61a289565b60008b60a001518b60a001516195cd919061bea0565b90506195fb7f7aae342a9a89e69487cce33e052cecb14df1c6e02de83d2ea96c9d4413526f7560001b61a289565b6196277f847c2aa318d5e60d86dc7a295fb0e14f63cd2b3ebc1fa4fc9b39569605697fc260001b61a289565b8087111561977c5761965b7f9750e823f36878f1118d5b7d9249763661f63e48b7a6600eed735b9a1efa9c8f60001b61a289565b6196877fc91610554b7afc10274013f3a912eb24c4743fc2c956a7954adfb9aab0fa3e6160001b61a289565b6196b37f4f6d65ed623b91be3a22ae68aa877a6433f57086f35b4c3e62b1b88297f11dba60001b61a289565b8092506196e27fffa0c14d14fb0b6fa4d8171c7603ff859d34ac6ea0424d87b8a08500542b7fa860001b61a289565b61970e7fd6e8648e9aee54669575ccd060722e03c171ab09e720b806c3da34b265721c9a60001b61a289565b828761971a919061bea0565b96506197487f27e6882c15fec4073eec8de8e461ff6dea1134def96c0b9053da00ee545fd69060001b61a289565b6197747f9e70d57c8498869943658014748531009e8ee07afb19a5cfbe88df26d18a468160001b61a289565b869150619804565b6197a87f8934ad8e52a0be594eeda4db83623433b82ccc0ca0e6a9a0638f001fde91161860001b61a289565b6197d47f72d055a476fc0c4ecc0745f0741921f26b2df94b64b2629b3ee732f5dfbd2bd560001b61a289565b6198007f211782b8a039735af7b2d2072e7f618e2481db139ded775d36b8bf8b019929b960001b61a289565b8692505b50619837565b6198367f868da136227958915b30607ce5ffa64ff6e9fd7c9f4ab3a7ee3022772faab50d60001b61a289565b5b6198637f249b3f27872c2ece979ca505ce6e5cde27a55388c37716f283c73be7d3bc2a8660001b61a289565b61988f7f978e348e547fc2df86f9f07a0362b8d58e6d93c92304fe70f8b016ca5177a15e60001b61a289565b6000821115619950576198c47f589896589672b6b02c76bbc32ba26d07c1768c47c54c865a353cee4485a3f1cf60001b61a289565b6198f07faea7b28e51a5e229796af4d6ef541ebe31cd717796cb537f9ac65a3d6f890c7060001b61a289565b61991c7fe8a637582cde746b83c601fa8e2d23bf6bf33aa33cae89a39acee554828a4fcc60001b61a289565b61994b8a60200151838b73ffffffffffffffffffffffffffffffffffffffff1661aa259092919063ffffffff16565b61997d565b61997c7fc79872b966430f83a09d396d40252dfcd6c6300cd8e02f18f3ecab0077dee5ba60001b61a289565b5b6199a97fc894acb4eadfc918662d4b63d159110b1df7478c60b4db61e10e1d9797cc37ec60001b61a289565b6199d57fc5ffb107d098b31c179add85abe0e91f48d474eb46d4b24954d6e47f92a1183460001b61a289565b6000811115619a9657619a0a7f3a832dbc203c6f8fa1e48004ee9d4b17fb2b42f8003845a01de722b77cb9546060001b61a289565b619a367fbc262c36f6bdda0850e22defa1d1333bd62a6fd798d52d7d523642c53e78769d60001b61a289565b619a627f2f0958bb97a9c043bc56f860f84cbcd9a87ea682afc6638de4cffa7ceec76c3160001b61a289565b619a918b60200151828b73ffffffffffffffffffffffffffffffffffffffff1661aa259092919063ffffffff16565b619ac3565b619ac27f5124cc22afffc18259537211d454477777bcb450ea92fea19c7dbaf86df3b34060001b61a289565b5b5050619af17f94c542ed705bb407137e7bf4c19a2e5715eb412236aa987a14d25e598203965660001b61a289565b619b1d7f694790f4d27bef1866efa191481f336ecf3bc147f88276c85f5e5e6cedece15160001b61a289565b8a60000160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6a1e888888b60200151306040518463ffffffff1660e01b8152600401619b859392919061bfb8565b608060405180830381865afa158015619ba2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190619bc6919061bfe5565b9091925090505080915050619bfd7f3ebcb09a0995d71ee441f4b03fe2ae17e97385b1f1e401fe68fdde4644beac7f60001b61a289565b619c297fe3e27b7e17d4c0552f8756e86acb379daa0957b4a7d14d334bf3c57656e34e3b60001b61a289565b600081600b0b1315619cdc57619c617f7fdd9a4d69bd1abc4e62ac9996f1ce8b2d1c3ca74a2d9649db8e2ead1d0ed21f60001b61a289565b619c8d7ff2ab52d487061196431e11f35eb0c4559bfdf3891b72b256b70ea1f08af1cb0c60001b61a289565b619cb97f724a0f1a7bcbc48a82349a5adffa4c672a7bfb8c218466a4c4912ce3d65292b560001b61a289565b619cd7896020015130898e60000161a9c5909392919063ffffffff16565b619d09565b619d087f811b0c36a1a36ca459a1efd69e8fbf942f3d116094f0fc44e8184fe3af2dbc5e60001b61a289565b5b619d357f40b154decad4b9d85fd0dc75ee77458b46074eff638aac652a2c1770c8486a3860001b61a289565b619d617f6c4cf886628028ef0dcadd4912ec2f0e189c7683debafea834c5a7b5637a560860001b61a289565b8b60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e8a602001518a602001518f600201546040518463ffffffff1660e01b8152600401619dce9392919061c832565b600060405180830381600087803b158015619de857600080fd5b505af1158015619dfc573d6000803e3d6000fd5b50505050505050505050505050505050565b619e3a7fd107ee6817989ab565acf46cf4da4f0fe161cbc03bf91f7adefe19c4ae1847d660001b619f92565b619e667f58d91033f89cce407787b3f8ef2145351b74a5c2bcd8ac37c117f4e21b1d0e7660001b619f92565b619e927f0f71174eeb316dd47bcf220ce247cb5bc7cff76de76fee0806e5b629a5ab638760001b619f92565b6000619e9c613935565b9050619eca7f9ebe5560bfb9867be3d4a026681f612c0e9a2069c032d79dbe9b122d55f5185560001b619f92565b619ef67f47a7f01e938349e4eca2edb7f6c4dfb05bd3532a4f4a2986d203c75e8519c3c760001b619f92565b619f8d8383836005018054619f0a9061c028565b80601f0160208091040260200160405190810160405280929190818152602001828054619f369061c028565b8015619f835780601f10619f5857610100808354040283529160200191619f83565b820191906000526020600020905b815481529060010190602001808311619f6657829003601f168201915b5050505050616283565b505050565b50565b6000619fc37f8082b09841dcf8a739f5a8f0ca0dbf561c0209c8944f8de94941d45ed256e13960001b619f92565b619fef7f0af1d937e2b5a6843d095e3cfdddcdd568fb658f83d475b04b1e4e060b81877460001b619f92565b61a01b7f1d52999b88939151fc84998673943d723b6ca88e56660a8c69400e9e4d8e9de160001b619f92565b600061a025614bce565b905061a0537f7aedcfe7369b2cf8b4664abafebe7626e4bb019aa465cfb3e495b6047cb4ff8560001b619f92565b61a07f7f506ba5624d84364dd6ae1e10703edf9228f6ff88a6eade7cc0666e28227adb4d60001b619f92565b600061a08961795f565b905061a0b77f60da66c4c800ac03d0261d62f088e1f129d2afc96f569327491353357ac0199860001b619f92565b61a0e37fbd41c3b5f9f48e17eedde437b0391a7397b0d6ff152efa375c8943707bcd2cca60001b619f92565b60008160000160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6a1e8888460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d41c3a656040518163ffffffff1660e01b8152600401602060405180830381865afa15801561a197573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061a1bb919061bf86565b3061a1c461a8b0565b6040518463ffffffff1660e01b815260040161a1e29392919061bfb8565b608060405180830381865afa15801561a1ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061a223919061bfe5565b505091505061a2547fa637fbcd68df0de264c38f38ff4cc10a852085f716233979fb56b35bec7bb5ea60001b619f92565b61a2807f656c9083338e5f43d2d9fa3d5835459eb63019cdecd4e4d6c655839197d66a8860001b619f92565b80935050505090565b50565b600061a2ba7fee4275330143c87b2f69cb7189cc05aaac1364f7db13fd21bf3e2ab91657a67760001b619f92565b61a2e67fbaed8f6390ff5138da8399549d468be8e12fb5f24080f3b73b19a643a44cd97060001b619f92565b61a3127f2cb7ee538d30734c3172d163a216862a45e20b243266f7f6b895005168a8a03f60001b619f92565b600082848761a321919061c6ab565b61a32b919061c6d1565b905061a3597f311edfab847562ce720e65016fadd407fe93f8d4d7ea1f6bb1761f22182b590960001b619f92565b61a3857f2bd426d5fa78baee52c94118e026102690091b4896268ed22de2878411e5e68160001b619f92565b846bffffffffffffffffffffffff168114915050949350505050565b600061a3cf7f42df8d7ac62d1120623ce055a77080d51b88ce686d4aa35757c54c1a878b6bc660001b61a289565b61a3fb7fe44447cd22c1c5c4842e09519ef5a571dddbd9e46e87d868adb8f655d98fbf3760001b61a289565b61a4277fdad0a8c1d4c017c8ea97789c127003a798b015f6524c87e18b848621a941a80360001b61a289565b6000600281111561a43b5761a43a61c85d565b5b82600281111561a44e5761a44d61c85d565b5b0361a4e75761a47f7f2743bc68304c8f21afda86aa062b9076f8b81c58bfa2b5616d9d039afb51676660001b61a289565b61a4ab7fef8f38b13cc6a4f3f5c446aed2b25679c220137f6673fb3da0a20582eaa4560860001b61a289565b61a4d77f06d192f9b356825d4291cd5a35a77f039fe7755f8ef6b4ff1bf4db6baa7a597060001b61a289565b600180841660ff1614905061a69e565b61a5137f133913c3f211b5daf812043fec48896c2567e2949a73e556b7e2cccc7cc80a0c60001b61a289565b61a53f7fc14024169833bcfd32c98cb5909143d5bf833788273c20bdac73202e4678dc2060001b61a289565b6001600281111561a5535761a55261c85d565b5b82600281111561a5665761a56561c85d565b5b0361a6065761a5977fe3fda6fd63b7e77944b46a9163c598323bf33b866fc9e7a5520e047bcd19169660001b61a289565b61a5c37f0a3c4fc3c88d7206107bcb6fa92035578af6e5ade48b4c159f0098fa51e14a1760001b61a289565b61a5ef7ff55c1fa9745f5959a53bcdd1fa0dbe4d11e8d3941566fe1ed4f21cc878c3835d60001b61a289565b60018060018560ff16901c1660ff1614905061a69d565b61a6327fd481a2b6a259cb5a54bc09c4648b4a5d29a352db9c5defa802785c33d2b52cf760001b61a289565b61a65e7fe1ce6a3edb574e507fbab1d3e41896406fcd41e8a5a31302f350451bd4270f0e60001b61a289565b61a68a7f77c034e0b365339d61850ae03cb1de574c4ec6a0348844554a250043e7d7833d60001b61a289565b60018060028560ff16901c1660ff161490505b5b92915050565b61a727846323b872dd60e01b85858560405160240161a6c59392919061c832565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061ae5a565b50505050565b61a7597fa414cccd38b4e4f29d1dc630921c5521b2f7eb5ee39deee0e3aad065f667936660001b61a289565b61a7857f8756d2c67c5dfcc55173c432df13c7da7d041f3ed2bf61d4d962a121dbc26d4f60001b61a289565b61a7b17f9c83f46255667d8b0c822c90a29cca08bf4e0dbd5907d7430900ef2ee4a0f3da60001b61a289565b600061a7bb614af0565b905061a7e97f599d30cd7e99e8de59d04aa9e983c8a97c6b89a7b24483c64298c10bb6a6fc0260001b61a289565b61a8157fd97b5782cfeea8679f0deefe2f93c353184207df5fdb0ca72685c5ffb6ae8ade60001b61a289565b60008160010160146101000a8154816bffffffffffffffffffffffff0219169083600b0b6bffffffffffffffffffffffff16021790555061a8787ff70aa8f5151d7877950c73c4c6c460d2ba6d0373c4c162ffa69260905c0241fd60001b61a289565b61a8a47fb8559279d4ee6af2b6e8a20ad2d309ada304b4f985495fba2d67679092380abf60001b61a289565b42816000018190555050565b600061a8de7fa1c9801bc424edae1828709ab9e40c6e0c882f2aa8712a06dac98c2253846ea260001b619f92565b61a90a7f8f0b881387582b4a68cb909143d403cc8b0f9eec8ae112b400e20f684e63ac7f60001b619f92565b61a9367f6b816038bac4f3c1b8f69a4abd796689d768b8fca24aaa816c2ae53e1115c87560001b619f92565b600061a940614bce565b905061a96e7fad55ed57c0ec64401fecec77679a360cfa083620932f2c13a70325e1630a177760001b619f92565b61a99a7f943ed1f7955919a1f864db3d2f15d8580b889fcd550ac7ac84b017b358d0aacf60001b619f92565b8060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b61aa1f84848484600067ffffffffffffffff81111561a9e75761a9e661bd64565b5b6040519080825280601f01601f19166020018201604052801561aa195781602001600182028036833780820191505090505b5061af21565b50505050565b61aaa68363a9059cbb60e01b848460405160240161aa4492919061c873565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061ae5a565b505050565b606061ab088686868686600067ffffffffffffffff81111561aad05761aacf61bd64565b5b6040519080825280601f01601f19166020018201604052801561ab025781602001600182028036833780820191505090505b5061b0db565b905095945050505050565b606061ab708686868686600067ffffffffffffffff81111561ab385761ab3761bd64565b5b6040519080825280601f01601f19166020018201604052801561ab6a5781602001600182028036833780820191505090505b5061b29d565b905095945050505050565b61abd584848484600067ffffffffffffffff81111561ab9d5761ab9c61bd64565b5b6040519080825280601f01601f19166020018201604052801561abcf5781602001600182028036833780820191505090505b5061b45f565b50505050565b61ac077fc374e7e267378715451868328bb7dddd0bb2726fde492b66956eb529020e002e60001b619f92565b61ac337fd0c7be20b56478f6e46bd53a7e4b2119f0db6dd8e3c9f88c9dd2a2cea937cfc760001b619f92565b61ac5f7f0b479292b042d63227a6763badcda6325fa12fb22a6df90f34fc13cffb30867860001b619f92565b600061ac6961795f565b905061ac977ff672fd38ecc4d08f70ba79370755130a65eb330baba9d1a7d97b34ea6fcb941d60001b619f92565b61acc37f3309ee1abcbde54778829eb36a1b501e47a76c0bf76e4ed1ee3571f4d737d57560001b619f92565b600061accd614bce565b905061acfb7fa5b77d87aff0f8e04105d6c64254dd07d65d697ae4851b7952ef386bb01d59f360001b619f92565b61ad277fb20f1174ec55762447a1ac0df4f6a940466ff93a3c473e68dc0a534758c27c7d60001b619f92565b60008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d41c3a656040518163ffffffff1660e01b8152600401602060405180830381865afa15801561ad98573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061adbc919061bf86565b905061adea7f1aa6df831f7b8252ed849e3e043de692b0cbbf53667e52f5e6a715866aefca1660001b619f92565b61ae167f014159bafb31027fec4278e0f9c1bb165d69ad5de2af5726a61d2c0aa7b1f3c360001b619f92565b61ae548260030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682868660000161b619909392919063ffffffff16565b50505050565b600061aebc826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661b6799092919063ffffffff16565b905060008151111561af1c578080602001905181019061aedc919061bdde565b61af1b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161af129061c893565b60405180910390fd5b5b505050565b8460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166339255d5b8660010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168760010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b4b333c6868989600067ffffffffffffffff81111561afe45761afe361bd64565b5b6040519080825280601f01601f19166020018201604052801561b0165781602001600182028036833780820191505090505b5060405160240161b02a949392919061c8f7565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050846040518463ffffffff1660e01b815260040161b08b9392919061c741565b6000604051808303816000875af115801561b0aa573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061b0d3919061c77f565b505050505050565b60608660000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166339255d5b8860010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168960010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663354b9590888b8b8a600067ffffffffffffffff81111561b1a15761b1a061bd64565b5b6040519080825280601f01601f19166020018201604052801561b1d35781602001600182028036833780820191505090505b5060405160240161b1e895949392919061c935565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050856040518463ffffffff1660e01b815260040161b2499392919061c741565b6000604051808303816000875af115801561b268573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061b291919061c77f565b90509695505050505050565b60608660000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166339255d5b8860010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168960010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166394229ecb888b8b8a600067ffffffffffffffff81111561b3635761b36261bd64565b5b6040519080825280601f01601f19166020018201604052801561b3955781602001600182028036833780820191505090505b5060405160240161b3aa95949392919061c935565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050856040518463ffffffff1660e01b815260040161b40b9392919061c741565b6000604051808303816000875af115801561b42a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061b453919061c77f565b90509695505050505050565b8460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166339255d5b8660010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168760010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166350209a62878988600067ffffffffffffffff81111561b5225761b52161bd64565b5b6040519080825280601f01601f19166020018201604052801561b5545781602001600182028036833780820191505090505b5060405160240161b568949392919061c97d565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050846040518463ffffffff1660e01b815260040161b5c99392919061c741565b6000604051808303816000875af115801561b5e8573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061b611919061c77f565b505050505050565b61b67384848484600067ffffffffffffffff81111561b63b5761b63a61bd64565b5b6040519080825280601f01601f19166020018201604052801561b66d5781602001600182028036833780820191505090505b5061b691565b50505050565b606061b688848460008561b84b565b90509392505050565b8460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166339255d5b8660010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168760010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166362fc305e878988600067ffffffffffffffff81111561b7545761b75361bd64565b5b6040519080825280601f01601f19166020018201604052801561b7865781602001600182028036833780820191505090505b5060405160240161b79a949392919061c97d565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050846040518463ffffffff1660e01b815260040161b7fb9392919061c741565b6000604051808303816000875af115801561b81a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061b843919061c77f565b505050505050565b60608247101561b890576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161b8879061c9bc565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161b8b9919061ca20565b60006040518083038185875af1925050503d806000811461b8f6576040519150601f19603f3d011682016040523d82523d6000602084013e61b8fb565b606091505b509150915061b90c8783838761b918565b92505050949350505050565b6060831561b97a57600083510361b9725761b9328561b98d565b61b971576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161b9689061ca3e565b60405180910390fd5b5b82905061b985565b61b984838361b9b0565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008251111561b9c35781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161b9f7919061ca7c565b60405180910390fd5b6040518060e0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000600b0b8152602001600081526020016000815260200160008152602001606081525090565b80600b0b811461ba6557600080fd5b50565b6000806040838503121561ba7b57600080fd5b823561ba868161ba56565b80925050602083013590509250929050565b6000602082019050821515825292915050565b60008083601f84011261babd57600080fd5b8235905067ffffffffffffffff81111561bad657600080fd5b60208301915083602082850101111561baee57600080fd5b9250929050565b6000806020838503121561bb0857600080fd5b823567ffffffffffffffff81111561bb1f57600080fd5b61bb2b8582860161baab565b915080935050809150509250929050565b6000806000806060858703121561bb5257600080fd5b843561bb5d8161ba56565b8094505060208501359250604085013567ffffffffffffffff81111561bb8257600080fd5b61bb8e8782880161baab565b9150809350508091505092959194509250565b60005b8381101561bbbf57808201518184015260208101905061bba4565b50600083830152505050565b6000815180845261bbe381602086016020860161bba1565b6020601f19601f83011685010191505092915050565b602081528151602082015260018060a01b0360208301511660408201526040820151600b0b606082015260608201516080820152608082015160a082015260a082015160c0820152600060c083015160e08084015261bc5c61010084018261bbcb565b91505092915050565b600060208201905082825292915050565b60208152604160208201527f4346414261736550434f46616365743a2043616e206f6e6c7920706572666f7260408201527f6d20616374696f6e207768656e2070617965722062696420697320616374697660608201527f65000000000000000000000000000000000000000000000000000000000000006080820152600060a082019050919050565b60208152603c60208201527f4346414261736550434f46616365743a205061796572206973206e6f7420616c60408201527f6c6f77656420746f20706572666f726d207468697320616374696f6e0000000060608201526000608082019050919050565b634e487b7160e01b600052604160045260246000fd5b60208152603d60208201527f4346414261736550434f46616365743a204f6e6c79207061796572206973206160408201527f6c6c6f77656420746f20706572666f726d207468697320616374696f6e00000060608201526000608082019050919050565b60006020828403121561bdf057600080fd5b8151801515811461be0057600080fd5b8091505092915050565b60208152602e60208201527f43464150656e616c747942696446616365743a2050656e64696e67206269642060408201527f646f6573206e6f7420657869737400000000000000000000000000000000000060608201526000608082019050919050565b60006020828403121561be8057600080fd5b8151905092915050565b634e487b7160e01b600052601160045260246000fd5b600082820390508181111561beb85761beb761be8a565b5b92915050565b60208152602a60208201527f43464150656e616c747942696446616365743a2042696420706572696f64206860408201527f617320656c61707365640000000000000000000000000000000000000000000060608201526000608082019050919050565b60208152602660208201527f43464150656e616c747942696446616365743a2050656e64696e67206269642060408201527f657869737473000000000000000000000000000000000000000000000000000060608201526000608082019050919050565b60006020828403121561bf9857600080fd5b815160018060a01b038116811461bfae57600080fd5b8091505092915050565b600060608201905060018060a01b0380861683528085166020840152808416604084015250949350505050565b6000806000806080858703121561bffb57600080fd5b84519350602085015161c00d8161ba56565b80935050604085015191506060850151905092959194509250565b60008160011c9050600182168061c04057607f821691505b60208210810361c06057634e487b7160e01b600052602260045260246000fd5b50919050565b60208152602e60208201527f43464150656e616c747942696446616365743a2042696420706572696f64206860408201527f6173206e6f7420656c617073656400000000000000000000000000000000000060608201526000608082019050919050565b60208152602c60208201527f4c696243464150656e616c74794269643a2050656e64696e672062696420616c60408201527f726561647920657869737473000000000000000000000000000000000000000060608201526000608082019050919050565b60208152602a60208201527f4c696243464150656e616c74794269643a20496e636f727265637420666f722060408201527f73616c652070726963650000000000000000000000000000000000000000000060608201526000608082019050919050565b60208152603a60208201527f4c696243464150656e616c74794269643a204e657720636f6e7472696275746960408201527f6f6e2072617465206973206e6f74206869676820656e6f75676800000000000060608201526000608082019050919050565b60008060006060848603121561c20b57600080fd5b83519250602084015160ff8116811461c22357600080fd5b80925050604084015161c2358161ba56565b809150509250925092565b60208152603460208201527f4c696243464150656e616c74794269643a204352454154455f464c4f5720706560408201527f726d697373696f6e206e6f74206772616e74656400000000000000000000000060608201526000608082019050919050565b60208152604760208201527f4c696243464150656e616c74794269643a204352454154455f464c4f5720706560408201527f726d697373696f6e20646f6573206e6f74206861766520656e6f75676820616c60608201527f6c6f77616e6365000000000000000000000000000000000000000000000000006080820152600060a082019050919050565b806000525060006020600020905090565b601f82111561c38d57600081815260208120601f850160051c8101602086101561c367578190505b601f850160051c820191505b8181101561c3895782815560018101905061c373565b5050505b505050565b60008260011b6000198460031b1c19831617905092915050565b815167ffffffffffffffff81111561c3c75761c3c661bd64565b5b61c3db8161c3d5845461c028565b8461c33f565b60006020809150601f83116001811461c40f576000841561c3fd578387015190505b61c407858261c392565b86555061c46e565b601f19841661c41d8661c32e565b60005b8281101561c443578589015182556001820191508486019550848101905061c420565b508582101561c462578488015160001960f88860031b161c1981168255505b505060018460011b0185555b505050505050565b600060408201905083600b0b82528260208301529392505050565b600060408201905060018060a01b038416825282600b0b60208301529392505050565b600082820190508082111561c4cc5761c4cb61be8a565b5b92915050565b60208152603e60208201527f4c696243464150656e616c74794269643a204e657720636f6e7472696275746960408201527f6f6e2072617465206d757374206265203e3d2070656e64696e6720626964000060608201526000608082019050919050565b600060208201905060018060a01b038316825292915050565b6000806000806080858703121561c56557600080fd5b8451935060208501519250604085015191506060850151905092959194509250565b60008282019050828112600083128115811682821516171561c5ac5761c5ab61be8a565b5b505092915050565b60208152600061c5c7602083018461bbcb565b905092915050565b60208152602d60208201527f4c69624346414261736550434f3a204d696e696d756d20666f722073616c652060408201527f7072696365206e6f74206d65740000000000000000000000000000000000000060608201526000608082019050919050565b60208152602760208201527f4c69624346414261736550434f3a20496e636f727265637420666f722073616c60408201527f652070726963650000000000000000000000000000000000000000000000000060608201526000608082019050919050565b600060208201905082600b0b825292915050565b600081600019048311821515161561c6c65761c6c561be8a565b5b828202905092915050565b60008261c6ee57634e487b7160e01b600052601260045260246000fd5b828204905092915050565b600060018060a01b038088168352808716602084015280861660408401525083600b0b606083015260a0608083015261c73560a083018461bbcb565b90509695505050505050565b60018060a01b038416815260606020820152600061c762606083018561bbcb565b828103604084015261c774818561bbcb565b915050949350505050565b60006020828403121561c79157600080fd5b815167ffffffffffffffff8082111561c7a957600080fd5b818401915084601f83011261c7bd57600080fd5b81518181111561c7d05761c7cf61bd64565b5b601f1960405181603f83601f860116011681019150808210848311171561c7fa5761c7f961bd64565b5b8160405282815287602084870101111561c81357600080fd5b61c82483602083016020880161bba1565b809550505050505092915050565b600060608201905060018060a01b038086168352808516602084015250826040830152949350505050565b634e487b7160e01b600052602160045260246000fd5b600060408201905060018060a01b03841682528260208301529392505050565b60208152602a60208201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60408201527f6f7420737563636565640000000000000000000000000000000000000000000060608201526000608082019050919050565b600060018060a01b03808716835280861660208401528085166040840152506080606083015261c92a608083018461bbcb565b905095945050505050565b600060018060a01b038088168352808716602084015280861660408401525083600b0b606083015260a0608083015261c97160a083018461bbcb565b90509695505050505050565b600060018060a01b03808716835280861660208401525083600b0b60408301526080606083015261c9b1608083018461bbcb565b905095945050505050565b60208152602660208201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60408201527f722063616c6c000000000000000000000000000000000000000000000000000060608201526000608082019050919050565b6000825161ca3281846020870161bba1565b80830191505092915050565b60208152601d60208201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060408201526000606082019050919050565b60208152600061ca8f602083018461bbcb565b90509291505056fea2646970667358221220e1a372e8be4c86a5a7b532d9de0aa69385f534f46caceb3554fa18ab37af8f8464736f6c63430008100033"; type CFAPenaltyBidFacetConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/PCOLicenseDiamond__factory.ts b/typechain-types/factories/PCOLicenseDiamond__factory.ts index 26fb784..a3aa479 100644 --- a/typechain-types/factories/PCOLicenseDiamond__factory.ts +++ b/typechain-types/factories/PCOLicenseDiamond__factory.ts @@ -288,7 +288,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b506000620000296200048160201b62000d1a1760201c565b60408051600c8082526101a08201909252919250600091906020820161018080368337019050509050631f931c1c60e01b816000815181106200007057620000706200103a565b6001600160e01b0319909216602092830291909101820152620000aa9083906307e4c70760e21b9060019062000d3e620004a5821b17901c565b637a0ed62760e01b81600181518110620000c857620000c86200103a565b6001600160e01b03199092166020928302919091019091015280516356fe50af60e11b90829060029081106200010257620001026200103a565b6001600160e01b03199092166020928302919091019091015280516314bbdacb60e21b90829060039081106200013c576200013c6200103a565b6001600160e01b03199092166020928302919091019091015280516366ffd66360e11b90829060049081106200017657620001766200103a565b6001600160e01b0319909216602092830291909101820152620001b09083906348e2b09360e01b9060019062000d3e620004a5821b17901c565b6301ffc9a760e01b81600581518110620001ce57620001ce6200103a565b6001600160e01b0319909216602092830291909101820152620002089083906301ffc9a760e01b9060019062000d3e620004a5821b17901c565b638da5cb5b60e01b816006815181106200022657620002266200103a565b6001600160e01b031990921660209283029190910190910152805163455a8a8560e11b90829060079081106200026057620002606200103a565b6001600160e01b031990921660209283029190910190910152805163f2fde38b60e01b90829060089081106200029a576200029a6200103a565b6001600160e01b03199092166020928302919091019091015280516379ba509760e01b9082906009908110620002d457620002d46200103a565b6001600160e01b03199092166020928302919091018201526200030e9083906307f5828d60e41b9060019062000d3e620004a5821b17901c565b632c40805960e01b81600a815181106200032c576200032c6200103a565b6001600160e01b0319909216602092830291909101909101528051639142376560e01b908290600b9081106200036657620003666200103a565b6001600160e01b03199290921660209283029190910190910152604080516001808252818301909252600091816020015b604080516060808201835260008083526020830152918101919091528152602001906001900390816200039757905050604080516060810190915230815290915060208101600081526020018381525081600081518110620003fd57620003fd6200103a565b60200260200101819052506200044a81600060405180602001604052806000815250620004346200053360201b62000dc61760201c565b6200055760201b62000dea17909392919060201c565b6200047833620004646200078360201b62000fc61760201c565b620007a760201b62000fea1790919060201c565b505050620011df565b7f326d0c59a7612f6a9919e2a8ee333c80ba689d8ba2634de89c85cbb04832e70590565b6001600160e01b03198083169003620005055760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e746572666163652069640000000060448201526064015b60405180910390fd5b6001600160e01b03199190911660009081526020929092526040909120805460ff1916911515919091179055565b7f177481ac65e4292921c69f62d1cc7f57541261e5d61c8175cf4e36a01c9bfc9390565b600184015461ffff811690819060009060071615620005885750600381901c60009081526002870160205260409020545b60005b8651811015620006f1576000878281518110620005ac57620005ac6200103a565b60200260200101519050600081602001519050600082604001515111620006225760405162461bcd60e51b815260206004820152602360248201527f4469616d6f6e64426173653a206e6f2073656c6563746f7273207370656369666044820152621a595960ea1b6064820152608401620004fc565b600081600281111562000639576200063962001050565b0362000668576200065d8585848d620007c460201b6200100717909392919060201c565b9095509350620006e6565b60018160028111156200067f576200067f62001050565b03620006a5576200069f828b6200099660201b620011ba1790919060201c565b620006e6565b6002816002811115620006bc57620006bc62001050565b03620006e657620006e08585848d62000bd760201b620013b217909392919060201c565b90955093505b50506001016200058b565b508282146200070e5760018701805461ffff191661ffff84161790555b60078216156200073157600382901c600090815260028801602052604090208190555b7f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738686866040516200076693929190620010ba565b60405180910390a16200077a858562000ea5565b50505050505050565b7f8a22373512790c48b83a1fe2efdd2888d4a917bcdc24d0adf63e60f67168046090565b81546001600160a01b0319166001600160a01b0391909116179055565b805160009081906001600160a01b03163014806200080057506200080083600001516001600160a01b03166200103460201b620003a41760201c565b6200085a5760405162461bcd60e51b815260206004820152602360248201527f4469616d6f6e64426173653a204144442074617267657420686173206e6f20636044820152626f646560e81b6064820152608401620004fc565b60005b83604001515181101562000989576000846040015182815181106200088657620008866200103a565b6020908102919091018101516001600160e01b031981166000908152918a9052604090912054909150606081901c156200090f5760405162461bcd60e51b815260206004820152602360248201527f4469616d6f6e64426173653a2073656c6563746f7220616c726561647920616460448201526219195960ea1b6064820152608401620004fc565b85516001600160e01b0319838116600081815260208d90526040902060609390931b6001600160601b0319168b1790925560058a901b60e090811692831c91831c199990991617978190036200097957600389901c600090815260028b0160205260408120989098555b505050600195860195016200085d565b5093959294509192505050565b620009b981600001516001600160a01b03166200103460201b620003a41760201c565b62000a175760405162461bcd60e51b815260206004820152602760248201527f4469616d6f6e64426173653a205245504c4143452074617267657420686173206044820152666e6f20636f646560c81b6064820152608401620004fc565b60005b81604001515181101562000bd25760008260400151828151811062000a435762000a436200103a565b6020908102919091018101516001600160e01b03198116600090815291869052604090912054909150606081901c8062000ac05760405162461bcd60e51b815260206004820152601f60248201527f4469616d6f6e64426173653a2073656c6563746f72206e6f7420666f756e64006044820152606401620004fc565b306001600160a01b0382160362000b145760405162461bcd60e51b815260206004820152602260248201526000805160206200317a8339815191526044820152616c6560f01b6064820152608401620004fc565b84600001516001600160a01b0316816001600160a01b03160362000b8c5760405162461bcd60e51b815260206004820152602860248201527f4469616d6f6e64426173653a205245504c41434520746172676574206973206960448201526719195b9d1a58d85b60c21b6064820152608401620004fc565b5083516001600160e01b031992909216600090815260208690526040902060609290921b6001600160601b0319166001600160601b039190911617905560010162000a1a565b505050565b805160009081906001600160a01b03161562000c4e5760405162461bcd60e51b815260206004820152602f60248201527f4469616d6f6e64426173653a2052454d4f564520746172676574206d7573742060448201526e6265207a65726f206164647265737360881b6064820152608401620004fc565b600385901c6007861660005b85604001515181101562000e915760008660400151828151811062000c835762000c836200103a565b6020908102919091018101516001600160e01b031981166000908152918c9052604090912054909150606081901c62000cff5760405162461bcd60e51b815260206004820152601f60248201527f4469616d6f6e64426173653a2073656c6563746f72206e6f7420666f756e64006044820152606401620004fc565b30606082901c0362000d4e5760405162461bcd60e51b815260206004820152602260248201526000805160206200317a8339815191526044820152616c6560f01b6064820152608401620004fc565b600089900362000d7c57600019909401600081815260028c0160205260409020549850936007935062000d84565b600019909301925b600584901b89901b6000806001600160e01b03198084169086161462000dd7576001600160e01b03198316600090815260208f90526040902080546001600160601b0319166001600160601b0386161790555b50506001600160e01b03198316600090815260208d90526040812055611fff600383901c1660e0600584901b1687821462000e3c57600082815260028f016020526040902080546001600160e01b031980841c19909116908516831c17905562000e60565b80836001600160e01b031916901c816001600160e01b031960001b901c198d16179b505b8660000362000e7f57600088815260028f01602052604081208190559b505b50506001909301925062000c5a915050565b5060039190911b1796939550929350505050565b8051156001600160a01b038316151462000f195760405162461bcd60e51b815260206004820152602e60248201527f4469616d6f6e64426173653a20696e76616c696420696e697469616c697a617460448201526d696f6e20706172616d657465727360901b6064820152608401620004fc565b6001600160a01b0382161562001030576001600160a01b038216301462000fbe5762000f59826001600160a01b03166200103460201b620003a41760201c565b62000fbe5760405162461bcd60e51b815260206004820152602e60248201527f4469616d6f6e64426173653a20696e697469616c697a6174696f6e207461726760448201526d657420686173206e6f20636f646560901b6064820152608401620004fc565b6000826001600160a01b03168260405162000fda9190620011c1565b600060405180830381855af49150503d806000811462001017576040519150601f19603f3d011682016040523d82523d6000602084013e6200101c565b606091505b505090508062000bd2573d6000803e3d6000fd5b5050565b3b151590565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b60005b838110156200108357818101518382015260200162001069565b50506000910152565b60008151808452620010a681602086016020860162001066565b601f01601f19169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b848110156200118f57898403607f19018652815180516001600160a01b031685528381015189860190600381106200112b57634e487b7160e01b600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b80831015620011795783516001600160e01b03191682529286019260019290920191908601906200114d565b50978501979550505090820190600101620010e3565b50506001600160a01b038a16908801528681036040880152620011b381896200108c565b9a9950505050505050505050565b60008251620011d581846020870162001066565b9190910192915050565b611f8b80620011ef6000396000f3fe6080604052600436106100ab5760003560e01c80638ab5150a116100645780638ab5150a1461022a5780638da5cb5b1461023f5780639142376514610254578063adfca15e14610274578063cdffacc6146102a1578063f2fde38b146102c1576100b2565b806301ffc9a71461014f5780631f931c1c146101845780632c408059146101a457806352ef6b2c146101d157806379ba5097146101f35780637a0ed62714610208576100b2565b366100b257005b60006100bc6102e1565b90506001600160a01b0381163b6101295760405162461bcd60e51b815260206004820152602660248201527f50726f78793a20696d706c656d656e746174696f6e206d75737420626520636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e808015610148573d6000f35b3d6000fd5b005b34801561015b57600080fd5b5061016f61016a3660046118cc565b6103aa565b60405190151581526020015b60405180910390f35b34801561019057600080fd5b5061014d61019f366004611947565b6103df565b3480156101b057600080fd5b506101b9610474565b6040516001600160a01b03909116815260200161017b565b3480156101dd57600080fd5b506101e6610490565b60405161017b91906119f9565b3480156101ff57600080fd5b5061014d610633565b34801561021457600080fd5b5061021d6106b7565b60405161017b9190611a8b565b34801561023657600080fd5b506101b9610adf565b34801561024b57600080fd5b506101b9610aee565b34801561026057600080fd5b5061014d61026f366004611b08565b610af8565b34801561028057600080fd5b5061029461028f366004611b08565b610b5d565b60405161017b9190611b23565b3480156102ad57600080fd5b506101b96102bc3660046118cc565b610ca9565b3480156102cd57600080fd5b5061014d6102dc366004611b08565b610cd6565b600080356001600160e01b03191681527f177481ac65e4292921c69f62d1cc7f57541261e5d61c8175cf4e36a01c9bfc9360208190526040822054819060601c8061039d575060038201546001600160a01b03168061039d5760405162461bcd60e51b815260206004820152603260248201527f4469616d6f6e64426173653a206e6f20666163657420666f756e6420666f722060448201527166756e6374696f6e207369676e617475726560701b6064820152608401610120565b9392505050565b3b151590565b60006103d9826103b8610d1a565b906001600160e01b0319166000908152602091909152604090205460ff1690565b92915050565b6103e761164a565b6001600160a01b0316336001600160a01b0316146104175760405162461bcd60e51b815260040161012090611b65565b61046d6104248587611c30565b8484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506104659250610dc6915050565b929190610dea565b5050505050565b600061047e610dc6565b600301546001600160a01b0316919050565b6060600061049c610dc6565b600181015490915061ffff1667ffffffffffffffff8111156104c0576104c0611b9c565b6040519080825280602002602001820160405280156104e9578160200160208202803683370190505b50915060008060005b600184015461ffff1682101561062b576000818152600285016020526040812054905b6008811015610616578361052881611d7a565b600188015490955061ffff168511905061061657600581901b82901b6001600160e01b0319811660009081526020889052604081205460601c90805b888110156105b9578a818151811061057e5761057e611d93565b60200260200101516001600160a01b0316836001600160a01b0316036105a757600191506105b9565b806105b181611d7a565b915050610564565b5080156105c857505050610604565b818a89815181106105db576105db611d93565b6001600160a01b0390921660209283029190910190910152876105fd81611d7a565b9850505050505b8061060e81611d7a565b915050610515565b5050808061062390611d7a565b9150506104f2565b505082525090565b61063b611663565b6001600160a01b0316336001600160a01b0316146106ad5760405162461bcd60e51b815260206004820152602960248201527f536166654f776e61626c653a2073656e646572206d757374206265206e6f6d696044820152683732b29037bbb732b960b91b6064820152608401610120565b6106b561168b565b565b606060006106c3610dc6565b600181015490915061ffff1667ffffffffffffffff8111156106e7576106e7611b9c565b60405190808252806020026020018201604052801561072d57816020015b6040805180820190915260008152606060208201528152602001906001900390816107055790505b50600182015490925060009061ffff1667ffffffffffffffff81111561075557610755611b9c565b60405190808252806020026020018201604052801561077e578160200160208202803683370190505b50905060008060005b600185015461ffff16821015610a6d576000818152600286016020526040812054905b6008811015610a5857836107bd81611d7a565b600189015490955061ffff1685119050610a5857600581901b82901b6001600160e01b0319811660009081526020899052604081205460601c90805b8881101561091657826001600160a01b03168c828151811061081d5761081d611d93565b6020026020010151600001516001600160a01b03160361090457838c828151811061084a5761084a611d93565b6020026020010151602001518b838151811061086857610868611d93565b602002602001015160ff168151811061088357610883611d93565b60200260200101906001600160e01b03191690816001600160e01b0319168152505060ff8a82815181106108b9576108b9611d93565b602002602001015160ff16106108ce57600080fd5b8981815181106108e0576108e0611d93565b6020026020010180518091906108f590611da9565b60ff1690525060019150610916565b8061090e81611d7a565b9150506107f9565b50801561092557505050610a46565b818b898151811061093857610938611d93565b60209081029190910101516001600160a01b03909116905260018a015461ffff1667ffffffffffffffff81111561097157610971611b9c565b60405190808252806020026020018201604052801561099a578160200160208202803683370190505b508b89815181106109ad576109ad611d93565b602002602001015160200181905250828b89815181106109cf576109cf611d93565b6020026020010151602001516000815181106109ed576109ed611d93565b60200260200101906001600160e01b03191690816001600160e01b031916815250506001898981518110610a2357610a23611d93565b60ff9092166020928302919091019091015287610a3f81611d7a565b9850505050505b80610a5081611d7a565b9150506107aa565b50508080610a6590611d7a565b915050610787565b5060005b82811015610ad4576000848281518110610a8d57610a8d611d93565b602002602001015160ff1690506000878381518110610aae57610aae611d93565b602002602001015160200151905081815250508080610acc90611d7a565b915050610a71565b508185525050505090565b6000610ae9611663565b905090565b6000610ae961164a565b610b0061164a565b6001600160a01b0316336001600160a01b031614610b305760405162461bcd60e51b815260040161012090611b65565b80610b39610dc6565b60030180546001600160a01b0319166001600160a01b039290921691909117905550565b60606000610b69610dc6565b600181015490915061ffff1667ffffffffffffffff811115610b8d57610b8d611b9c565b604051908082528060200260200182016040528015610bb6578160200160208202803683370190505b50915060008060005b600184015461ffff16821015610c9f576000818152600285016020526040812054905b6008811015610c8a5783610bf581611d7a565b600188015490955061ffff1685119050610c8a57600581901b82901b6001600160e01b0319811660009081526020889052604090205460601c6001600160a01b038a1603610c775780888781518110610c5057610c50611d93565b6001600160e01b03199092166020928302919091019091015285610c7381611d7a565b9650505b5080610c8281611d7a565b915050610be2565b50508080610c9790611d7a565b915050610bbf565b5050825250919050565b6000610cb3610dc6565b6001600160e01b0319909216600090815260209290925250604090205460601c90565b610cde61164a565b6001600160a01b0316336001600160a01b031614610d0e5760405162461bcd60e51b815260040161012090611b65565b610d1781611708565b50565b7f326d0c59a7612f6a9919e2a8ee333c80ba689d8ba2634de89c85cbb04832e70590565b6001600160e01b03198083169003610d985760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e74657266616365206964000000006044820152606401610120565b6001600160e01b03199190911660009081526020929092526040909120805460ff1916911515919091179055565b7f177481ac65e4292921c69f62d1cc7f57541261e5d61c8175cf4e36a01c9bfc9390565b600184015461ffff811690819060009060071615610e1a5750600381901c60009081526002870160205260409020545b60005b8651811015610f3a576000878281518110610e3a57610e3a611d93565b60200260200101519050600081602001519050600082604001515111610eae5760405162461bcd60e51b815260206004820152602360248201527f4469616d6f6e64426173653a206e6f2073656c6563746f7273207370656369666044820152621a595960ea1b6064820152608401610120565b6000816002811115610ec257610ec2611dc8565b03610edd57610ed38a868685611007565b9095509350610f30565b6001816002811115610ef157610ef1611dc8565b03610f0557610f008a836111ba565b610f30565b6002816002811115610f1957610f19611dc8565b03610f3057610f2a8a8686856113b2565b90955093505b5050600101610e1d565b50828214610f565760018701805461ffff191661ffff84161790555b6007821615610f7857600382901c600090815260028801602052604090208190555b7f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673868686604051610fab93929190611e2e565b60405180910390a1610fbd8585611711565b50505050505050565b7f8a22373512790c48b83a1fe2efdd2888d4a917bcdc24d0adf63e60f67168046090565b81546001600160a01b0319166001600160a01b0391909116179055565b805160009081906001600160a01b031630148061102e575082516001600160a01b03163b15155b6110865760405162461bcd60e51b815260206004820152602360248201527f4469616d6f6e64426173653a204144442074617267657420686173206e6f20636044820152626f646560e81b6064820152608401610120565b60005b8360400151518110156111ad576000846040015182815181106110ae576110ae611d93565b6020908102919091018101516001600160e01b031981166000908152918a9052604090912054909150606081901c156111355760405162461bcd60e51b815260206004820152602360248201527f4469616d6f6e64426173653a2073656c6563746f7220616c726561647920616460448201526219195960ea1b6064820152608401610120565b85516001600160e01b0319838116600081815260208d90526040902060609390931b6001600160601b0319168b1790925560058a901b60e090811692831c91831c1999909916179781900361119e57600389901c600090815260028b0160205260408120989098555b50505060019586019501611089565b5093959294509192505050565b80516001600160a01b03163b6112225760405162461bcd60e51b815260206004820152602760248201527f4469616d6f6e64426173653a205245504c4143452074617267657420686173206044820152666e6f20636f646560c81b6064820152608401610120565b60005b8160400151518110156113ad5760008260400151828151811061124a5761124a611d93565b6020908102919091018101516001600160e01b03198116600090815291869052604090912054909150606081901c806112c55760405162461bcd60e51b815260206004820152601f60248201527f4469616d6f6e64426173653a2073656c6563746f72206e6f7420666f756e64006044820152606401610120565b306001600160a01b038216036112ed5760405162461bcd60e51b815260040161012090611ef7565b84600001516001600160a01b0316816001600160a01b0316036113635760405162461bcd60e51b815260206004820152602860248201527f4469616d6f6e64426173653a205245504c41434520746172676574206973206960448201526719195b9d1a58d85b60c21b6064820152608401610120565b5083516001600160e01b031992909216600090815260208690526040902060609290921b6001600160601b0319166bffffffffffffffffffffffff91909116179055600101611225565b505050565b805160009081906001600160a01b0316156114275760405162461bcd60e51b815260206004820152602f60248201527f4469616d6f6e64426173653a2052454d4f564520746172676574206d7573742060448201526e6265207a65726f206164647265737360881b6064820152608401610120565b600385901c6007861660005b8560400151518110156116365760008660400151828151811061145857611458611d93565b6020908102919091018101516001600160e01b031981166000908152918c9052604090912054909150606081901c6114d25760405162461bcd60e51b815260206004820152601f60248201527f4469616d6f6e64426173653a2073656c6563746f72206e6f7420666f756e64006044820152606401610120565b30606082901c036114f55760405162461bcd60e51b815260040161012090611ef7565b600089900361152157600019909401600081815260028c01602052604090205498509360079350611529565b600019909301925b600584901b89901b6000806001600160e01b031980841690861614611580576001600160e01b03198316600090815260208f90526040902080546001600160601b0319166bffffffffffffffffffffffff86161790555b50506001600160e01b03198316600090815260208d90526040812055611fff600383901c1660e0600584901b168782146115e357600082815260028f016020526040902080546001600160e01b031980841c19909116908516831c179055611607565b80836001600160e01b031916901c816001600160e01b031960001b901c198d16179b505b8660000361162557600088815260028f01602052604081208190559b505b505060019093019250611433915050565b5060039190911b1796939550929350505050565b6000611654610fc6565b546001600160a01b0316919050565b60007f24aa1f7b31fd188a8d3ecfb06bc55c806040e59b03bd4396283442fce6617890611654565b6000611695610fc6565b805460405191925033916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36116db8133610fea565b610d1760007f24aa1f7b31fd188a8d3ecfb06bc55c806040e59b03bd4396283442fce66178905b90610fea565b610d1781611881565b8051156001600160a01b03831615146117835760405162461bcd60e51b815260206004820152602e60248201527f4469616d6f6e64426173653a20696e76616c696420696e697469616c697a617460448201526d696f6e20706172616d657465727360901b6064820152608401610120565b6001600160a01b0382161561187d576001600160a01b0382163014611810576001600160a01b0382163b6118105760405162461bcd60e51b815260206004820152602e60248201527f4469616d6f6e64426173653a20696e697469616c697a6174696f6e207461726760448201526d657420686173206e6f20636f646560901b6064820152608401610120565b6000826001600160a01b03168260405161182a9190611f39565b600060405180830381855af49150503d8060008114611865576040519150601f19603f3d011682016040523d82523d6000602084013e61186a565b606091505b50509050806113ad573d6000803e3d6000fd5b5050565b610d1781610d17817f24aa1f7b31fd188a8d3ecfb06bc55c806040e59b03bd4396283442fce6617890611702565b80356001600160e01b0319811681146118c757600080fd5b919050565b6000602082840312156118de57600080fd5b61039d826118af565b80356001600160a01b03811681146118c757600080fd5b60008083601f84011261191057600080fd5b50813567ffffffffffffffff81111561192857600080fd5b60208301915083602082850101111561194057600080fd5b9250929050565b60008060008060006060868803121561195f57600080fd5b853567ffffffffffffffff8082111561197757600080fd5b818801915088601f83011261198b57600080fd5b81358181111561199a57600080fd5b8960208260051b85010111156119af57600080fd5b602083019750809650506119c5602089016118e7565b945060408801359150808211156119db57600080fd5b506119e8888289016118fe565b969995985093965092949392505050565b6020808252825182820181905260009190848201906040850190845b81811015611a3a5783516001600160a01b031683529284019291840191600101611a15565b50909695505050505050565b600081518084526020808501945080840160005b83811015611a805781516001600160e01b03191687529582019590820190600101611a5a565b509495945050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015611afa57888303603f19018552815180516001600160a01b03168452870151878401879052611ae787850182611a46565b9588019593505090860190600101611ab2565b509098975050505050505050565b600060208284031215611b1a57600080fd5b61039d826118e7565b6020808252825182820181905260009190848201906040850190845b81811015611a3a5783516001600160e01b03191683529284019291840191600101611b3f565b6020808252601d908201527f4f776e61626c653a2073656e646572206d757374206265206f776e6572000000604082015260600190565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611bd557611bd5611b9c565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611c0457611c04611b9c565b604052919050565b600067ffffffffffffffff821115611c2657611c26611b9c565b5060051b60200190565b6000611c43611c3e84611c0c565b611bdb565b83815260208082019190600586811b860136811115611c6157600080fd5b865b81811015611d5757803567ffffffffffffffff80821115611c845760008081fd5b818a01915060608236031215611c9a5760008081fd5b611ca2611bb2565b611cab836118e7565b81528683013560038110611cbf5760008081fd5b8188015260408381013583811115611cd75760008081fd5b939093019236601f850112611cee57600092508283fd5b83359250611cfe611c3e84611c0c565b83815292871b84018801928881019036851115611d1b5760008081fd5b948901945b84861015611d4057611d31866118af565b82529489019490890190611d20565b918301919091525088525050948301948301611c63565b5092979650505050505050565b634e487b7160e01b600052601160045260246000fd5b600060018201611d8c57611d8c611d64565b5060010190565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff8103611dbf57611dbf611d64565b60010192915050565b634e487b7160e01b600052602160045260246000fd5b60005b83811015611df9578181015183820152602001611de1565b50506000910152565b60008151808452611e1a816020860160208601611dde565b601f01601f19169290920160200192915050565b6000606080830181845280875180835260808601915060808160051b87010192506020808a016000805b84811015611ec757898703607f19018652825180516001600160a01b031688528481015160038110611e9857634e487b7160e01b84526021600452602484fd5b88860152604090810151908801899052611eb489890182611a46565b9750509483019491830191600101611e58565b5050506001600160a01b0389169087015250508381036040850152611eec8186611e02565b979650505050505050565b60208082526022908201527f4469616d6f6e64426173653a2073656c6563746f7220697320696d6d757461626040820152616c6560f01b606082015260800190565b60008251611f4b818460208701611dde565b919091019291505056fea26469706673582212200835660151f1e4c4072cbf36d7dbc3cfe1e3edeb58e47f5888d025ac18082dbb64736f6c634300081000334469616d6f6e64426173653a2073656c6563746f7220697320696d6d75746162"; + "0x60806040523480156200001157600080fd5b50600062000029620007b760201b620012581760201c565b90506000600c67ffffffffffffffff8111156200004b576200004a62001917565b5b6040519080825280602002602001820160405280156200007a5781602001602082028036833780820191505090505b509050631f931c1c60e01b816000815181106200009c576200009b6200192d565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681525050620001257f1f931c1c00000000000000000000000000000000000000000000000000000000600184620007e460201b62001285179092919060201c565b637a0ed62760e01b816001815181106200014457620001436200192d565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152505063adfca15e60e01b81600281518110620001af57620001ae6200192d565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815250506352ef6b2c60e01b816003815181106200021a57620002196200192d565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152505063cdffacc660e01b816004815181106200028557620002846200192d565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815250506200030e7f48e2b09300000000000000000000000000000000000000000000000000000000600184620007e460201b62001285179092919060201c565b6301ffc9a760e01b816005815181106200032d576200032c6200192d565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681525050620003b67f01ffc9a700000000000000000000000000000000000000000000000000000000600184620007e460201b62001285179092919060201c565b638da5cb5b60e01b81600681518110620003d557620003d46200192d565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681525050638ab5150a60e01b8160078151811062000440576200043f6200192d565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152505063f2fde38b60e01b81600881518110620004ab57620004aa6200192d565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815250506379ba509760e01b816009815181106200051657620005156200192d565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815250506200059f7f7f5828d000000000000000000000000000000000000000000000000000000000600184620007e460201b62001285179092919060201c565b632c40805960e01b81600a81518110620005be57620005bd6200192d565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681525050639142376560e01b81600b815181106200062957620006286200192d565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815250506000600167ffffffffffffffff81111562000695576200069462001917565b5b604051908082528060200260200182016040528015620006d257816020015b620006be620018cb565b815260200190600190039081620006b45790505b50905060405180606001604052803073ffffffffffffffffffffffffffffffffffffffff1681526020016000600281111562000713576200071262001943565b5b815260200183815250816000815181106200073357620007326200192d565b5b602002602001018190525062000780816000604051806020016040528060008152506200076a620008bf60201b6200135d1760201c565b620008ec60201b6200138a17909392919060201c565b620007ae336200079a62000b8460201b620015e11760201c565b62000bb160201b6200160e1790919060201c565b50505062001ef9565b6000807f326d0c59a7612f6a9919e2a8ee333c80ba689d8ba2634de89c85cbb04832e70590508091505090565b63ffffffff60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036200084f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008469062001959565b60405180910390fd5b80836000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000807f177481ac65e4292921c69f62d1cc7f57541261e5d61c8175cf4e36a01c9bfc9390508091505090565b60008460010160009054906101000a900461ffff1661ffff16905060008190506000806007831611156200093757866002016000600384901c81526020019081526020016000205490505b60005b865181101562000ad75760008782815181106200095c576200095b6200192d565b5b60200260200101519050600081602001519050600082604001515111620009ba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009b19062001997565b60405180910390fd5b60006002811115620009d157620009d062001943565b5b816002811115620009e757620009e662001943565b5b0362000a195762000a0b8585848d62000bf860201b6200165517909392919060201c565b809550819650505062000ac7565b6001600281111562000a305762000a2f62001943565b5b81600281111562000a465762000a4562001943565b5b0362000a6c5762000a66828b62000ed260201b620019151790919060201c565b62000ac6565b60028081111562000a825762000a8162001943565b5b81600281111562000a985762000a9762001943565b5b0362000ac55762000abc8585848d620011ca60201b62001bef17909392919060201c565b80955081965050505b5b5b505080806001019150506200093a565b5082821462000b0057818760010160006101000a81548161ffff021916908361ffff1602179055505b600060078316111562000b2c5780876002016000600385901c8152602001908152602001600020819055505b7f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67386868660405162000b619392919062001a66565b60405180910390a162000b7b8585620016df60201b60201c565b50505050505050565b6000807f8a22373512790c48b83a1fe2efdd2888d4a917bcdc24d0adf63e60f67168046090508091505090565b808260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000803073ffffffffffffffffffffffffffffffffffffffff16836000015173ffffffffffffffffffffffffffffffffffffffff16148062000c66575062000c65836000015173ffffffffffffffffffffffffffffffffffffffff16620018b860201b620004df1760201c565b5b62000ca8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c9f9062001b7b565b60405180910390fd5b60005b83604001515181101562000ec25760008460400151828151811062000cd55762000cd46200192d565b5b602002602001015190506000886000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020549050600073ffffffffffffffffffffffffffffffffffffffff168160601c73ffffffffffffffffffffffffffffffffffffffff161462000dac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000da39062001bdf565b60405180910390fd5b8760001b866000015160601b6bffffffffffffffffffffffff191617896000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020819055506000600560078a16901b905080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c817fffffffff0000000000000000000000000000000000000000000000000000000060001b901c19891617975060e0810362000ea957878a600201600060038c901c8152602001908152602001600020819055506000801b97505b8880600101995050505050808060010191505062000cab565b5084849150915094509492505050565b62000f02816000015173ffffffffffffffffffffffffffffffffffffffff16620018b860201b620004df1760201c565b62000f44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000f3b9062001c43565b60405180910390fd5b60005b816040015151811015620011c55760008260400151828151811062000f715762000f706200192d565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002054905060008160601c9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200104d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620010449062001ca7565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620010be576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620010b59062001ce5565b60405180910390fd5b846000015173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362001133576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200112a9062001d49565b60405180910390fd5b846000015160601b6bffffffffffffffffffffffff19166bffffffffffffffffffffffff60001b831617866000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002081905550505050808060010191505062000f47565b505050565b600080600073ffffffffffffffffffffffffffffffffffffffff16836000015173ffffffffffffffffffffffffffffffffffffffff161462001243576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200123a9062001dad565b60405180910390fd5b6000600386901c9050600060078716905060005b856040015151811015620016c4576000866040015182815181106200128157620012806200192d565b5b6020026020010151905060008a6000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020549050600073ffffffffffffffffffffffffffffffffffffffff168160601c73ffffffffffffffffffffffffffffffffffffffff160362001358576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200134f9062001ca7565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168160601c73ffffffffffffffffffffffffffffffffffffffff1603620013cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620013c39062001ce5565b60405180910390fd5b6000801b890362001402578480600190039550508a6002016000868152602001908152602001600020549850600793506200140c565b8380600190039450505b6000806000600587901b8c901b9250847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146200152f578d6000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020546bffffffffffffffffffffffff19166bffffffffffffffffffffffff60001b8516178e6000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020819055505b8d6000016000867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000206000905560008460001c61ffff169050600381901c9250600560078216901b915050878214620016375760008e600201600084815260200190815260200160002054905081847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c827fffffffff0000000000000000000000000000000000000000000000000000000060001b901c198216179050808f6002016000858152602001908152602001600020819055505062001688565b80837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c817fffffffff0000000000000000000000000000000000000000000000000000000060001b901c198d16179b505b60008703620016b1578d6002016000898152602001908152602001600020600090556000801b9b505b5050505050808060010191505062001257565b5080600383901b179650868693509350505094509492505050565b60008151141515600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515146200175b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620017529062001e11565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614620018b4573073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146200183357620017f08273ffffffffffffffffffffffffffffffffffffffff16620018b860201b620004df1760201c565b62001832576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620018299062001e75565b60405180910390fd5b5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516200185c919062001ed9565b600060405180830381855af49150503d806000811462001899576040519150601f19603f3d011682016040523d82523d6000602084013e6200189e565b606091505b5050905080620018b2573d6000803e3d6000fd5b505b5050565b600080823b905060008111915050919050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600060028111156200190a576200190962001943565b5b8152602001606081525090565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b60208152601c60208201527f4552433136353a20696e76616c696420696e746572666163652069640000000060408201526000606082019050919050565b60208152602360208201527f4469616d6f6e64426173653a206e6f2073656c6563746f72732073706563696660408201527f696564000000000000000000000000000000000000000000000000000000000060608201526000608082019050919050565b60018060a01b03811682525050565b60005b8381101562001a2a57808201518184015260208101905062001a0d565b50600083830152505050565b6000815180845262001a5081602086016020860162001a0a565b6020601f19601f83011685010191505092915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b8481101562001b4757607f198a8503018652815188850160018060a01b038251168652848201516003811062001ad557634e487b7160e01b600052602160045260246000fd5b80868801525060408083015192508a81880152508082518083528a880191508684019350600092505b8083101562001b2a5763ffffffff60e01b84511682528682019150868401935060018301925062001afe565b508096505050508282019150828601955060018101905062001a8f565b505062001b578189018b620019fb565b50868103604088015262001b6c818962001a36565b95505050505050949350505050565b60208152602360208201527f4469616d6f6e64426173653a204144442074617267657420686173206e6f206360408201527f6f6465000000000000000000000000000000000000000000000000000000000060608201526000608082019050919050565b60208152602360208201527f4469616d6f6e64426173653a2073656c6563746f7220616c726561647920616460408201527f646564000000000000000000000000000000000000000000000000000000000060608201526000608082019050919050565b60208152602760208201527f4469616d6f6e64426173653a205245504c41434520746172676574206861732060408201527f6e6f20636f64650000000000000000000000000000000000000000000000000060608201526000608082019050919050565b60208152601f60208201527f4469616d6f6e64426173653a2073656c6563746f72206e6f7420666f756e640060408201526000606082019050919050565b60208152602260208201527f4469616d6f6e64426173653a2073656c6563746f7220697320696d6d7574616260408201527f6c6500000000000000000000000000000000000000000000000000000000000060608201526000608082019050919050565b60208152602860208201527f4469616d6f6e64426173653a205245504c41434520746172676574206973206960408201527f64656e746963616c00000000000000000000000000000000000000000000000060608201526000608082019050919050565b60208152602f60208201527f4469616d6f6e64426173653a2052454d4f564520746172676574206d7573742060408201527f6265207a65726f2061646472657373000000000000000000000000000000000060608201526000608082019050919050565b60208152602e60208201527f4469616d6f6e64426173653a20696e76616c696420696e697469616c697a617460408201527f696f6e20706172616d657465727300000000000000000000000000000000000060608201526000608082019050919050565b60208152602e60208201527f4469616d6f6e64426173653a20696e697469616c697a6174696f6e207461726760408201527f657420686173206e6f20636f646500000000000000000000000000000000000060608201526000608082019050919050565b6000825162001eed81846020870162001a0a565b80830191505092915050565b6131aa8062001f096000396000f3fe6080604052600436106100ab5760003560e01c80638ab5150a116100645780638ab5150a146102405780638da5cb5b1461026b5780639142376514610296578063adfca15e146102bf578063cdffacc6146102fc578063f2fde38b14610339576100b2565b806301ffc9a7146101425780631f931c1c1461017f5780632c408059146101a857806352ef6b2c146101d357806379ba5097146101fe5780637a0ed62714610215576100b2565b366100b257005b60006100bc610362565b90506100dd8173ffffffffffffffffffffffffffffffffffffffff166104df565b61011c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161011390612514565b60405180910390fd5b3660008037600080366000845af43d6000803e806000811461013d573d6000f35b3d6000fd5b34801561014e57600080fd5b5061016960048036038101906101649190612598565b6104f2565b60405161017691906125bb565b60405180910390f35b34801561018b57600080fd5b506101a660048036038101906101a19190612637565b610515565b005b3480156101b457600080fd5b506101bd6105ff565b6040516101ca91906126fb565b60405180910390f35b3480156101df57600080fd5b506101e8610632565b6040516101f59190612714565b60405180910390f35b34801561020a57600080fd5b50610213610893565b005b34801561022157600080fd5b5061022a610912565b60405161023791906127b4565b60405180910390f35b34801561024c57600080fd5b50610255610e73565b60405161026291906126fb565b60405180910390f35b34801561027757600080fd5b50610280610e82565b60405161028d91906126fb565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b89190612839565b610e91565b005b3480156102cb57600080fd5b506102e660048036038101906102e19190612839565b610f53565b6040516102f3919061285c565b60405180910390f35b34801561030857600080fd5b50610323600480360381019061031e9190612598565b611170565b60405161033091906126fb565b60405180910390f35b34801561034557600080fd5b50610360600480360381019061035b9190612839565b6111d7565b005b60008060007f177481ac65e4292921c69f62d1cc7f57541261e5d61c8175cf4e36a01c9bfc939050809150600082600001600080357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000205460601c9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036104d6578260030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036104d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104cc906128b2565b60405180910390fd5b5b80935050505090565b600080823b905060008111915050919050565b600061050e82610500611258565b6120f090919063ffffffff16565b9050919050565b61051d61215b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461058a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058190612916565b60405180910390fd5b6105f885859061059a91906129fb565b8484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506105e861135d565b61138a909392919063ffffffff16565b5050505050565b600061060961135d565b60030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600061063e61135d565b90508060010160009054906101000a900461ffff1661ffff1667ffffffffffffffff8111156106705761066f612954565b5b60405190808252806020026020018201604052801561069e5781602001602082028036833780820191505090505b50915060008060005b8360010160009054906101000a900461ffff1661ffff1682101561088957600084600201600083815260200190815260200160002054905060005b60088110156108745783806106f690612b5c565b9450508560010160009054906101000a900461ffff1661ffff168411610874576000600582901b83901b90506000876000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000205460601c90506000805b888110156107f2578a818151811061079c5761079b612b7a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107df57600191506107f2565b80806107ea90612b5c565b915050610781565b50801561080157505050610861565b818a898151811061081557610814612b7a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050878061085a90612b5c565b9850505050505b808061086c90612b5c565b9150506106e2565b5050808061088190612b5c565b9150506106a7565b5081845250505090565b61089b61218e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610908576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ff90612b90565b60405180910390fd5b6109106121c1565b565b6060600061091e61135d565b90508060010160009054906101000a900461ffff1661ffff1667ffffffffffffffff8111156109505761094f612954565b5b60405190808252806020026020018201604052801561098957816020015b6109766124e4565b81526020019060019003908161096e5790505b50915060008160010160009054906101000a900461ffff1661ffff1667ffffffffffffffff8111156109be576109bd612954565b5b6040519080825280602002602001820160405280156109ec5781602001602082028036833780820191505090505b50905060008060005b8460010160009054906101000a900461ffff1661ffff16821015610dff57600085600201600083815260200190815260200160002054905060005b6008811015610dea578380610a4490612b5c565b9450508660010160009054906101000a900461ffff1661ffff168411610dea576000600582901b83901b90506000886000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000205460601c90506000805b88811015610c3b578273ffffffffffffffffffffffffffffffffffffffff168c8281518110610b0157610b00612b7a565b5b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1603610c2857838c8281518110610b3c57610b3b612b7a565b5b6020026020010151602001518b8381518110610b5b57610b5a612b7a565b5b602002602001015160ff1681518110610b7757610b76612b7a565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152505060ff8a8281518110610bd857610bd7612b7a565b5b602002602001015160ff1610610bed57600080fd5b898181518110610c0057610bff612b7a565b5b602002602001018051809190610c1590612bf4565b60ff1660ff168152505060019150610c3b565b8080610c3390612b5c565b915050610acf565b508015610c4a57505050610dd7565b818b8981518110610c5e57610c5d612b7a565b5b60200260200101516000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508960010160009054906101000a900461ffff1661ffff1667ffffffffffffffff811115610ccc57610ccb612954565b5b604051908082528060200260200182016040528015610cfa5781602001602082028036833780820191505090505b508b8981518110610d0e57610d0d612b7a565b5b602002602001015160200181905250828b8981518110610d3157610d30612b7a565b5b602002602001015160200151600081518110610d5057610d4f612b7a565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815250506001898981518110610db157610db0612b7a565b5b602002602001019060ff16908160ff16815250508780610dd090612b5c565b9850505050505b8080610de290612b5c565b915050610a30565b50508080610df790612b5c565b9150506109f5565b5060005b82811015610e68576000848281518110610e2057610e1f612b7a565b5b602002602001015160ff1690506000878381518110610e4257610e41612b7a565b5b602002602001015160200151905081815250508080610e6090612b5c565b915050610e03565b508185525050505090565b6000610e7d61218e565b905090565b6000610e8c61215b565b905090565b610e9961215b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efd90612916565b60405180910390fd5b80610f0f61135d565b60030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606000610f5f61135d565b90508060010160009054906101000a900461ffff1661ffff1667ffffffffffffffff811115610f9157610f90612954565b5b604051908082528060200260200182016040528015610fbf5781602001602082028036833780820191505090505b50915060008060005b8360010160009054906101000a900461ffff1661ffff1682101561116457600084600201600083815260200190815260200160002054905060005b600881101561114f57838061101790612b5c565b9450508560010160009054906101000a900461ffff1661ffff16841161114f576000600582901b83901b9050866000016000827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000205460601c73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff160361113b57808887815181106110e0576110df612b7a565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681525050858061113790612b5c565b9650505b50808061114790612b5c565b915050611003565b5050808061115c90612b5c565b915050610fc8565b50818452505050919050565b600061117a61135d565b6000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000205460601c9050919050565b6111df61215b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461124c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124390612916565b60405180910390fd5b6112558161227c565b50565b6000807f326d0c59a7612f6a9919e2a8ee333c80ba689d8ba2634de89c85cbb04832e70590508091505090565b63ffffffff60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036112ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e490612c17565b60405180910390fd5b80836000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000807f177481ac65e4292921c69f62d1cc7f57541261e5d61c8175cf4e36a01c9bfc9390508091505090565b60008460010160009054906101000a900461ffff1661ffff16905060008190506000806007831611156113d457866002016000600384901c81526020019081526020016000205490505b60005b86518110156115405760008782815181106113f5576113f4612b7a565b5b60200260200101519050600081602001519050600082604001515111611450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144790612c55565b60405180910390fd5b6000600281111561146457611463612cb9565b5b81600281111561147757611476612cb9565b5b036114a0576114938585848d611655909392919063ffffffff16565b8095508196505050611531565b600160028111156114b4576114b3612cb9565b5b8160028111156114c7576114c6612cb9565b5b036114e4576114df828b61191590919063ffffffff16565b611530565b6002808111156114f7576114f6612cb9565b5b81600281111561150a57611509612cb9565b5b0361152f576115268585848d611bef909392919063ffffffff16565b80955081965050505b5b5b505080806001019150506113d7565b5082821461156857818760010160006101000a81548161ffff021916908361ffff1602179055505b60006007831611156115935780876002016000600385901c8152602001908152602001600020819055505b7f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738686866040516115c693929190612d27565b60405180910390a16115d88585612288565b50505050505050565b6000807f8a22373512790c48b83a1fe2efdd2888d4a917bcdc24d0adf63e60f67168046090508091505090565b808260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000803073ffffffffffffffffffffffffffffffffffffffff16836000015173ffffffffffffffffffffffffffffffffffffffff1614806116b557506116b4836000015173ffffffffffffffffffffffffffffffffffffffff166104df565b5b6116f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116eb90612df8565b60405180910390fd5b60005b8360400151518110156119055760008460400151828151811061171d5761171c612b7a565b5b602002602001015190506000886000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020549050600073ffffffffffffffffffffffffffffffffffffffff168160601c73ffffffffffffffffffffffffffffffffffffffff16146117f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e890612e5c565b60405180910390fd5b8760001b866000015160601b6bffffffffffffffffffffffff191617896000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020819055506000600560078a16901b905080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c817fffffffff0000000000000000000000000000000000000000000000000000000060001b901c19891617975060e081036118ed57878a600201600060038c901c8152602001908152602001600020819055506000801b97505b888060010199505050505080806001019150506116f7565b5084849150915094509492505050565b611938816000015173ffffffffffffffffffffffffffffffffffffffff166104df565b611977576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196e90612ec0565b60405180910390fd5b60005b816040015151811015611bea576000826040015182815181106119a05761199f612b7a565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002054905060008160601c9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7090612f24565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ade90612f62565b60405180910390fd5b846000015173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5090612fc6565b60405180910390fd5b846000015160601b6bffffffffffffffffffffffff19166bffffffffffffffffffffffff60001b831617866000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002081905550505050808060010191505061197a565b505050565b600080600073ffffffffffffffffffffffffffffffffffffffff16836000015173ffffffffffffffffffffffffffffffffffffffff1614611c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5c9061302a565b60405180910390fd5b6000600386901c9050600060078716905060005b8560400151518110156120d557600086604001518281518110611c9f57611c9e612b7a565b5b6020026020010151905060008a6000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020549050600073ffffffffffffffffffffffffffffffffffffffff168160601c73ffffffffffffffffffffffffffffffffffffffff1603611d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6a90612f24565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168160601c73ffffffffffffffffffffffffffffffffffffffff1603611de4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddb90612f62565b60405180910390fd5b6000801b8903611e18578480600190039550508a600201600086815260200190815260200160002054985060079350611e22565b8380600190039450505b6000806000600587901b8c901b9250847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611f44578d6000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020546bffffffffffffffffffffffff19166bffffffffffffffffffffffff60001b8516178e6000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020819055505b8d6000016000867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000206000905560008460001c61ffff169050600381901c9250600560078216901b91505087821461204a5760008e600201600084815260200190815260200160002054905081847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c827fffffffff0000000000000000000000000000000000000000000000000000000060001b901c198216179050808f6002016000858152602001908152602001600020819055505061209b565b80837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c817fffffffff0000000000000000000000000000000000000000000000000000000060001b901c198d16179b505b600087036120c3578d6002016000898152602001908152602001600020600090556000801b9b505b50505050508080600101915050611c79565b5080600383901b179650868693509350505094509492505050565b6000826000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff16905092915050565b60006121656115e1565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000612198612447565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006121cb6115e1565b90503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361225e338261160e90919063ffffffff16565b612279600061226b612447565b61247490919063ffffffff16565b50565b612285816124bb565b50565b60008151141515600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151514612301576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f89061308e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612443573073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146123c7576123878273ffffffffffffffffffffffffffffffffffffffff166104df565b6123c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bd906130f2565b60405180910390fd5b5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516123ee9190613156565b600060405180830381855af49150503d8060008114612429576040519150601f19603f3d011682016040523d82523d6000602084013e61242e565b606091505b5050905080612441573d6000803e3d6000fd5b505b5050565b6000807f24aa1f7b31fd188a8d3ecfb06bc55c806040e59b03bd4396283442fce661789090508091505090565b808260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6124c4816124c7565b50565b6124e1816124d3612447565b61247490919063ffffffff16565b50565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b60208152602660208201527f50726f78793a20696d706c656d656e746174696f6e206d75737420626520636f60408201527f6e7472616374000000000000000000000000000000000000000000000000000060608201526000608082019050919050565b60008135905063ffffffff60e01b8116811461259357600080fd5b919050565b6000602082840312156125aa57600080fd5b6125b382612578565b905092915050565b6000602082019050821515825292915050565b60008135905060018060a01b03811681146125e857600080fd5b919050565b60008083601f8401126125ff57600080fd5b8235905067ffffffffffffffff81111561261857600080fd5b60208301915083602082850101111561263057600080fd5b9250929050565b60008060008060006060868803121561264f57600080fd5b853567ffffffffffffffff8082111561266757600080fd5b818801915088601f83011261267b57600080fd5b81358181111561268a57600080fd5b8960208260051b850101111561269f57600080fd5b602083019750809650506126b5602089016125ce565b945060408801359150808211156126cb57600080fd5b506126d8888289016125ed565b915080935050809150509295509295909350565b60018060a01b03811682525050565b600060208201905060018060a01b038316825292915050565b60006020808301818452808551808352604086019150838701925060005b8181101561275b5760018060a01b03845116835284830192508484019350600181019050612732565b505080935050505092915050565b600081518084526020808501945080840160005b838110156127a75763ffffffff60e01b82511687528287019650828201915060018101905061277d565b5050505082905092915050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561282957603f19898403018552815160018060a01b038151168452878101519050868885015261281187850182612769565b935050868201915086850194506001810190506127db565b5050809550505050505092915050565b60006020828403121561284b57600080fd5b612854826125ce565b905092915050565b60006020808301818452808551808352604086019150838701925060005b818110156128a45763ffffffff60e01b84511683528483019250848401935060018101905061287a565b505080935050505092915050565b60208152603260208201527f4469616d6f6e64426173653a206e6f20666163657420666f756e6420666f722060408201527f66756e6374696f6e207369676e6174757265000000000000000000000000000060608201526000608082019050919050565b60208152601d60208201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060408201526000606082019050919050565b634e487b7160e01b600052604160045260246000fd5b600060405190506060810181811067ffffffffffffffff8211171561299257612991612954565b5b806040525090565b60006040519050601f19601f830116810181811067ffffffffffffffff821117156129c8576129c7612954565b5b8060405250919050565b600067ffffffffffffffff8211156129ed576129ec612954565b5b60208260051b019050919050565b6000612a0e612a09846129d2565b61299a565b8084825260208083019250600586811b860136811115612a2d57600080fd5b865b81811015612b3757803567ffffffffffffffff80821115612a505760008081fd5b818a01915060608236031215612a665760008081fd5b612a6e61296a565b612a77836125ce565b81528683013560038110612a8b5760008081fd5b80888301525060408084013583811115612aa55760008081fd5b80850194505036601f850112612abd57600092508283fd5b83359250612ad2612acd846129d2565b61299a565b80848252898201915089858a1b870101945036851115612af25760008081fd5b89860195505b84861015612b1a57612b0986612578565b825289820191508986019550612af8565b808385015250505080895250505083860195508381019050612a2f565b50505050809250505092915050565b634e487b7160e01b600052601160045260246000fd5b600080198203612b6f57612b6e612b46565b5b600182019050919050565b634e487b7160e01b600052603260045260246000fd5b60208152602960208201527f536166654f776e61626c653a2073656e646572206d757374206265206e6f6d6960408201527f6e6565206f776e6572000000000000000000000000000000000000000000000060608201526000608082019050919050565b600060ff821660ff8103612c0b57612c0a612b46565b5b60018101915050919050565b60208152601c60208201527f4552433136353a20696e76616c696420696e746572666163652069640000000060408201526000606082019050919050565b60208152602360208201527f4469616d6f6e64426173653a206e6f2073656c6563746f72732073706563696660408201527f696564000000000000000000000000000000000000000000000000000000000060608201526000608082019050919050565b634e487b7160e01b600052602160045260246000fd5b60005b83811015612ced578082015181840152602081019050612cd2565b50600083830152505050565b60008151808452612d11816020860160208601612ccf565b6020601f19601f83011685010191505092915050565b6000606080830181845280875180835260808601915060808160051b87010192506020808a016000805b84811015612dc857607f198a8803018652825160018060a01b0381511688528481015160038110612d9057634e487b7160e01b84526021600452602484fd5b80868a015250604080820151915089818a015250612db089890182612769565b97505083830192508386019550600181019050612d51565b505050612dd78188018a6126ec565b5050508381036040850152612dec8186612cf9565b92505050949350505050565b60208152602360208201527f4469616d6f6e64426173653a204144442074617267657420686173206e6f206360408201527f6f6465000000000000000000000000000000000000000000000000000000000060608201526000608082019050919050565b60208152602360208201527f4469616d6f6e64426173653a2073656c6563746f7220616c726561647920616460408201527f646564000000000000000000000000000000000000000000000000000000000060608201526000608082019050919050565b60208152602760208201527f4469616d6f6e64426173653a205245504c41434520746172676574206861732060408201527f6e6f20636f64650000000000000000000000000000000000000000000000000060608201526000608082019050919050565b60208152601f60208201527f4469616d6f6e64426173653a2073656c6563746f72206e6f7420666f756e640060408201526000606082019050919050565b60208152602260208201527f4469616d6f6e64426173653a2073656c6563746f7220697320696d6d7574616260408201527f6c6500000000000000000000000000000000000000000000000000000000000060608201526000608082019050919050565b60208152602860208201527f4469616d6f6e64426173653a205245504c41434520746172676574206973206960408201527f64656e746963616c00000000000000000000000000000000000000000000000060608201526000608082019050919050565b60208152602f60208201527f4469616d6f6e64426173653a2052454d4f564520746172676574206d7573742060408201527f6265207a65726f2061646472657373000000000000000000000000000000000060608201526000608082019050919050565b60208152602e60208201527f4469616d6f6e64426173653a20696e76616c696420696e697469616c697a617460408201527f696f6e20706172616d657465727300000000000000000000000000000000000060608201526000608082019050919050565b60208152602e60208201527f4469616d6f6e64426173653a20696e697469616c697a6174696f6e207461726760408201527f657420686173206e6f20636f646500000000000000000000000000000000000060608201526000608082019050919050565b60008251613168818460208701612ccf565b8083019150509291505056fea26469706673582212203588a294b3ac1bce4a26a2b3386a7b22ae4170af31f3fadce7ea06dad7b2e91464736f6c63430008100033"; type PCOLicenseDiamondConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/PCOLicenseParamsFacet__factory.ts b/typechain-types/factories/PCOLicenseParamsFacet__factory.ts index f2eee5f..e6fbaf6 100644 --- a/typechain-types/factories/PCOLicenseParamsFacet__factory.ts +++ b/typechain-types/factories/PCOLicenseParamsFacet__factory.ts @@ -330,7 +330,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b506108fc806100206000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806377742126116100b8578063a3cecf831161007c578063a3cecf831461022e578063bf7cdf6d14610241578063c13ed2ec14610254578063c85e0be21461025c578063d41c3a651461026f578063de7aff3c1461027757600080fd5b806377742126146101e55780637c627e1b146101f85780637d28dfc91461020b5780637d51ce901461021e578063801c5b1e1461022657600080fd5b80634d73f0b4116100ff5780634d73f0b41461019c578063520aa8ee146101af578063565a2e2c146101b75780636a326ab1146101bf57806373a29931146101d257600080fd5b8063014df4141461013c57806316a31026146101575780631c31f7101461015f57806320bc442514610174578063356248da14610194575b600080fd5b61014461028a565b6040519081526020015b60405180910390f35b61014461029f565b61017261016d3660046107a8565b6102b4565b005b61017c610320565b6040516001600160a01b03909116815260200161014e565b61014461033e565b6101726101aa3660046107cc565b610353565b61014461039e565b61017c6103b3565b6101726101cd3660046107a8565b6103ce565b6101726101e03660046107cc565b610434565b6101726101f33660046107cc565b61047f565b6101726102063660046107cc565b6104ca565b6101726102193660046107e5565b610515565b6101446105c8565b6101446105dd565b61017261023c3660046107cc565b6105f2565b61017261024f3660046107cc565b61063d565b610144610688565b61017261026a3660046107a8565b61069d565b61017c610703565b6101726102853660046107cc565b610721565b60008061029561076c565b6004015492915050565b6000806102aa61076c565b6003015492915050565b6000805160206108a7833981519152546001600160a01b031633146102f45760405162461bcd60e51b81526004016102eb9061086f565b60405180910390fd5b60006102fe61076c565b80546001600160a01b0319166001600160a01b03939093169290921790915550565b60008061032b61076c565b600201546001600160a01b031692915050565b60008061034961076c565b6009015492915050565b6000805160206108a7833981519152546001600160a01b0316331461038a5760405162461bcd60e51b81526004016102eb9061086f565b600061039461076c565b6004019190915550565b6000806103a961076c565b6008015492915050565b6000806103be61076c565b546001600160a01b031692915050565b6000805160206108a7833981519152546001600160a01b031633146104055760405162461bcd60e51b81526004016102eb9061086f565b600061040f61076c565b60010180546001600160a01b0319166001600160a01b03939093169290921790915550565b6000805160206108a7833981519152546001600160a01b0316331461046b5760405162461bcd60e51b81526004016102eb9061086f565b600061047561076c565b6005019190915550565b6000805160206108a7833981519152546001600160a01b031633146104b65760405162461bcd60e51b81526004016102eb9061086f565b60006104c061076c565b6008019190915550565b6000805160206108a7833981519152546001600160a01b031633146105015760405162461bcd60e51b81526004016102eb9061086f565b600061050b61076c565b6006019190915550565b6000805160206108a7833981519152546001600160a01b0316331461054c5760405162461bcd60e51b81526004016102eb9061086f565b600061055661076c565b80546001600160a01b039c8d166001600160a01b03199182161782556001820180549c8e169c82169c909c17909b556002810180549a909c1699909a16989098179099556003880195909555600487019390935560058601919091556006850155600784015560088301555060090155565b6000806105d361076c565b6006015492915050565b6000806105e861076c565b6007015492915050565b6000805160206108a7833981519152546001600160a01b031633146106295760405162461bcd60e51b81526004016102eb9061086f565b600061063361076c565b6003019190915550565b6000805160206108a7833981519152546001600160a01b031633146106745760405162461bcd60e51b81526004016102eb9061086f565b600061067e61076c565b6007019190915550565b60008061069361076c565b6005015492915050565b6000805160206108a7833981519152546001600160a01b031633146106d45760405162461bcd60e51b81526004016102eb9061086f565b60006106de61076c565b60020180546001600160a01b0319166001600160a01b03939093169290921790915550565b60008061070e61076c565b600101546001600160a01b031692915050565b6000805160206108a7833981519152546001600160a01b031633146107585760405162461bcd60e51b81526004016102eb9061086f565b600061076261076c565b6009019190915550565b7f6ee8bf8f33d87ee8fc792bdab0fa8c5d1fb2132b416aab215664bf4732bc299790565b6001600160a01b03811681146107a557600080fd5b50565b6000602082840312156107ba57600080fd5b81356107c581610790565b9392505050565b6000602082840312156107de57600080fd5b5035919050565b6000806000806000806000806000806101408b8d03121561080557600080fd5b8a3561081081610790565b995060208b013561082081610790565b985060408b013561083081610790565b999c989b5098996060810135995060808101359860a0820135985060c0820135975060e082013596506101008201359550610120909101359350915050565b6020808252601d908201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060408201526060019056fe8a22373512790c48b83a1fe2efdd2888d4a917bcdc24d0adf63e60f671680460a2646970667358221220823be0ffaafa50b8bc947ac822a4b637f27ea782bc100c8a592ba67e140aec6f64736f6c63430008100033"; + "0x608060405234801561001057600080fd5b506131eb806100206000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806377742126116100b8578063a3cecf831161007c578063a3cecf83146102f0578063bf7cdf6d1461030c578063c13ed2ec14610328578063c85e0be214610346578063d41c3a6514610362578063de7aff3c1461038057610137565b806377742126146102605780637c627e1b1461027c5780637d28dfc9146102985780637d51ce90146102b4578063801c5b1e146102d257610137565b80634d73f0b4116100ff5780634d73f0b4146101d0578063520aa8ee146101ec578063565a2e2c1461020a5780636a326ab11461022857806373a299311461024457610137565b8063014df4141461013c57806316a310261461015a5780631c31f7101461017857806320bc442514610194578063356248da146101b2575b600080fd5b61014461039c565b6040516101519190612fde565b60405180910390f35b610162610491565b60405161016f9190612fde565b60405180910390f35b610192600480360381019061018d9190613006565b610586565b005b61019c610856565b6040516101a9919061302d565b60405180910390f35b6101ba61096b565b6040516101c79190612fde565b60405180910390f35b6101ea60048036038101906101e59190613046565b610a60565b005b6101f4610cf6565b6040516102019190612fde565b60405180910390f35b610212610deb565b60405161021f9190613062565b60405180910390f35b610242600480360381019061023d919061307b565b610f00565b005b61025e60048036038101906102599190613046565b6111d0565b005b61027a60048036038101906102759190613046565b611466565b005b61029660048036038101906102919190613046565b6116fc565b005b6102b260048036038101906102ad91906130a2565b611992565b005b6102bc612047565b6040516102c99190612fde565b60405180910390f35b6102da61213c565b6040516102e79190612fde565b60405180910390f35b61030a60048036038101906103059190613046565b612231565b005b61032660048036038101906103219190613046565b6124c7565b005b61033061275d565b60405161033d9190612fde565b60405180910390f35b610360600480360381019061035b9190613137565b612852565b005b61036a612b22565b604051610377919061315e565b60405180910390f35b61039a60048036038101906103959190613046565b612c37565b005b60006103ca7f6527e86e7c4c044920ee5863b45e9a8f0c71796bb6ca8adf55f20faeecf6339260001b612ecd565b6103f67f8cc96db9757b07132da0f5eb4b468d4ca43992245b1defb94d5a42ab8715d5e160001b612ecd565b6104227fadf9e444cf0f39ddd0f7a90751fed05a279221916e5db2aac6b3120c459ca9d260001b612ecd565b600061042c612ed0565b905061045a7fc0ce329d29f92ae2aadadaca4e54e742703d906633d55082ffb08bad08495ec360001b612ecd565b6104867f61b4a3e867eb394f2c50cd3262c31b2fb4510a8a7df495417319bdc3a862d9df60001b612ecd565b806004015491505090565b60006104bf7f48875242177dc12ae7e6840557458835f0fdf86e704dc0c8a38a2c600166b64360001b612ecd565b6104eb7fb44f01b2d5831a9e3204bfb34394036c1cda1ea6a2a1e5e5d707b55f5796dec560001b612ecd565b6105177f635c74f2308e21bee15dc80c0a6357f28df820279a6afb122e5ef0c11599a4e260001b612ecd565b6000610521612ed0565b905061054f7fc1cdb167dff9fe2ebfaf920328515aac9a6b74343341a728d97096d8f43c176760001b612ecd565b61057b7f63c9a3d1bd15379cd3696ec7e252f6037ad5bbafa27a66a3f9d3eb45b3a33a3860001b612ecd565b806003015491505090565b6105b27fa9c1252939b1e987c3d69760e70867180af5f7e58f009caedbe27e0f8c193fef60001b612ecd565b6105de7ff0623db0d3c80f3bdcc420443a1f1bef5b05d5c3f05224454940d6b15a79cf7a60001b612ecd565b61060a7f6790b862686e7260758f8b8fdeb85af2bd18730cc4450ed298f4145bdd814f5660001b612ecd565b6106367f32b4c05e58681d15961b7f93c7947e2351fa10b56f5a4ef2a5f08adca0f9328860001b612ecd565b61063e612fae565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c690613177565b60405180910390fd5b6106fb7f44efa8967badc2fac0a1ae277bb4bb0ca848fcc3b6f4382d596d62228b736ae060001b612ecd565b6107277f305b235a7b9b95087fe80dfb40addf3c2eae2594dbc4e30183e0193b25c8779760001b612ecd565b6107537f101c572e41e6e5ac6c5b272a6ea6fcc6977b51ceb19a85eca331a46f6fbda97660001b612ecd565b61077f7f9430bd4bf9edb3a5346d14f35002c2540152acd92c93afcace29aed292f93c7660001b612ecd565b6107ab7fa8a7316792bd4d0508768f019d2439c9dbd9fda2ba7f5a68e30fbf043cb6ea5260001b612ecd565b60006107b5612ed0565b90506107e37f4bc67b65366ff780150725fb8f2ee6be863aecc0aa69dc9ce6e61318c04abfea60001b612ecd565b61080f7f76115c4842853273ab0d7029345f13c0d662c8016ce8a6220ab0b1d21e2a306860001b612ecd565b818160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60006108847fcc185cc2734f117eb8bc43537a071152d4051493f12c98d466ec02af097895a860001b612ecd565b6108b07fb695bca37bb8b0f1a8d62b2cff0fc447d97d78ed03dc66609917deff9042166b60001b612ecd565b6108dc7f010cedb4532aa9715bfd9fb2425f9d3d0a7736fd76fbb06018d57a6d549ae34960001b612ecd565b60006108e6612ed0565b90506109147f5e8158a9aba04e38e49f2f9d286a5a0eda950da79d3f4a6672f5d9bd8b28745b60001b612ecd565b6109407fd455716f5aa3ec23bf005c347626b949e33afd6adde64be727a06a870d94767860001b612ecd565b8060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b60006109997fb52715e0dea11a458628f2f234d5ae7f1f4ad91545e40e486f401ad1c949e9ce60001b612ecd565b6109c57fe53d51293b0a7ed66da43a00f1967274b79a7e8c0ccfd810af9450cf86fd704b60001b612ecd565b6109f17fc08b2b9b688138351b30596722ec530321a5df9328a36cec910e9767a3af393560001b612ecd565b60006109fb612ed0565b9050610a297f3e1183233cd58ec22413d68a8b06c21864f138384830265987dd35ed9e88042660001b612ecd565b610a557f67977f5312481d0111949795a2b71643d2b98dc0243d03f412030a72210babae60001b612ecd565b806009015491505090565b610a8c7fa9c1252939b1e987c3d69760e70867180af5f7e58f009caedbe27e0f8c193fef60001b612ecd565b610ab87ff0623db0d3c80f3bdcc420443a1f1bef5b05d5c3f05224454940d6b15a79cf7a60001b612ecd565b610ae47f6790b862686e7260758f8b8fdeb85af2bd18730cc4450ed298f4145bdd814f5660001b612ecd565b610b107f32b4c05e58681d15961b7f93c7947e2351fa10b56f5a4ef2a5f08adca0f9328860001b612ecd565b610b18612fae565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ba9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba090613177565b60405180910390fd5b610bd57f44efa8967badc2fac0a1ae277bb4bb0ca848fcc3b6f4382d596d62228b736ae060001b612ecd565b610c017f305b235a7b9b95087fe80dfb40addf3c2eae2594dbc4e30183e0193b25c8779760001b612ecd565b610c2d7fc941bcd51d82d3edc7d5bd995fe2957c1cc482744db4038c92248e6651a2f26360001b612ecd565b610c597f0f29b494f4e102e6bf54dd88fc248bc10376085bc8f22d00dfe31da800487f9760001b612ecd565b610c857f3fd116b5fc34d7f61cb45041179e87a209ef58a18a974fac41a6d25336645c6260001b612ecd565b6000610c8f612ed0565b9050610cbd7f6f6ff0b365ad3e8d483f6a1251c36f0d42b12cea8c1174763d098579c420d64c60001b612ecd565b610ce97f9137aad7ee7a3ca91a316da7f9b46bc63fbd48d07328ee865583122765b25b7860001b612ecd565b8181600401819055505050565b6000610d247ffe0537d4d1ff8540f6f805fc4e2f3eaf3ed42728873f82dfe4f7d9f074b0ca6360001b612ecd565b610d507f2215d2c371945322cdc308a8f17001d30980eb07778d2c13eba0aa8f22760c3260001b612ecd565b610d7c7f6d5da7b3bfafa20b9f8be7048e83e9de8aad392e9bd9df8d9e443609c81a07c560001b612ecd565b6000610d86612ed0565b9050610db47f28cb040f43f3aeb8f5b5e730d78e6797192e45fe2b3abd73ae0c2908585d91ed60001b612ecd565b610de07f453db9bb98da7a3ead1115548efd98db4da1d3b88570655c04b066dbcbaefbcf60001b612ecd565b806008015491505090565b6000610e197f554f743152f282efe34eab39edf61fef035cf8f858c37e26b2818a3cd242ba1a60001b612ecd565b610e457f6a51dd466b1023333552a24689d64ca8e90369757f488fe9b4df893d4a842cc860001b612ecd565b610e717f04627a9d5b334c19aa362007a2854cd961b6fddfd3823a4d230f67f62dce925460001b612ecd565b6000610e7b612ed0565b9050610ea97fb973b101a502dad5762c822499e192cf96dec944dd10d95cd0108cd8e9df271860001b612ecd565b610ed57f920fdf295675e54ee255ef3c415317d2175fb3b9935b16e1ed0d5aac74ee37ba60001b612ecd565b8060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b610f2c7fa9c1252939b1e987c3d69760e70867180af5f7e58f009caedbe27e0f8c193fef60001b612ecd565b610f587ff0623db0d3c80f3bdcc420443a1f1bef5b05d5c3f05224454940d6b15a79cf7a60001b612ecd565b610f847f6790b862686e7260758f8b8fdeb85af2bd18730cc4450ed298f4145bdd814f5660001b612ecd565b610fb07f32b4c05e58681d15961b7f93c7947e2351fa10b56f5a4ef2a5f08adca0f9328860001b612ecd565b610fb8612fae565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611049576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104090613177565b60405180910390fd5b6110757f44efa8967badc2fac0a1ae277bb4bb0ca848fcc3b6f4382d596d62228b736ae060001b612ecd565b6110a17f305b235a7b9b95087fe80dfb40addf3c2eae2594dbc4e30183e0193b25c8779760001b612ecd565b6110cd7fb580a8fb4ff15de221cfd3e8273c0287dcae013983db706b0c8509c54cec3e9f60001b612ecd565b6110f97f14b247264f3aeba5f2261b21a2fee6d08fc6f9059e97315160c6948c3f51a76c60001b612ecd565b6111257fea5ff45f80bf15ae56249fcb9bb4f2c9eb09d8b156337814d72648deec82da6260001b612ecd565b600061112f612ed0565b905061115d7f819ebafdee1c5f8b201b4dbf7ccf3b2b9e3b5addd27361baf452b7725496d72960001b612ecd565b6111897f13c14492f7c18c78e882d71bbec0d135727d1e5158479fcbdef002b1840263e460001b612ecd565b818160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6111fc7fa9c1252939b1e987c3d69760e70867180af5f7e58f009caedbe27e0f8c193fef60001b612ecd565b6112287ff0623db0d3c80f3bdcc420443a1f1bef5b05d5c3f05224454940d6b15a79cf7a60001b612ecd565b6112547f6790b862686e7260758f8b8fdeb85af2bd18730cc4450ed298f4145bdd814f5660001b612ecd565b6112807f32b4c05e58681d15961b7f93c7947e2351fa10b56f5a4ef2a5f08adca0f9328860001b612ecd565b611288612fae565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611319576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131090613177565b60405180910390fd5b6113457f44efa8967badc2fac0a1ae277bb4bb0ca848fcc3b6f4382d596d62228b736ae060001b612ecd565b6113717f305b235a7b9b95087fe80dfb40addf3c2eae2594dbc4e30183e0193b25c8779760001b612ecd565b61139d7f200f21844848b902c4f2d209c0ccdc0ad16355ed0c7e4bc097c237338da34bc260001b612ecd565b6113c97f864d352ce588f0e57f77eeffca85f3ff12cbd80f5af2c66dffa77d3d09061d2860001b612ecd565b6113f57f18930fbe8699ee3024565fbea7ebdc53a045c12d4895ca8685b0f7138f31dd1860001b612ecd565b60006113ff612ed0565b905061142d7f39551cfdfee37a16fc5e74d88aa7018243f54c840637e254f2923b66b9df9f3060001b612ecd565b6114597fab81d9f70aed0b68bd8e6de807a284d680725c9e43760a44548cefb6d7acbb1460001b612ecd565b8181600501819055505050565b6114927fa9c1252939b1e987c3d69760e70867180af5f7e58f009caedbe27e0f8c193fef60001b612ecd565b6114be7ff0623db0d3c80f3bdcc420443a1f1bef5b05d5c3f05224454940d6b15a79cf7a60001b612ecd565b6114ea7f6790b862686e7260758f8b8fdeb85af2bd18730cc4450ed298f4145bdd814f5660001b612ecd565b6115167f32b4c05e58681d15961b7f93c7947e2351fa10b56f5a4ef2a5f08adca0f9328860001b612ecd565b61151e612fae565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a690613177565b60405180910390fd5b6115db7f44efa8967badc2fac0a1ae277bb4bb0ca848fcc3b6f4382d596d62228b736ae060001b612ecd565b6116077f305b235a7b9b95087fe80dfb40addf3c2eae2594dbc4e30183e0193b25c8779760001b612ecd565b6116337ff868a2db32e7ed942d9c902abafa2b0b8488311c65316346035a29b81a94b48760001b612ecd565b61165f7fc971a8dd81145e4277dffbb98756af9bd60380eb2c6e1c357847ed5f89e48d2a60001b612ecd565b61168b7fbd2b44c29b19a2837f7b7760a4d9c1358a3d7aeebbb3526fc6c184fe922b61dd60001b612ecd565b6000611695612ed0565b90506116c37fb3ac708ce844d9a1fa46e67b983d0d93599f33e7715af339e4efebe2858c325660001b612ecd565b6116ef7f77a85541bd8c35885068c36d659164648a62adc8fd1a5bb9541860e57e3c311460001b612ecd565b8181600801819055505050565b6117287fa9c1252939b1e987c3d69760e70867180af5f7e58f009caedbe27e0f8c193fef60001b612ecd565b6117547ff0623db0d3c80f3bdcc420443a1f1bef5b05d5c3f05224454940d6b15a79cf7a60001b612ecd565b6117807f6790b862686e7260758f8b8fdeb85af2bd18730cc4450ed298f4145bdd814f5660001b612ecd565b6117ac7f32b4c05e58681d15961b7f93c7947e2351fa10b56f5a4ef2a5f08adca0f9328860001b612ecd565b6117b4612fae565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611845576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183c90613177565b60405180910390fd5b6118717f44efa8967badc2fac0a1ae277bb4bb0ca848fcc3b6f4382d596d62228b736ae060001b612ecd565b61189d7f305b235a7b9b95087fe80dfb40addf3c2eae2594dbc4e30183e0193b25c8779760001b612ecd565b6118c97f5d5d9b9c6ab55d1c10015b67d04f69a450917bc5dead79fdecaafb1d1c450e0d60001b612ecd565b6118f57f7a63a9dff85404de4289a176fe257fb3e119e58feaf1fd3fe14b169feead2bc060001b612ecd565b6119217f771d4b6c3b9acf594ca624fc7a75f57a574775ca5ea0e9afa85d49846874fb7560001b612ecd565b600061192b612ed0565b90506119597fb91ee3cee3ce7db4543323e8c05396f130094f41394602fb0e4e21cacc63a81060001b612ecd565b6119857f1cf92e9e86cdeab4b5d60c3c910c8f876f535248f33cb9fa9ee3aba5ee4f171960001b612ecd565b8181600601819055505050565b6119be7fa9c1252939b1e987c3d69760e70867180af5f7e58f009caedbe27e0f8c193fef60001b612ecd565b6119ea7ff0623db0d3c80f3bdcc420443a1f1bef5b05d5c3f05224454940d6b15a79cf7a60001b612ecd565b611a167f6790b862686e7260758f8b8fdeb85af2bd18730cc4450ed298f4145bdd814f5660001b612ecd565b611a427f32b4c05e58681d15961b7f93c7947e2351fa10b56f5a4ef2a5f08adca0f9328860001b612ecd565b611a4a612fae565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad290613177565b60405180910390fd5b611b077f44efa8967badc2fac0a1ae277bb4bb0ca848fcc3b6f4382d596d62228b736ae060001b612ecd565b611b337f305b235a7b9b95087fe80dfb40addf3c2eae2594dbc4e30183e0193b25c8779760001b612ecd565b611b5f7fff1fcb3e118652e787b2910b79c4019fdb7dfe4e7ffe467a6259b24d694eac5460001b612ecd565b611b8b7f1624178eec777de44ccca996544bb7cb0b71a574ccf731df37210a135dd5bb3860001b612ecd565b611bb67e618e074bf0fdf945815acec3b432a51dc57d60bb93218933926bee2c23454560001b612ecd565b6000611bc0612ed0565b9050611bee7f7d36a98bc58d9cd60eb996b9386b818d7fb0ba095e978e85b090fd82bf840dc260001b612ecd565b611c1a7f7459b0570d7294f810de60abd2f19a7b89ff8c6f149c93c8e2320d21db6e9b6360001b612ecd565b8a8160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611c897fbd8d11a35521bc49fcce35f0f9e8ba98e40685a7684cbd2182faffef232e084960001b612ecd565b611cb57f9ec62361f587e7d717abc405b4a9ae17a391af57815694d95cf14b811d1bb11260001b612ecd565b898160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611d247fea2455ee7df282a33e158d017c20f22f093c8fbdcf4495a3cb71e5306aba09c660001b612ecd565b611d507fbd120de73469094fb0babc92b507350761e52291cb5a50c97201d33a1fff4b0760001b612ecd565b888160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611dbf7f7b7127f1361a60cd99179d271663348fa453602de6fab07f042f9242315536d560001b612ecd565b611deb7f6c980b96dcefd20c8e12fa54003feb0147371fd8670237595af39397b5001a7b60001b612ecd565b878160030181905550611e207f6c92636036e7af768e7a92d68543f291734a54c0a0ecf26b8a7bb7ddf6a6d2e060001b612ecd565b611e4c7f52d86cfdfe4f7c12aac7912380ab69f47f9a34406999d86dd7fd8d714aedac2a60001b612ecd565b868160040181905550611e817fee594afc155a4e813af9d34adcceef4692743c32bb5c1abd978c970d27a7253e60001b612ecd565b611ead7f83cb5b902b1ef42ea52cd090fd652cc1ad2bad12ab188876af52ee2c411e1db160001b612ecd565b858160050181905550611ee27f1f644d28a02e98eaa05b487022dab77279cbc3ded061ef3e50c51be0baa1adf260001b612ecd565b611f0e7fa9c235b69f5ab18acbf38fd9ed933bc474946098f1ef74f2f001a9007f9730c760001b612ecd565b848160060181905550611f437f7784c971965cd45475f3d3f12fcc0b60a6acbdc86f56c4f8adc1fe66a73172d860001b612ecd565b611f6f7fe1ca1ec27dcec4264466c64b072654e9b8f840b48847cef87498a0e33564ab2b60001b612ecd565b838160070181905550611fa47f8f74c3c4f163a220a13bc862cc6060dfdd7d53d13e0f2819cdb6009fe9f6fb1f60001b612ecd565b611fd07fa628bd9630466b895df82cfcc75d9ff02d1ade413a33e299d1de0b265bdfb26b60001b612ecd565b8281600801819055506120057f4263169640d82f2ea59b887d7e6dc657742180119f133218a5338e86cfde7b4260001b612ecd565b6120317f6c419aad7a916c25bcda056886e5e1ea8885a1d025416778a8729cc379b0a93360001b612ecd565b8181600901819055505050505050505050505050565b60006120757f71415d08c7147ce43823bb5d812520d2a37c273e922a2f50f6d291af5693880360001b612ecd565b6120a17f059afa9954082907fa3fdefd49821b9cfef2c6220f6a229490f3a80013a465bb60001b612ecd565b6120cd7f3b30a4301892b2a8fdf7be56deaa855ba5a75ad896f4a53a3de7ea325558f90560001b612ecd565b60006120d7612ed0565b90506121057f0b787c92450fdb029d106bbc2bc5edc53be4f960a6e92b068657fa8246ccbffe60001b612ecd565b6121317fd856414f05e47d0dea5d71ae1200e6acd9c04806552d42e6db753514e4e7070760001b612ecd565b806006015491505090565b600061216a7fde8d84f0c70165722f33228415c3fe81855eb1cee3da55f20102126797cf203760001b612ecd565b6121967f557408f0756004b3012f3d180877db8becd8fd1e8de86b9acd12ca129908f73660001b612ecd565b6121c27f26b60c89ca9a67f520d0d853656240e59fdfb257428a4fe5aa5e3eeacd221ab260001b612ecd565b60006121cc612ed0565b90506121fa7f29f112bfc219dd7d1e440242d9de9340ffaab5d13a6afcb1b7bc8c8cce74c70060001b612ecd565b6122267fa81511a244e331f7499874250c656fc94c0f7f139599f292f7cd22329080a5ea60001b612ecd565b806007015491505090565b61225d7fa9c1252939b1e987c3d69760e70867180af5f7e58f009caedbe27e0f8c193fef60001b612ecd565b6122897ff0623db0d3c80f3bdcc420443a1f1bef5b05d5c3f05224454940d6b15a79cf7a60001b612ecd565b6122b57f6790b862686e7260758f8b8fdeb85af2bd18730cc4450ed298f4145bdd814f5660001b612ecd565b6122e17f32b4c05e58681d15961b7f93c7947e2351fa10b56f5a4ef2a5f08adca0f9328860001b612ecd565b6122e9612fae565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461237a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237190613177565b60405180910390fd5b6123a67f44efa8967badc2fac0a1ae277bb4bb0ca848fcc3b6f4382d596d62228b736ae060001b612ecd565b6123d27f305b235a7b9b95087fe80dfb40addf3c2eae2594dbc4e30183e0193b25c8779760001b612ecd565b6123fe7fbf26505ffb76a93e26b4541844055016f4bf33421cdd439af7278f683199b35260001b612ecd565b61242a7fc9ab458db2cf83b1ec700c3777d5ee1c4c94cc3c2ea38cd39a95907c02f9244860001b612ecd565b6124567f96216ad9d2b234f891db32c724e68bdf7058bed7ff5f1e9b47256f04fc5384b860001b612ecd565b6000612460612ed0565b905061248e7fc6e845e652d44ebc67c1c3ef31c2d42bcc4773a352b6e803bfd1c1a32bc9e4ea60001b612ecd565b6124ba7ff036fbff6eb46556cc1b58a7d0d3697e1bbdaadcfebdd3980934f6129aa8469f60001b612ecd565b8181600301819055505050565b6124f37fa9c1252939b1e987c3d69760e70867180af5f7e58f009caedbe27e0f8c193fef60001b612ecd565b61251f7ff0623db0d3c80f3bdcc420443a1f1bef5b05d5c3f05224454940d6b15a79cf7a60001b612ecd565b61254b7f6790b862686e7260758f8b8fdeb85af2bd18730cc4450ed298f4145bdd814f5660001b612ecd565b6125777f32b4c05e58681d15961b7f93c7947e2351fa10b56f5a4ef2a5f08adca0f9328860001b612ecd565b61257f612fae565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260790613177565b60405180910390fd5b61263c7f44efa8967badc2fac0a1ae277bb4bb0ca848fcc3b6f4382d596d62228b736ae060001b612ecd565b6126687f305b235a7b9b95087fe80dfb40addf3c2eae2594dbc4e30183e0193b25c8779760001b612ecd565b6126947fe9762a44c5d710aa76f092e9f0ebe2d08cda13b9080b9eca45f19e1fdf39a75f60001b612ecd565b6126c07fea013b51511f80db4dddc930ebff5c543b681f8372f34e995e0177a826e536f660001b612ecd565b6126ec7f366583c4d9aa8e195b814c78185f284883aebc86bad8a120365f28995744083c60001b612ecd565b60006126f6612ed0565b90506127247fbf47aac84aedcbbb7961a7bb2fc76e671ac5810837b2822fd6b20d3fa98458c760001b612ecd565b6127507f9550b96b553c323def1d55361ad0183d193320e8de0f2cc52508a8165318d9d560001b612ecd565b8181600701819055505050565b600061278b7fb7d59a0a75151f81f88c2f9eb5d0750bf4b439354accf906f6eb540ea563073c60001b612ecd565b6127b77fbb9fe0cbf7e4dd923d05541c770e48e943beb25692022b95df2f32ad2e480be360001b612ecd565b6127e37fdea36fb81aa93d49a7b0ade9ea11caebcd80b5cccff5ba249dc5eb46c5ce6c3460001b612ecd565b60006127ed612ed0565b905061281b7f934736776ae2ec99d6355b7dd08c422c8e04ee0496cd36246da49b6422c7406d60001b612ecd565b6128477f87c3766d90aefc2c0b4bf2436e455704cd2e563e62841c4f6578758dcf08f0a760001b612ecd565b806005015491505090565b61287e7fa9c1252939b1e987c3d69760e70867180af5f7e58f009caedbe27e0f8c193fef60001b612ecd565b6128aa7ff0623db0d3c80f3bdcc420443a1f1bef5b05d5c3f05224454940d6b15a79cf7a60001b612ecd565b6128d67f6790b862686e7260758f8b8fdeb85af2bd18730cc4450ed298f4145bdd814f5660001b612ecd565b6129027f32b4c05e58681d15961b7f93c7947e2351fa10b56f5a4ef2a5f08adca0f9328860001b612ecd565b61290a612fae565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461299b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299290613177565b60405180910390fd5b6129c77f44efa8967badc2fac0a1ae277bb4bb0ca848fcc3b6f4382d596d62228b736ae060001b612ecd565b6129f37f305b235a7b9b95087fe80dfb40addf3c2eae2594dbc4e30183e0193b25c8779760001b612ecd565b612a1f7f6d9837a790d1b4c65065036da64f8de8d37e5745d74a520d218c0863938b01fe60001b612ecd565b612a4b7fe189f2a6510b48f92053558160bf3f072a3b862091c5b280dc80df72181376b860001b612ecd565b612a777f2207d0f0c221358cb1eca92c0617ad250aa358e5d65187cbb9bde567de51a69360001b612ecd565b6000612a81612ed0565b9050612aaf7ff19e70aff32cba5c51bc83206a7189c01812ad47fcc0c30447098e81dd4b77e560001b612ecd565b612adb7fbad4fb00096769d6de80c20d2ba89cdc9786c1e041a09437a7b2b85574198fa960001b612ecd565b818160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000612b507fa3030b95091038c8f80b22681c0c403caa6ebd7e5f514b4492737c25f979bede60001b612ecd565b612b7c7fca8b3a45f642d49eba24ae6301abb0530b9e580e9b13ac1e4e2fd8550f060d9160001b612ecd565b612ba87f987d022e10b7fd75a171c762c26de40007eacc2d0c29131568b80388b8645a3d60001b612ecd565b6000612bb2612ed0565b9050612be07f1926bcdf83cf77b4b66d0f2f827a733572f7ecd018d56ebdeb9905d41db0c87b60001b612ecd565b612c0c7f6719704c65fcb84eeba5088bb81a89f45d6c4e2e600fbbfb4589767f1357e91960001b612ecd565b8060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b612c637fa9c1252939b1e987c3d69760e70867180af5f7e58f009caedbe27e0f8c193fef60001b612ecd565b612c8f7ff0623db0d3c80f3bdcc420443a1f1bef5b05d5c3f05224454940d6b15a79cf7a60001b612ecd565b612cbb7f6790b862686e7260758f8b8fdeb85af2bd18730cc4450ed298f4145bdd814f5660001b612ecd565b612ce77f32b4c05e58681d15961b7f93c7947e2351fa10b56f5a4ef2a5f08adca0f9328860001b612ecd565b612cef612fae565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612d80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7790613177565b60405180910390fd5b612dac7f44efa8967badc2fac0a1ae277bb4bb0ca848fcc3b6f4382d596d62228b736ae060001b612ecd565b612dd87f305b235a7b9b95087fe80dfb40addf3c2eae2594dbc4e30183e0193b25c8779760001b612ecd565b612e047fef167be064a2cd9c8fd5d1f13e3e0f868cc88e954bd16e012446f312913afb2d60001b612ecd565b612e307f27d4beff7afc2ea11234a870bd1b1e8d3833be34a1175586782f102dbba1862960001b612ecd565b612e5c7fe25246e39b2a65df62ec97d6acf45385b8f6665ee0e3c42ae3d62ec04f25a38660001b612ecd565b6000612e66612ed0565b9050612e947f7faf2179687511ec1d700fdd7decee08bacbe0308a7f82cb8867f9cfbf7a26b060001b612ecd565b612ec07fcd19429b47a44851e6aff62e57680c858455d3d9276c83dc50d0e7b68b1cee9d60001b612ecd565b8181600901819055505050565b50565b6000612efe7f78558955dfed394e1427fd45d4026c43658ff579c22ae918aa6d2af7e6dd5a9260001b612fdb565b612f2a7f51bdae8ebb27f00d941c19042c69e48a3c338145bff0932879bdcf0737c52d1460001b612fdb565b612f567f0bf3d59cb15eef5dc4f188b20ceeb4eded1fc74baf95b9cd6008160d2b5a24ba60001b612fdb565b60007f6ee8bf8f33d87ee8fc792bdab0fa8c5d1fb2132b416aab215664bf4732bc29979050612fa77f309726334adf11f744604bf5475c40475102a2dfaa8928583fa16013c9aedf5760001b612fdb565b8091505090565b6000807f8a22373512790c48b83a1fe2efdd2888d4a917bcdc24d0adf63e60f67168046090508091505090565b50565b600060208201905082825292915050565b60018060a01b038116811461300357600080fd5b50565b60006020828403121561301857600080fd5b813561302381612fef565b8091505092915050565b600060208201905060018060a01b038316825292915050565b60006020828403121561305857600080fd5b8135905092915050565b600060208201905060018060a01b038316825292915050565b60006020828403121561308d57600080fd5b813561309881612fef565b8091505092915050565b6000806000806000806000806000806101408b8d0312156130c257600080fd5b8a356130cd81612fef565b809a505060208b01356130df81612fef565b8099505060408b01356130f181612fef565b8098505060608b0135965060808b0135955060a08b0135945060c08b0135935060e08b013592506101008b013591506101208b013590509295989b9194979a5092959850565b60006020828403121561314957600080fd5b813561315481612fef565b8091505092915050565b600060208201905060018060a01b038316825292915050565b60208152601d60208201527f4f776e61626c653a2073656e646572206d757374206265206f776e65720000006040820152600060608201905091905056fea264697066735822122029dec5cfe3ac96117dd670ff79beca47120e6c0c9101d3dddbbc7d09eca5780364736f6c63430008100033"; type PCOLicenseParamsFacetConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/RegistryDiamond__factory.ts b/typechain-types/factories/RegistryDiamond__factory.ts index 5cd8b9e..93a37a0 100644 --- a/typechain-types/factories/RegistryDiamond__factory.ts +++ b/typechain-types/factories/RegistryDiamond__factory.ts @@ -288,7 +288,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b506000620000296200048160201b62000d1a1760201c565b60408051600c8082526101a08201909252919250600091906020820161018080368337019050509050631f931c1c60e01b816000815181106200007057620000706200103a565b6001600160e01b0319909216602092830291909101820152620000aa9083906307e4c70760e21b9060019062000d3e620004a5821b17901c565b637a0ed62760e01b81600181518110620000c857620000c86200103a565b6001600160e01b03199092166020928302919091019091015280516356fe50af60e11b90829060029081106200010257620001026200103a565b6001600160e01b03199092166020928302919091019091015280516314bbdacb60e21b90829060039081106200013c576200013c6200103a565b6001600160e01b03199092166020928302919091019091015280516366ffd66360e11b90829060049081106200017657620001766200103a565b6001600160e01b0319909216602092830291909101820152620001b09083906348e2b09360e01b9060019062000d3e620004a5821b17901c565b6301ffc9a760e01b81600581518110620001ce57620001ce6200103a565b6001600160e01b0319909216602092830291909101820152620002089083906301ffc9a760e01b9060019062000d3e620004a5821b17901c565b638da5cb5b60e01b816006815181106200022657620002266200103a565b6001600160e01b031990921660209283029190910190910152805163455a8a8560e11b90829060079081106200026057620002606200103a565b6001600160e01b031990921660209283029190910190910152805163f2fde38b60e01b90829060089081106200029a576200029a6200103a565b6001600160e01b03199092166020928302919091019091015280516379ba509760e01b9082906009908110620002d457620002d46200103a565b6001600160e01b03199092166020928302919091018201526200030e9083906307f5828d60e41b9060019062000d3e620004a5821b17901c565b632c40805960e01b81600a815181106200032c576200032c6200103a565b6001600160e01b0319909216602092830291909101909101528051639142376560e01b908290600b9081106200036657620003666200103a565b6001600160e01b03199290921660209283029190910190910152604080516001808252818301909252600091816020015b604080516060808201835260008083526020830152918101919091528152602001906001900390816200039757905050604080516060810190915230815290915060208101600081526020018381525081600081518110620003fd57620003fd6200103a565b60200260200101819052506200044a81600060405180602001604052806000815250620004346200053360201b62000dc61760201c565b6200055760201b62000dea17909392919060201c565b6200047833620004646200078360201b62000fc61760201c565b620007a760201b62000fea1790919060201c565b505050620011df565b7f326d0c59a7612f6a9919e2a8ee333c80ba689d8ba2634de89c85cbb04832e70590565b6001600160e01b03198083169003620005055760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e746572666163652069640000000060448201526064015b60405180910390fd5b6001600160e01b03199190911660009081526020929092526040909120805460ff1916911515919091179055565b7f177481ac65e4292921c69f62d1cc7f57541261e5d61c8175cf4e36a01c9bfc9390565b600184015461ffff811690819060009060071615620005885750600381901c60009081526002870160205260409020545b60005b8651811015620006f1576000878281518110620005ac57620005ac6200103a565b60200260200101519050600081602001519050600082604001515111620006225760405162461bcd60e51b815260206004820152602360248201527f4469616d6f6e64426173653a206e6f2073656c6563746f7273207370656369666044820152621a595960ea1b6064820152608401620004fc565b600081600281111562000639576200063962001050565b0362000668576200065d8585848d620007c460201b6200100717909392919060201c565b9095509350620006e6565b60018160028111156200067f576200067f62001050565b03620006a5576200069f828b6200099660201b620011ba1790919060201c565b620006e6565b6002816002811115620006bc57620006bc62001050565b03620006e657620006e08585848d62000bd760201b620013b217909392919060201c565b90955093505b50506001016200058b565b508282146200070e5760018701805461ffff191661ffff84161790555b60078216156200073157600382901c600090815260028801602052604090208190555b7f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738686866040516200076693929190620010ba565b60405180910390a16200077a858562000ea5565b50505050505050565b7f8a22373512790c48b83a1fe2efdd2888d4a917bcdc24d0adf63e60f67168046090565b81546001600160a01b0319166001600160a01b0391909116179055565b805160009081906001600160a01b03163014806200080057506200080083600001516001600160a01b03166200103460201b620003a41760201c565b6200085a5760405162461bcd60e51b815260206004820152602360248201527f4469616d6f6e64426173653a204144442074617267657420686173206e6f20636044820152626f646560e81b6064820152608401620004fc565b60005b83604001515181101562000989576000846040015182815181106200088657620008866200103a565b6020908102919091018101516001600160e01b031981166000908152918a9052604090912054909150606081901c156200090f5760405162461bcd60e51b815260206004820152602360248201527f4469616d6f6e64426173653a2073656c6563746f7220616c726561647920616460448201526219195960ea1b6064820152608401620004fc565b85516001600160e01b0319838116600081815260208d90526040902060609390931b6001600160601b0319168b1790925560058a901b60e090811692831c91831c199990991617978190036200097957600389901c600090815260028b0160205260408120989098555b505050600195860195016200085d565b5093959294509192505050565b620009b981600001516001600160a01b03166200103460201b620003a41760201c565b62000a175760405162461bcd60e51b815260206004820152602760248201527f4469616d6f6e64426173653a205245504c4143452074617267657420686173206044820152666e6f20636f646560c81b6064820152608401620004fc565b60005b81604001515181101562000bd25760008260400151828151811062000a435762000a436200103a565b6020908102919091018101516001600160e01b03198116600090815291869052604090912054909150606081901c8062000ac05760405162461bcd60e51b815260206004820152601f60248201527f4469616d6f6e64426173653a2073656c6563746f72206e6f7420666f756e64006044820152606401620004fc565b306001600160a01b0382160362000b145760405162461bcd60e51b815260206004820152602260248201526000805160206200317a8339815191526044820152616c6560f01b6064820152608401620004fc565b84600001516001600160a01b0316816001600160a01b03160362000b8c5760405162461bcd60e51b815260206004820152602860248201527f4469616d6f6e64426173653a205245504c41434520746172676574206973206960448201526719195b9d1a58d85b60c21b6064820152608401620004fc565b5083516001600160e01b031992909216600090815260208690526040902060609290921b6001600160601b0319166001600160601b039190911617905560010162000a1a565b505050565b805160009081906001600160a01b03161562000c4e5760405162461bcd60e51b815260206004820152602f60248201527f4469616d6f6e64426173653a2052454d4f564520746172676574206d7573742060448201526e6265207a65726f206164647265737360881b6064820152608401620004fc565b600385901c6007861660005b85604001515181101562000e915760008660400151828151811062000c835762000c836200103a565b6020908102919091018101516001600160e01b031981166000908152918c9052604090912054909150606081901c62000cff5760405162461bcd60e51b815260206004820152601f60248201527f4469616d6f6e64426173653a2073656c6563746f72206e6f7420666f756e64006044820152606401620004fc565b30606082901c0362000d4e5760405162461bcd60e51b815260206004820152602260248201526000805160206200317a8339815191526044820152616c6560f01b6064820152608401620004fc565b600089900362000d7c57600019909401600081815260028c0160205260409020549850936007935062000d84565b600019909301925b600584901b89901b6000806001600160e01b03198084169086161462000dd7576001600160e01b03198316600090815260208f90526040902080546001600160601b0319166001600160601b0386161790555b50506001600160e01b03198316600090815260208d90526040812055611fff600383901c1660e0600584901b1687821462000e3c57600082815260028f016020526040902080546001600160e01b031980841c19909116908516831c17905562000e60565b80836001600160e01b031916901c816001600160e01b031960001b901c198d16179b505b8660000362000e7f57600088815260028f01602052604081208190559b505b50506001909301925062000c5a915050565b5060039190911b1796939550929350505050565b8051156001600160a01b038316151462000f195760405162461bcd60e51b815260206004820152602e60248201527f4469616d6f6e64426173653a20696e76616c696420696e697469616c697a617460448201526d696f6e20706172616d657465727360901b6064820152608401620004fc565b6001600160a01b0382161562001030576001600160a01b038216301462000fbe5762000f59826001600160a01b03166200103460201b620003a41760201c565b62000fbe5760405162461bcd60e51b815260206004820152602e60248201527f4469616d6f6e64426173653a20696e697469616c697a6174696f6e207461726760448201526d657420686173206e6f20636f646560901b6064820152608401620004fc565b6000826001600160a01b03168260405162000fda9190620011c1565b600060405180830381855af49150503d806000811462001017576040519150601f19603f3d011682016040523d82523d6000602084013e6200101c565b606091505b505090508062000bd2573d6000803e3d6000fd5b5050565b3b151590565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b60005b838110156200108357818101518382015260200162001069565b50506000910152565b60008151808452620010a681602086016020860162001066565b601f01601f19169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b848110156200118f57898403607f19018652815180516001600160a01b031685528381015189860190600381106200112b57634e487b7160e01b600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b80831015620011795783516001600160e01b03191682529286019260019290920191908601906200114d565b50978501979550505090820190600101620010e3565b50506001600160a01b038a16908801528681036040880152620011b381896200108c565b9a9950505050505050505050565b60008251620011d581846020870162001066565b9190910192915050565b611f8b80620011ef6000396000f3fe6080604052600436106100ab5760003560e01c80638ab5150a116100645780638ab5150a1461022a5780638da5cb5b1461023f5780639142376514610254578063adfca15e14610274578063cdffacc6146102a1578063f2fde38b146102c1576100b2565b806301ffc9a71461014f5780631f931c1c146101845780632c408059146101a457806352ef6b2c146101d157806379ba5097146101f35780637a0ed62714610208576100b2565b366100b257005b60006100bc6102e1565b90506001600160a01b0381163b6101295760405162461bcd60e51b815260206004820152602660248201527f50726f78793a20696d706c656d656e746174696f6e206d75737420626520636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e808015610148573d6000f35b3d6000fd5b005b34801561015b57600080fd5b5061016f61016a3660046118cc565b6103aa565b60405190151581526020015b60405180910390f35b34801561019057600080fd5b5061014d61019f366004611947565b6103df565b3480156101b057600080fd5b506101b9610474565b6040516001600160a01b03909116815260200161017b565b3480156101dd57600080fd5b506101e6610490565b60405161017b91906119f9565b3480156101ff57600080fd5b5061014d610633565b34801561021457600080fd5b5061021d6106b7565b60405161017b9190611a8b565b34801561023657600080fd5b506101b9610adf565b34801561024b57600080fd5b506101b9610aee565b34801561026057600080fd5b5061014d61026f366004611b08565b610af8565b34801561028057600080fd5b5061029461028f366004611b08565b610b5d565b60405161017b9190611b23565b3480156102ad57600080fd5b506101b96102bc3660046118cc565b610ca9565b3480156102cd57600080fd5b5061014d6102dc366004611b08565b610cd6565b600080356001600160e01b03191681527f177481ac65e4292921c69f62d1cc7f57541261e5d61c8175cf4e36a01c9bfc9360208190526040822054819060601c8061039d575060038201546001600160a01b03168061039d5760405162461bcd60e51b815260206004820152603260248201527f4469616d6f6e64426173653a206e6f20666163657420666f756e6420666f722060448201527166756e6374696f6e207369676e617475726560701b6064820152608401610120565b9392505050565b3b151590565b60006103d9826103b8610d1a565b906001600160e01b0319166000908152602091909152604090205460ff1690565b92915050565b6103e761164a565b6001600160a01b0316336001600160a01b0316146104175760405162461bcd60e51b815260040161012090611b65565b61046d6104248587611c30565b8484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506104659250610dc6915050565b929190610dea565b5050505050565b600061047e610dc6565b600301546001600160a01b0316919050565b6060600061049c610dc6565b600181015490915061ffff1667ffffffffffffffff8111156104c0576104c0611b9c565b6040519080825280602002602001820160405280156104e9578160200160208202803683370190505b50915060008060005b600184015461ffff1682101561062b576000818152600285016020526040812054905b6008811015610616578361052881611d7a565b600188015490955061ffff168511905061061657600581901b82901b6001600160e01b0319811660009081526020889052604081205460601c90805b888110156105b9578a818151811061057e5761057e611d93565b60200260200101516001600160a01b0316836001600160a01b0316036105a757600191506105b9565b806105b181611d7a565b915050610564565b5080156105c857505050610604565b818a89815181106105db576105db611d93565b6001600160a01b0390921660209283029190910190910152876105fd81611d7a565b9850505050505b8061060e81611d7a565b915050610515565b5050808061062390611d7a565b9150506104f2565b505082525090565b61063b611663565b6001600160a01b0316336001600160a01b0316146106ad5760405162461bcd60e51b815260206004820152602960248201527f536166654f776e61626c653a2073656e646572206d757374206265206e6f6d696044820152683732b29037bbb732b960b91b6064820152608401610120565b6106b561168b565b565b606060006106c3610dc6565b600181015490915061ffff1667ffffffffffffffff8111156106e7576106e7611b9c565b60405190808252806020026020018201604052801561072d57816020015b6040805180820190915260008152606060208201528152602001906001900390816107055790505b50600182015490925060009061ffff1667ffffffffffffffff81111561075557610755611b9c565b60405190808252806020026020018201604052801561077e578160200160208202803683370190505b50905060008060005b600185015461ffff16821015610a6d576000818152600286016020526040812054905b6008811015610a5857836107bd81611d7a565b600189015490955061ffff1685119050610a5857600581901b82901b6001600160e01b0319811660009081526020899052604081205460601c90805b8881101561091657826001600160a01b03168c828151811061081d5761081d611d93565b6020026020010151600001516001600160a01b03160361090457838c828151811061084a5761084a611d93565b6020026020010151602001518b838151811061086857610868611d93565b602002602001015160ff168151811061088357610883611d93565b60200260200101906001600160e01b03191690816001600160e01b0319168152505060ff8a82815181106108b9576108b9611d93565b602002602001015160ff16106108ce57600080fd5b8981815181106108e0576108e0611d93565b6020026020010180518091906108f590611da9565b60ff1690525060019150610916565b8061090e81611d7a565b9150506107f9565b50801561092557505050610a46565b818b898151811061093857610938611d93565b60209081029190910101516001600160a01b03909116905260018a015461ffff1667ffffffffffffffff81111561097157610971611b9c565b60405190808252806020026020018201604052801561099a578160200160208202803683370190505b508b89815181106109ad576109ad611d93565b602002602001015160200181905250828b89815181106109cf576109cf611d93565b6020026020010151602001516000815181106109ed576109ed611d93565b60200260200101906001600160e01b03191690816001600160e01b031916815250506001898981518110610a2357610a23611d93565b60ff9092166020928302919091019091015287610a3f81611d7a565b9850505050505b80610a5081611d7a565b9150506107aa565b50508080610a6590611d7a565b915050610787565b5060005b82811015610ad4576000848281518110610a8d57610a8d611d93565b602002602001015160ff1690506000878381518110610aae57610aae611d93565b602002602001015160200151905081815250508080610acc90611d7a565b915050610a71565b508185525050505090565b6000610ae9611663565b905090565b6000610ae961164a565b610b0061164a565b6001600160a01b0316336001600160a01b031614610b305760405162461bcd60e51b815260040161012090611b65565b80610b39610dc6565b60030180546001600160a01b0319166001600160a01b039290921691909117905550565b60606000610b69610dc6565b600181015490915061ffff1667ffffffffffffffff811115610b8d57610b8d611b9c565b604051908082528060200260200182016040528015610bb6578160200160208202803683370190505b50915060008060005b600184015461ffff16821015610c9f576000818152600285016020526040812054905b6008811015610c8a5783610bf581611d7a565b600188015490955061ffff1685119050610c8a57600581901b82901b6001600160e01b0319811660009081526020889052604090205460601c6001600160a01b038a1603610c775780888781518110610c5057610c50611d93565b6001600160e01b03199092166020928302919091019091015285610c7381611d7a565b9650505b5080610c8281611d7a565b915050610be2565b50508080610c9790611d7a565b915050610bbf565b5050825250919050565b6000610cb3610dc6565b6001600160e01b0319909216600090815260209290925250604090205460601c90565b610cde61164a565b6001600160a01b0316336001600160a01b031614610d0e5760405162461bcd60e51b815260040161012090611b65565b610d1781611708565b50565b7f326d0c59a7612f6a9919e2a8ee333c80ba689d8ba2634de89c85cbb04832e70590565b6001600160e01b03198083169003610d985760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e74657266616365206964000000006044820152606401610120565b6001600160e01b03199190911660009081526020929092526040909120805460ff1916911515919091179055565b7f177481ac65e4292921c69f62d1cc7f57541261e5d61c8175cf4e36a01c9bfc9390565b600184015461ffff811690819060009060071615610e1a5750600381901c60009081526002870160205260409020545b60005b8651811015610f3a576000878281518110610e3a57610e3a611d93565b60200260200101519050600081602001519050600082604001515111610eae5760405162461bcd60e51b815260206004820152602360248201527f4469616d6f6e64426173653a206e6f2073656c6563746f7273207370656369666044820152621a595960ea1b6064820152608401610120565b6000816002811115610ec257610ec2611dc8565b03610edd57610ed38a868685611007565b9095509350610f30565b6001816002811115610ef157610ef1611dc8565b03610f0557610f008a836111ba565b610f30565b6002816002811115610f1957610f19611dc8565b03610f3057610f2a8a8686856113b2565b90955093505b5050600101610e1d565b50828214610f565760018701805461ffff191661ffff84161790555b6007821615610f7857600382901c600090815260028801602052604090208190555b7f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673868686604051610fab93929190611e2e565b60405180910390a1610fbd8585611711565b50505050505050565b7f8a22373512790c48b83a1fe2efdd2888d4a917bcdc24d0adf63e60f67168046090565b81546001600160a01b0319166001600160a01b0391909116179055565b805160009081906001600160a01b031630148061102e575082516001600160a01b03163b15155b6110865760405162461bcd60e51b815260206004820152602360248201527f4469616d6f6e64426173653a204144442074617267657420686173206e6f20636044820152626f646560e81b6064820152608401610120565b60005b8360400151518110156111ad576000846040015182815181106110ae576110ae611d93565b6020908102919091018101516001600160e01b031981166000908152918a9052604090912054909150606081901c156111355760405162461bcd60e51b815260206004820152602360248201527f4469616d6f6e64426173653a2073656c6563746f7220616c726561647920616460448201526219195960ea1b6064820152608401610120565b85516001600160e01b0319838116600081815260208d90526040902060609390931b6001600160601b0319168b1790925560058a901b60e090811692831c91831c1999909916179781900361119e57600389901c600090815260028b0160205260408120989098555b50505060019586019501611089565b5093959294509192505050565b80516001600160a01b03163b6112225760405162461bcd60e51b815260206004820152602760248201527f4469616d6f6e64426173653a205245504c4143452074617267657420686173206044820152666e6f20636f646560c81b6064820152608401610120565b60005b8160400151518110156113ad5760008260400151828151811061124a5761124a611d93565b6020908102919091018101516001600160e01b03198116600090815291869052604090912054909150606081901c806112c55760405162461bcd60e51b815260206004820152601f60248201527f4469616d6f6e64426173653a2073656c6563746f72206e6f7420666f756e64006044820152606401610120565b306001600160a01b038216036112ed5760405162461bcd60e51b815260040161012090611ef7565b84600001516001600160a01b0316816001600160a01b0316036113635760405162461bcd60e51b815260206004820152602860248201527f4469616d6f6e64426173653a205245504c41434520746172676574206973206960448201526719195b9d1a58d85b60c21b6064820152608401610120565b5083516001600160e01b031992909216600090815260208690526040902060609290921b6001600160601b0319166bffffffffffffffffffffffff91909116179055600101611225565b505050565b805160009081906001600160a01b0316156114275760405162461bcd60e51b815260206004820152602f60248201527f4469616d6f6e64426173653a2052454d4f564520746172676574206d7573742060448201526e6265207a65726f206164647265737360881b6064820152608401610120565b600385901c6007861660005b8560400151518110156116365760008660400151828151811061145857611458611d93565b6020908102919091018101516001600160e01b031981166000908152918c9052604090912054909150606081901c6114d25760405162461bcd60e51b815260206004820152601f60248201527f4469616d6f6e64426173653a2073656c6563746f72206e6f7420666f756e64006044820152606401610120565b30606082901c036114f55760405162461bcd60e51b815260040161012090611ef7565b600089900361152157600019909401600081815260028c01602052604090205498509360079350611529565b600019909301925b600584901b89901b6000806001600160e01b031980841690861614611580576001600160e01b03198316600090815260208f90526040902080546001600160601b0319166bffffffffffffffffffffffff86161790555b50506001600160e01b03198316600090815260208d90526040812055611fff600383901c1660e0600584901b168782146115e357600082815260028f016020526040902080546001600160e01b031980841c19909116908516831c179055611607565b80836001600160e01b031916901c816001600160e01b031960001b901c198d16179b505b8660000361162557600088815260028f01602052604081208190559b505b505060019093019250611433915050565b5060039190911b1796939550929350505050565b6000611654610fc6565b546001600160a01b0316919050565b60007f24aa1f7b31fd188a8d3ecfb06bc55c806040e59b03bd4396283442fce6617890611654565b6000611695610fc6565b805460405191925033916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36116db8133610fea565b610d1760007f24aa1f7b31fd188a8d3ecfb06bc55c806040e59b03bd4396283442fce66178905b90610fea565b610d1781611881565b8051156001600160a01b03831615146117835760405162461bcd60e51b815260206004820152602e60248201527f4469616d6f6e64426173653a20696e76616c696420696e697469616c697a617460448201526d696f6e20706172616d657465727360901b6064820152608401610120565b6001600160a01b0382161561187d576001600160a01b0382163014611810576001600160a01b0382163b6118105760405162461bcd60e51b815260206004820152602e60248201527f4469616d6f6e64426173653a20696e697469616c697a6174696f6e207461726760448201526d657420686173206e6f20636f646560901b6064820152608401610120565b6000826001600160a01b03168260405161182a9190611f39565b600060405180830381855af49150503d8060008114611865576040519150601f19603f3d011682016040523d82523d6000602084013e61186a565b606091505b50509050806113ad573d6000803e3d6000fd5b5050565b610d1781610d17817f24aa1f7b31fd188a8d3ecfb06bc55c806040e59b03bd4396283442fce6617890611702565b80356001600160e01b0319811681146118c757600080fd5b919050565b6000602082840312156118de57600080fd5b61039d826118af565b80356001600160a01b03811681146118c757600080fd5b60008083601f84011261191057600080fd5b50813567ffffffffffffffff81111561192857600080fd5b60208301915083602082850101111561194057600080fd5b9250929050565b60008060008060006060868803121561195f57600080fd5b853567ffffffffffffffff8082111561197757600080fd5b818801915088601f83011261198b57600080fd5b81358181111561199a57600080fd5b8960208260051b85010111156119af57600080fd5b602083019750809650506119c5602089016118e7565b945060408801359150808211156119db57600080fd5b506119e8888289016118fe565b969995985093965092949392505050565b6020808252825182820181905260009190848201906040850190845b81811015611a3a5783516001600160a01b031683529284019291840191600101611a15565b50909695505050505050565b600081518084526020808501945080840160005b83811015611a805781516001600160e01b03191687529582019590820190600101611a5a565b509495945050505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b83811015611afa57888303603f19018552815180516001600160a01b03168452870151878401879052611ae787850182611a46565b9588019593505090860190600101611ab2565b509098975050505050505050565b600060208284031215611b1a57600080fd5b61039d826118e7565b6020808252825182820181905260009190848201906040850190845b81811015611a3a5783516001600160e01b03191683529284019291840191600101611b3f565b6020808252601d908201527f4f776e61626c653a2073656e646572206d757374206265206f776e6572000000604082015260600190565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715611bd557611bd5611b9c565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611c0457611c04611b9c565b604052919050565b600067ffffffffffffffff821115611c2657611c26611b9c565b5060051b60200190565b6000611c43611c3e84611c0c565b611bdb565b83815260208082019190600586811b860136811115611c6157600080fd5b865b81811015611d5757803567ffffffffffffffff80821115611c845760008081fd5b818a01915060608236031215611c9a5760008081fd5b611ca2611bb2565b611cab836118e7565b81528683013560038110611cbf5760008081fd5b8188015260408381013583811115611cd75760008081fd5b939093019236601f850112611cee57600092508283fd5b83359250611cfe611c3e84611c0c565b83815292871b84018801928881019036851115611d1b5760008081fd5b948901945b84861015611d4057611d31866118af565b82529489019490890190611d20565b918301919091525088525050948301948301611c63565b5092979650505050505050565b634e487b7160e01b600052601160045260246000fd5b600060018201611d8c57611d8c611d64565b5060010190565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff8103611dbf57611dbf611d64565b60010192915050565b634e487b7160e01b600052602160045260246000fd5b60005b83811015611df9578181015183820152602001611de1565b50506000910152565b60008151808452611e1a816020860160208601611dde565b601f01601f19169290920160200192915050565b6000606080830181845280875180835260808601915060808160051b87010192506020808a016000805b84811015611ec757898703607f19018652825180516001600160a01b031688528481015160038110611e9857634e487b7160e01b84526021600452602484fd5b88860152604090810151908801899052611eb489890182611a46565b9750509483019491830191600101611e58565b5050506001600160a01b0389169087015250508381036040850152611eec8186611e02565b979650505050505050565b60208082526022908201527f4469616d6f6e64426173653a2073656c6563746f7220697320696d6d757461626040820152616c6560f01b606082015260800190565b60008251611f4b818460208701611dde565b919091019291505056fea26469706673582212201d8300bd5a027eee58fc780803946b0d4bb1abf1b605ec1fe558cbc8988955fc64736f6c634300081000334469616d6f6e64426173653a2073656c6563746f7220697320696d6d75746162"; + "0x60806040523480156200001157600080fd5b50600062000029620007b760201b620012581760201c565b90506000600c67ffffffffffffffff8111156200004b576200004a62001917565b5b6040519080825280602002602001820160405280156200007a5781602001602082028036833780820191505090505b509050631f931c1c60e01b816000815181106200009c576200009b6200192d565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681525050620001257f1f931c1c00000000000000000000000000000000000000000000000000000000600184620007e460201b62001285179092919060201c565b637a0ed62760e01b816001815181106200014457620001436200192d565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152505063adfca15e60e01b81600281518110620001af57620001ae6200192d565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815250506352ef6b2c60e01b816003815181106200021a57620002196200192d565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152505063cdffacc660e01b816004815181106200028557620002846200192d565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815250506200030e7f48e2b09300000000000000000000000000000000000000000000000000000000600184620007e460201b62001285179092919060201c565b6301ffc9a760e01b816005815181106200032d576200032c6200192d565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681525050620003b67f01ffc9a700000000000000000000000000000000000000000000000000000000600184620007e460201b62001285179092919060201c565b638da5cb5b60e01b81600681518110620003d557620003d46200192d565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681525050638ab5150a60e01b8160078151811062000440576200043f6200192d565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152505063f2fde38b60e01b81600881518110620004ab57620004aa6200192d565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815250506379ba509760e01b816009815181106200051657620005156200192d565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815250506200059f7f7f5828d000000000000000000000000000000000000000000000000000000000600184620007e460201b62001285179092919060201c565b632c40805960e01b81600a81518110620005be57620005bd6200192d565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681525050639142376560e01b81600b815181106200062957620006286200192d565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815250506000600167ffffffffffffffff81111562000695576200069462001917565b5b604051908082528060200260200182016040528015620006d257816020015b620006be620018cb565b815260200190600190039081620006b45790505b50905060405180606001604052803073ffffffffffffffffffffffffffffffffffffffff1681526020016000600281111562000713576200071262001943565b5b815260200183815250816000815181106200073357620007326200192d565b5b602002602001018190525062000780816000604051806020016040528060008152506200076a620008bf60201b6200135d1760201c565b620008ec60201b6200138a17909392919060201c565b620007ae336200079a62000b8460201b620015e11760201c565b62000bb160201b6200160e1790919060201c565b50505062001ef9565b6000807f326d0c59a7612f6a9919e2a8ee333c80ba689d8ba2634de89c85cbb04832e70590508091505090565b63ffffffff60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036200084f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008469062001959565b60405180910390fd5b80836000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000807f177481ac65e4292921c69f62d1cc7f57541261e5d61c8175cf4e36a01c9bfc9390508091505090565b60008460010160009054906101000a900461ffff1661ffff16905060008190506000806007831611156200093757866002016000600384901c81526020019081526020016000205490505b60005b865181101562000ad75760008782815181106200095c576200095b6200192d565b5b60200260200101519050600081602001519050600082604001515111620009ba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009b19062001997565b60405180910390fd5b60006002811115620009d157620009d062001943565b5b816002811115620009e757620009e662001943565b5b0362000a195762000a0b8585848d62000bf860201b6200165517909392919060201c565b809550819650505062000ac7565b6001600281111562000a305762000a2f62001943565b5b81600281111562000a465762000a4562001943565b5b0362000a6c5762000a66828b62000ed260201b620019151790919060201c565b62000ac6565b60028081111562000a825762000a8162001943565b5b81600281111562000a985762000a9762001943565b5b0362000ac55762000abc8585848d620011ca60201b62001bef17909392919060201c565b80955081965050505b5b5b505080806001019150506200093a565b5082821462000b0057818760010160006101000a81548161ffff021916908361ffff1602179055505b600060078316111562000b2c5780876002016000600385901c8152602001908152602001600020819055505b7f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67386868660405162000b619392919062001a66565b60405180910390a162000b7b8585620016df60201b60201c565b50505050505050565b6000807f8a22373512790c48b83a1fe2efdd2888d4a917bcdc24d0adf63e60f67168046090508091505090565b808260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000803073ffffffffffffffffffffffffffffffffffffffff16836000015173ffffffffffffffffffffffffffffffffffffffff16148062000c66575062000c65836000015173ffffffffffffffffffffffffffffffffffffffff16620018b860201b620004df1760201c565b5b62000ca8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c9f9062001b7b565b60405180910390fd5b60005b83604001515181101562000ec25760008460400151828151811062000cd55762000cd46200192d565b5b602002602001015190506000886000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020549050600073ffffffffffffffffffffffffffffffffffffffff168160601c73ffffffffffffffffffffffffffffffffffffffff161462000dac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000da39062001bdf565b60405180910390fd5b8760001b866000015160601b6bffffffffffffffffffffffff191617896000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020819055506000600560078a16901b905080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c817fffffffff0000000000000000000000000000000000000000000000000000000060001b901c19891617975060e0810362000ea957878a600201600060038c901c8152602001908152602001600020819055506000801b97505b8880600101995050505050808060010191505062000cab565b5084849150915094509492505050565b62000f02816000015173ffffffffffffffffffffffffffffffffffffffff16620018b860201b620004df1760201c565b62000f44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000f3b9062001c43565b60405180910390fd5b60005b816040015151811015620011c55760008260400151828151811062000f715762000f706200192d565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002054905060008160601c9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200104d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620010449062001ca7565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620010be576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620010b59062001ce5565b60405180910390fd5b846000015173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362001133576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200112a9062001d49565b60405180910390fd5b846000015160601b6bffffffffffffffffffffffff19166bffffffffffffffffffffffff60001b831617866000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002081905550505050808060010191505062000f47565b505050565b600080600073ffffffffffffffffffffffffffffffffffffffff16836000015173ffffffffffffffffffffffffffffffffffffffff161462001243576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200123a9062001dad565b60405180910390fd5b6000600386901c9050600060078716905060005b856040015151811015620016c4576000866040015182815181106200128157620012806200192d565b5b6020026020010151905060008a6000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020549050600073ffffffffffffffffffffffffffffffffffffffff168160601c73ffffffffffffffffffffffffffffffffffffffff160362001358576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200134f9062001ca7565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168160601c73ffffffffffffffffffffffffffffffffffffffff1603620013cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620013c39062001ce5565b60405180910390fd5b6000801b890362001402578480600190039550508a6002016000868152602001908152602001600020549850600793506200140c565b8380600190039450505b6000806000600587901b8c901b9250847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146200152f578d6000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020546bffffffffffffffffffffffff19166bffffffffffffffffffffffff60001b8516178e6000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020819055505b8d6000016000867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000206000905560008460001c61ffff169050600381901c9250600560078216901b915050878214620016375760008e600201600084815260200190815260200160002054905081847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c827fffffffff0000000000000000000000000000000000000000000000000000000060001b901c198216179050808f6002016000858152602001908152602001600020819055505062001688565b80837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c817fffffffff0000000000000000000000000000000000000000000000000000000060001b901c198d16179b505b60008703620016b1578d6002016000898152602001908152602001600020600090556000801b9b505b5050505050808060010191505062001257565b5080600383901b179650868693509350505094509492505050565b60008151141515600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515146200175b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620017529062001e11565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614620018b4573073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146200183357620017f08273ffffffffffffffffffffffffffffffffffffffff16620018b860201b620004df1760201c565b62001832576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620018299062001e75565b60405180910390fd5b5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516200185c919062001ed9565b600060405180830381855af49150503d806000811462001899576040519150601f19603f3d011682016040523d82523d6000602084013e6200189e565b606091505b5050905080620018b2573d6000803e3d6000fd5b505b5050565b600080823b905060008111915050919050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600060028111156200190a576200190962001943565b5b8152602001606081525090565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b60208152601c60208201527f4552433136353a20696e76616c696420696e746572666163652069640000000060408201526000606082019050919050565b60208152602360208201527f4469616d6f6e64426173653a206e6f2073656c6563746f72732073706563696660408201527f696564000000000000000000000000000000000000000000000000000000000060608201526000608082019050919050565b60018060a01b03811682525050565b60005b8381101562001a2a57808201518184015260208101905062001a0d565b50600083830152505050565b6000815180845262001a5081602086016020860162001a0a565b6020601f19601f83011685010191505092915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b8481101562001b4757607f198a8503018652815188850160018060a01b038251168652848201516003811062001ad557634e487b7160e01b600052602160045260246000fd5b80868801525060408083015192508a81880152508082518083528a880191508684019350600092505b8083101562001b2a5763ffffffff60e01b84511682528682019150868401935060018301925062001afe565b508096505050508282019150828601955060018101905062001a8f565b505062001b578189018b620019fb565b50868103604088015262001b6c818962001a36565b95505050505050949350505050565b60208152602360208201527f4469616d6f6e64426173653a204144442074617267657420686173206e6f206360408201527f6f6465000000000000000000000000000000000000000000000000000000000060608201526000608082019050919050565b60208152602360208201527f4469616d6f6e64426173653a2073656c6563746f7220616c726561647920616460408201527f646564000000000000000000000000000000000000000000000000000000000060608201526000608082019050919050565b60208152602760208201527f4469616d6f6e64426173653a205245504c41434520746172676574206861732060408201527f6e6f20636f64650000000000000000000000000000000000000000000000000060608201526000608082019050919050565b60208152601f60208201527f4469616d6f6e64426173653a2073656c6563746f72206e6f7420666f756e640060408201526000606082019050919050565b60208152602260208201527f4469616d6f6e64426173653a2073656c6563746f7220697320696d6d7574616260408201527f6c6500000000000000000000000000000000000000000000000000000000000060608201526000608082019050919050565b60208152602860208201527f4469616d6f6e64426173653a205245504c41434520746172676574206973206960408201527f64656e746963616c00000000000000000000000000000000000000000000000060608201526000608082019050919050565b60208152602f60208201527f4469616d6f6e64426173653a2052454d4f564520746172676574206d7573742060408201527f6265207a65726f2061646472657373000000000000000000000000000000000060608201526000608082019050919050565b60208152602e60208201527f4469616d6f6e64426173653a20696e76616c696420696e697469616c697a617460408201527f696f6e20706172616d657465727300000000000000000000000000000000000060608201526000608082019050919050565b60208152602e60208201527f4469616d6f6e64426173653a20696e697469616c697a6174696f6e207461726760408201527f657420686173206e6f20636f646500000000000000000000000000000000000060608201526000608082019050919050565b6000825162001eed81846020870162001a0a565b80830191505092915050565b6131aa8062001f096000396000f3fe6080604052600436106100ab5760003560e01c80638ab5150a116100645780638ab5150a146102405780638da5cb5b1461026b5780639142376514610296578063adfca15e146102bf578063cdffacc6146102fc578063f2fde38b14610339576100b2565b806301ffc9a7146101425780631f931c1c1461017f5780632c408059146101a857806352ef6b2c146101d357806379ba5097146101fe5780637a0ed62714610215576100b2565b366100b257005b60006100bc610362565b90506100dd8173ffffffffffffffffffffffffffffffffffffffff166104df565b61011c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161011390612514565b60405180910390fd5b3660008037600080366000845af43d6000803e806000811461013d573d6000f35b3d6000fd5b34801561014e57600080fd5b5061016960048036038101906101649190612598565b6104f2565b60405161017691906125bb565b60405180910390f35b34801561018b57600080fd5b506101a660048036038101906101a19190612637565b610515565b005b3480156101b457600080fd5b506101bd6105ff565b6040516101ca91906126fb565b60405180910390f35b3480156101df57600080fd5b506101e8610632565b6040516101f59190612714565b60405180910390f35b34801561020a57600080fd5b50610213610893565b005b34801561022157600080fd5b5061022a610912565b60405161023791906127b4565b60405180910390f35b34801561024c57600080fd5b50610255610e73565b60405161026291906126fb565b60405180910390f35b34801561027757600080fd5b50610280610e82565b60405161028d91906126fb565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b89190612839565b610e91565b005b3480156102cb57600080fd5b506102e660048036038101906102e19190612839565b610f53565b6040516102f3919061285c565b60405180910390f35b34801561030857600080fd5b50610323600480360381019061031e9190612598565b611170565b60405161033091906126fb565b60405180910390f35b34801561034557600080fd5b50610360600480360381019061035b9190612839565b6111d7565b005b60008060007f177481ac65e4292921c69f62d1cc7f57541261e5d61c8175cf4e36a01c9bfc939050809150600082600001600080357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000205460601c9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036104d6578260030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036104d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104cc906128b2565b60405180910390fd5b5b80935050505090565b600080823b905060008111915050919050565b600061050e82610500611258565b6120f090919063ffffffff16565b9050919050565b61051d61215b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461058a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058190612916565b60405180910390fd5b6105f885859061059a91906129fb565b8484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506105e861135d565b61138a909392919063ffffffff16565b5050505050565b600061060961135d565b60030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600061063e61135d565b90508060010160009054906101000a900461ffff1661ffff1667ffffffffffffffff8111156106705761066f612954565b5b60405190808252806020026020018201604052801561069e5781602001602082028036833780820191505090505b50915060008060005b8360010160009054906101000a900461ffff1661ffff1682101561088957600084600201600083815260200190815260200160002054905060005b60088110156108745783806106f690612b5c565b9450508560010160009054906101000a900461ffff1661ffff168411610874576000600582901b83901b90506000876000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000205460601c90506000805b888110156107f2578a818151811061079c5761079b612b7a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107df57600191506107f2565b80806107ea90612b5c565b915050610781565b50801561080157505050610861565b818a898151811061081557610814612b7a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050878061085a90612b5c565b9850505050505b808061086c90612b5c565b9150506106e2565b5050808061088190612b5c565b9150506106a7565b5081845250505090565b61089b61218e565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610908576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ff90612b90565b60405180910390fd5b6109106121c1565b565b6060600061091e61135d565b90508060010160009054906101000a900461ffff1661ffff1667ffffffffffffffff8111156109505761094f612954565b5b60405190808252806020026020018201604052801561098957816020015b6109766124e4565b81526020019060019003908161096e5790505b50915060008160010160009054906101000a900461ffff1661ffff1667ffffffffffffffff8111156109be576109bd612954565b5b6040519080825280602002602001820160405280156109ec5781602001602082028036833780820191505090505b50905060008060005b8460010160009054906101000a900461ffff1661ffff16821015610dff57600085600201600083815260200190815260200160002054905060005b6008811015610dea578380610a4490612b5c565b9450508660010160009054906101000a900461ffff1661ffff168411610dea576000600582901b83901b90506000886000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000205460601c90506000805b88811015610c3b578273ffffffffffffffffffffffffffffffffffffffff168c8281518110610b0157610b00612b7a565b5b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1603610c2857838c8281518110610b3c57610b3b612b7a565b5b6020026020010151602001518b8381518110610b5b57610b5a612b7a565b5b602002602001015160ff1681518110610b7757610b76612b7a565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152505060ff8a8281518110610bd857610bd7612b7a565b5b602002602001015160ff1610610bed57600080fd5b898181518110610c0057610bff612b7a565b5b602002602001018051809190610c1590612bf4565b60ff1660ff168152505060019150610c3b565b8080610c3390612b5c565b915050610acf565b508015610c4a57505050610dd7565b818b8981518110610c5e57610c5d612b7a565b5b60200260200101516000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508960010160009054906101000a900461ffff1661ffff1667ffffffffffffffff811115610ccc57610ccb612954565b5b604051908082528060200260200182016040528015610cfa5781602001602082028036833780820191505090505b508b8981518110610d0e57610d0d612b7a565b5b602002602001015160200181905250828b8981518110610d3157610d30612b7a565b5b602002602001015160200151600081518110610d5057610d4f612b7a565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815250506001898981518110610db157610db0612b7a565b5b602002602001019060ff16908160ff16815250508780610dd090612b5c565b9850505050505b8080610de290612b5c565b915050610a30565b50508080610df790612b5c565b9150506109f5565b5060005b82811015610e68576000848281518110610e2057610e1f612b7a565b5b602002602001015160ff1690506000878381518110610e4257610e41612b7a565b5b602002602001015160200151905081815250508080610e6090612b5c565b915050610e03565b508185525050505090565b6000610e7d61218e565b905090565b6000610e8c61215b565b905090565b610e9961215b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efd90612916565b60405180910390fd5b80610f0f61135d565b60030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606000610f5f61135d565b90508060010160009054906101000a900461ffff1661ffff1667ffffffffffffffff811115610f9157610f90612954565b5b604051908082528060200260200182016040528015610fbf5781602001602082028036833780820191505090505b50915060008060005b8360010160009054906101000a900461ffff1661ffff1682101561116457600084600201600083815260200190815260200160002054905060005b600881101561114f57838061101790612b5c565b9450508560010160009054906101000a900461ffff1661ffff16841161114f576000600582901b83901b9050866000016000827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000205460601c73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff160361113b57808887815181106110e0576110df612b7a565b5b60200260200101907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681525050858061113790612b5c565b9650505b50808061114790612b5c565b915050611003565b5050808061115c90612b5c565b915050610fc8565b50818452505050919050565b600061117a61135d565b6000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000205460601c9050919050565b6111df61215b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461124c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124390612916565b60405180910390fd5b6112558161227c565b50565b6000807f326d0c59a7612f6a9919e2a8ee333c80ba689d8ba2634de89c85cbb04832e70590508091505090565b63ffffffff60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036112ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e490612c17565b60405180910390fd5b80836000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000807f177481ac65e4292921c69f62d1cc7f57541261e5d61c8175cf4e36a01c9bfc9390508091505090565b60008460010160009054906101000a900461ffff1661ffff16905060008190506000806007831611156113d457866002016000600384901c81526020019081526020016000205490505b60005b86518110156115405760008782815181106113f5576113f4612b7a565b5b60200260200101519050600081602001519050600082604001515111611450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144790612c55565b60405180910390fd5b6000600281111561146457611463612cb9565b5b81600281111561147757611476612cb9565b5b036114a0576114938585848d611655909392919063ffffffff16565b8095508196505050611531565b600160028111156114b4576114b3612cb9565b5b8160028111156114c7576114c6612cb9565b5b036114e4576114df828b61191590919063ffffffff16565b611530565b6002808111156114f7576114f6612cb9565b5b81600281111561150a57611509612cb9565b5b0361152f576115268585848d611bef909392919063ffffffff16565b80955081965050505b5b5b505080806001019150506113d7565b5082821461156857818760010160006101000a81548161ffff021916908361ffff1602179055505b60006007831611156115935780876002016000600385901c8152602001908152602001600020819055505b7f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738686866040516115c693929190612d27565b60405180910390a16115d88585612288565b50505050505050565b6000807f8a22373512790c48b83a1fe2efdd2888d4a917bcdc24d0adf63e60f67168046090508091505090565b808260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000803073ffffffffffffffffffffffffffffffffffffffff16836000015173ffffffffffffffffffffffffffffffffffffffff1614806116b557506116b4836000015173ffffffffffffffffffffffffffffffffffffffff166104df565b5b6116f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116eb90612df8565b60405180910390fd5b60005b8360400151518110156119055760008460400151828151811061171d5761171c612b7a565b5b602002602001015190506000886000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020549050600073ffffffffffffffffffffffffffffffffffffffff168160601c73ffffffffffffffffffffffffffffffffffffffff16146117f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e890612e5c565b60405180910390fd5b8760001b866000015160601b6bffffffffffffffffffffffff191617896000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020819055506000600560078a16901b905080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c817fffffffff0000000000000000000000000000000000000000000000000000000060001b901c19891617975060e081036118ed57878a600201600060038c901c8152602001908152602001600020819055506000801b97505b888060010199505050505080806001019150506116f7565b5084849150915094509492505050565b611938816000015173ffffffffffffffffffffffffffffffffffffffff166104df565b611977576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196e90612ec0565b60405180910390fd5b60005b816040015151811015611bea576000826040015182815181106119a05761199f612b7a565b5b602002602001015190506000846000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002054905060008160601c9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7090612f24565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ade90612f62565b60405180910390fd5b846000015173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5090612fc6565b60405180910390fd5b846000015160601b6bffffffffffffffffffffffff19166bffffffffffffffffffffffff60001b831617866000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002081905550505050808060010191505061197a565b505050565b600080600073ffffffffffffffffffffffffffffffffffffffff16836000015173ffffffffffffffffffffffffffffffffffffffff1614611c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5c9061302a565b60405180910390fd5b6000600386901c9050600060078716905060005b8560400151518110156120d557600086604001518281518110611c9f57611c9e612b7a565b5b6020026020010151905060008a6000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020549050600073ffffffffffffffffffffffffffffffffffffffff168160601c73ffffffffffffffffffffffffffffffffffffffff1603611d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6a90612f24565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168160601c73ffffffffffffffffffffffffffffffffffffffff1603611de4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddb90612f62565b60405180910390fd5b6000801b8903611e18578480600190039550508a600201600086815260200190815260200160002054985060079350611e22565b8380600190039450505b6000806000600587901b8c901b9250847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611f44578d6000016000847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020546bffffffffffffffffffffffff19166bffffffffffffffffffffffff60001b8516178e6000016000857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001908152602001600020819055505b8d6000016000867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019081526020016000206000905560008460001c61ffff169050600381901c9250600560078216901b91505087821461204a5760008e600201600084815260200190815260200160002054905081847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c827fffffffff0000000000000000000000000000000000000000000000000000000060001b901c198216179050808f6002016000858152602001908152602001600020819055505061209b565b80837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916901c817fffffffff0000000000000000000000000000000000000000000000000000000060001b901c198d16179b505b600087036120c3578d6002016000898152602001908152602001600020600090556000801b9b505b50505050508080600101915050611c79565b5080600383901b179650868693509350505094509492505050565b6000826000016000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff16905092915050565b60006121656115e1565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000612198612447565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006121cb6115e1565b90503373ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361225e338261160e90919063ffffffff16565b612279600061226b612447565b61247490919063ffffffff16565b50565b612285816124bb565b50565b60008151141515600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151514612301576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f89061308e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612443573073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146123c7576123878273ffffffffffffffffffffffffffffffffffffffff166104df565b6123c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bd906130f2565b60405180910390fd5b5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516123ee9190613156565b600060405180830381855af49150503d8060008114612429576040519150601f19603f3d011682016040523d82523d6000602084013e61242e565b606091505b5050905080612441573d6000803e3d6000fd5b505b5050565b6000807f24aa1f7b31fd188a8d3ecfb06bc55c806040e59b03bd4396283442fce661789090508091505090565b808260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6124c4816124c7565b50565b6124e1816124d3612447565b61247490919063ffffffff16565b50565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b60208152602660208201527f50726f78793a20696d706c656d656e746174696f6e206d75737420626520636f60408201527f6e7472616374000000000000000000000000000000000000000000000000000060608201526000608082019050919050565b60008135905063ffffffff60e01b8116811461259357600080fd5b919050565b6000602082840312156125aa57600080fd5b6125b382612578565b905092915050565b6000602082019050821515825292915050565b60008135905060018060a01b03811681146125e857600080fd5b919050565b60008083601f8401126125ff57600080fd5b8235905067ffffffffffffffff81111561261857600080fd5b60208301915083602082850101111561263057600080fd5b9250929050565b60008060008060006060868803121561264f57600080fd5b853567ffffffffffffffff8082111561266757600080fd5b818801915088601f83011261267b57600080fd5b81358181111561268a57600080fd5b8960208260051b850101111561269f57600080fd5b602083019750809650506126b5602089016125ce565b945060408801359150808211156126cb57600080fd5b506126d8888289016125ed565b915080935050809150509295509295909350565b60018060a01b03811682525050565b600060208201905060018060a01b038316825292915050565b60006020808301818452808551808352604086019150838701925060005b8181101561275b5760018060a01b03845116835284830192508484019350600181019050612732565b505080935050505092915050565b600081518084526020808501945080840160005b838110156127a75763ffffffff60e01b82511687528287019650828201915060018101905061277d565b5050505082905092915050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561282957603f19898403018552815160018060a01b038151168452878101519050868885015261281187850182612769565b935050868201915086850194506001810190506127db565b5050809550505050505092915050565b60006020828403121561284b57600080fd5b612854826125ce565b905092915050565b60006020808301818452808551808352604086019150838701925060005b818110156128a45763ffffffff60e01b84511683528483019250848401935060018101905061287a565b505080935050505092915050565b60208152603260208201527f4469616d6f6e64426173653a206e6f20666163657420666f756e6420666f722060408201527f66756e6374696f6e207369676e6174757265000000000000000000000000000060608201526000608082019050919050565b60208152601d60208201527f4f776e61626c653a2073656e646572206d757374206265206f776e657200000060408201526000606082019050919050565b634e487b7160e01b600052604160045260246000fd5b600060405190506060810181811067ffffffffffffffff8211171561299257612991612954565b5b806040525090565b60006040519050601f19601f830116810181811067ffffffffffffffff821117156129c8576129c7612954565b5b8060405250919050565b600067ffffffffffffffff8211156129ed576129ec612954565b5b60208260051b019050919050565b6000612a0e612a09846129d2565b61299a565b8084825260208083019250600586811b860136811115612a2d57600080fd5b865b81811015612b3757803567ffffffffffffffff80821115612a505760008081fd5b818a01915060608236031215612a665760008081fd5b612a6e61296a565b612a77836125ce565b81528683013560038110612a8b5760008081fd5b80888301525060408084013583811115612aa55760008081fd5b80850194505036601f850112612abd57600092508283fd5b83359250612ad2612acd846129d2565b61299a565b80848252898201915089858a1b870101945036851115612af25760008081fd5b89860195505b84861015612b1a57612b0986612578565b825289820191508986019550612af8565b808385015250505080895250505083860195508381019050612a2f565b50505050809250505092915050565b634e487b7160e01b600052601160045260246000fd5b600080198203612b6f57612b6e612b46565b5b600182019050919050565b634e487b7160e01b600052603260045260246000fd5b60208152602960208201527f536166654f776e61626c653a2073656e646572206d757374206265206e6f6d6960408201527f6e6565206f776e6572000000000000000000000000000000000000000000000060608201526000608082019050919050565b600060ff821660ff8103612c0b57612c0a612b46565b5b60018101915050919050565b60208152601c60208201527f4552433136353a20696e76616c696420696e746572666163652069640000000060408201526000606082019050919050565b60208152602360208201527f4469616d6f6e64426173653a206e6f2073656c6563746f72732073706563696660408201527f696564000000000000000000000000000000000000000000000000000000000060608201526000608082019050919050565b634e487b7160e01b600052602160045260246000fd5b60005b83811015612ced578082015181840152602081019050612cd2565b50600083830152505050565b60008151808452612d11816020860160208601612ccf565b6020601f19601f83011685010191505092915050565b6000606080830181845280875180835260808601915060808160051b87010192506020808a016000805b84811015612dc857607f198a8803018652825160018060a01b0381511688528481015160038110612d9057634e487b7160e01b84526021600452602484fd5b80868a015250604080820151915089818a015250612db089890182612769565b97505083830192508386019550600181019050612d51565b505050612dd78188018a6126ec565b5050508381036040850152612dec8186612cf9565b92505050949350505050565b60208152602360208201527f4469616d6f6e64426173653a204144442074617267657420686173206e6f206360408201527f6f6465000000000000000000000000000000000000000000000000000000000060608201526000608082019050919050565b60208152602360208201527f4469616d6f6e64426173653a2073656c6563746f7220616c726561647920616460408201527f646564000000000000000000000000000000000000000000000000000000000060608201526000608082019050919050565b60208152602760208201527f4469616d6f6e64426173653a205245504c41434520746172676574206861732060408201527f6e6f20636f64650000000000000000000000000000000000000000000000000060608201526000608082019050919050565b60208152601f60208201527f4469616d6f6e64426173653a2073656c6563746f72206e6f7420666f756e640060408201526000606082019050919050565b60208152602260208201527f4469616d6f6e64426173653a2073656c6563746f7220697320696d6d7574616260408201527f6c6500000000000000000000000000000000000000000000000000000000000060608201526000608082019050919050565b60208152602860208201527f4469616d6f6e64426173653a205245504c41434520746172676574206973206960408201527f64656e746963616c00000000000000000000000000000000000000000000000060608201526000608082019050919050565b60208152602f60208201527f4469616d6f6e64426173653a2052454d4f564520746172676574206d7573742060408201527f6265207a65726f2061646472657373000000000000000000000000000000000060608201526000608082019050919050565b60208152602e60208201527f4469616d6f6e64426173653a20696e76616c696420696e697469616c697a617460408201527f696f6e20706172616d657465727300000000000000000000000000000000000060608201526000608082019050919050565b60208152602e60208201527f4469616d6f6e64426173653a20696e697469616c697a6174696f6e207461726760408201527f657420686173206e6f20636f646500000000000000000000000000000000000060608201526000608082019050919050565b60008251613168818460208701612ccf565b8083019150509291505056fea26469706673582212200fdb683b7eb58cc000321f06825ff5ace6c1edde79a1493436adbe307a75f02e64736f6c63430008100033"; type RegistryDiamondConstructorParams = | [signer?: Signer]