From 92386608426174b4b294204857732155961bd774 Mon Sep 17 00:00:00 2001 From: Segue Date: Fri, 3 May 2024 12:48:50 +0800 Subject: [PATCH 1/6] fix mint inflation --- contracts/contracts/l2/staking/IL2Staking.sol | 2 +- contracts/contracts/l2/staking/L2Staking.sol | 27 +++++++------------ contracts/contracts/l2/system/MorphToken.sol | 6 +---- 3 files changed, 12 insertions(+), 23 deletions(-) diff --git a/contracts/contracts/l2/staking/IL2Staking.sol b/contracts/contracts/l2/staking/IL2Staking.sol index a87d69a33..fc2416d19 100644 --- a/contracts/contracts/l2/staking/IL2Staking.sol +++ b/contracts/contracts/l2/staking/IL2Staking.sol @@ -100,7 +100,7 @@ interface IL2Staking { /// @notice start reward function startReward() external; - /// @notice return current reward epoch index + /// @notice return current reward epoch index. Revert if not start reward function currentEpoch() external view returns (uint256); /// @notice check if the user has staked to staker diff --git a/contracts/contracts/l2/staking/L2Staking.sol b/contracts/contracts/l2/staking/L2Staking.sol index 3f6d67cb6..9fb36a898 100644 --- a/contracts/contracts/l2/staking/L2Staking.sol +++ b/contracts/contracts/l2/staking/L2Staking.sol @@ -220,10 +220,7 @@ contract L2Staking is function setCommissionRate(uint256 commission) external onlyStaker { require(commission <= 20, "invalid commission"); commissions[_msgSender()] = commission; - uint256 epochEffective = 0; - if (rewardStart) { - epochEffective = currentEpoch() + 1; - } + uint256 epochEffective = rewardStart ? currentEpoch() + 1 : 0; emit CommissionUpdated(_msgSender(), commission, epochEffective); } @@ -395,15 +392,10 @@ contract L2Staking is // staker has been removed, unlock next epoch bool removed = stakerRankings[delegatee] == 0; - uint256 effectiveEpoch; - uint256 unlockEpoch; - - if (rewardStart) { - effectiveEpoch = currentEpoch() + 1; - unlockEpoch = removed - ? effectiveEpoch - : effectiveEpoch + undelegateLockEpochs; - } + uint256 effectiveEpoch = rewardStart ? currentEpoch() + 1 : 0; + uint256 unlockEpoch = (rewardStart && !removed) + ? effectiveEpoch + undelegateLockEpochs // reward started and staker is active + : effectiveEpoch; // equal to 0 if reward not started. equal to effectiveEpoch is staker is removed Undelegation memory undelegation = Undelegation( delegatee, @@ -518,10 +510,11 @@ contract L2Staking is /// @notice return current reward epoch index function currentEpoch() public view returns (uint256) { - return - block.timestamp > rewardStartTime - ? (block.timestamp - rewardStartTime) / REWARD_EPOCH - : 0; + require( + block.timestamp >= rewardStartTime, + "reward is not started yet" + ); + return (block.timestamp - rewardStartTime) / REWARD_EPOCH; } /// @notice check if the user has staked to staker diff --git a/contracts/contracts/l2/system/MorphToken.sol b/contracts/contracts/l2/system/MorphToken.sol index e70990609..005544a21 100644 --- a/contracts/contracts/l2/system/MorphToken.sol +++ b/contracts/contracts/l2/system/MorphToken.sol @@ -128,12 +128,8 @@ contract MorphToken is IMorphToken, OwnableUpgradeable { /// @dev mint inflations /// @param upToDayIndex mint up to which day function mintInflations(uint256 upToDayIndex) external onlyRecordContract { - uint256 currentDayIndex = (block.timestamp - - IL2Staking(L2_STAKING_CONTRACT).rewardStartTime()) / - DAY_SECONDS + - 1; require( - currentDayIndex > upToDayIndex, + IL2Staking(L2_STAKING_CONTRACT).currentEpoch() > upToDayIndex, "the specified time has not yet been reached" ); require(upToDayIndex >= _inflationMintedDays, "all inflations minted"); From 424c1160dd2b30769d718fe4f8e6f3bbbb809cf8 Mon Sep 17 00:00:00 2001 From: Segue Date: Mon, 13 May 2024 22:09:40 +0800 Subject: [PATCH 2/6] fix distribute claim --- contracts/contracts/l2/staking/Distribute.sol | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/contracts/contracts/l2/staking/Distribute.sol b/contracts/contracts/l2/staking/Distribute.sol index ffab41140..a80489c82 100644 --- a/contracts/contracts/l2/staking/Distribute.sol +++ b/contracts/contracts/l2/staking/Distribute.sol @@ -17,9 +17,6 @@ contract Distribute is IDistribute, OwnableUpgradeable { * Constants * *************/ - /// @notice reward epoch, seconds of one day (3600 * 24) - uint256 private constant REWARD_EPOCH = 86400; - /// @notice MorphToken contract address address public immutable MORPH_TOKEN_CONTRACT; @@ -208,7 +205,7 @@ contract Distribute is IDistribute, OwnableUpgradeable { ) external onlyL2StakingContract { require(mintedEpochCount != 0, "not mint yet"); uint256 endEpochIndex = targetEpochIndex; - if (targetEpochIndex == 0 || targetEpochIndex > mintedEpochCount) { + if (targetEpochIndex == 0 || targetEpochIndex >= mintedEpochCount) { endEpochIndex = mintedEpochCount - 1; } uint256 reward = _claim(delegatee, delegator, endEpochIndex); @@ -229,7 +226,7 @@ contract Distribute is IDistribute, OwnableUpgradeable { ) external onlyL2StakingContract { require(mintedEpochCount != 0, "not mint yet"); uint256 endEpochIndex = targetEpochIndex; - if (targetEpochIndex == 0 || targetEpochIndex > mintedEpochCount) { + if (targetEpochIndex == 0 || targetEpochIndex >= mintedEpochCount) { endEpochIndex = mintedEpochCount - 1; } uint256 reward; @@ -256,7 +253,7 @@ contract Distribute is IDistribute, OwnableUpgradeable { ) external onlyL2StakingContract { require(mintedEpochCount != 0, "not mint yet"); uint256 end = targetEpochIndex; - if (targetEpochIndex == 0 || targetEpochIndex > mintedEpochCount) { + if (targetEpochIndex == 0 || targetEpochIndex >= mintedEpochCount) { end = mintedEpochCount - 1; } require( From 794a4f5186a049e7422222989b95232333363e72 Mon Sep 17 00:00:00 2001 From: Segue Date: Mon, 13 May 2024 22:10:27 +0800 Subject: [PATCH 3/6] unify variable names and clean code --- contracts/contracts/l2/system/IMorphToken.sol | 44 +++++----- contracts/contracts/l2/system/MorphToken.sol | 82 ++++++++++--------- contracts/contracts/test/L2Staking.t.sol | 45 +++++----- contracts/contracts/test/MorphToken.t.sol | 6 +- 4 files changed, 89 insertions(+), 88 deletions(-) diff --git a/contracts/contracts/l2/system/IMorphToken.sol b/contracts/contracts/l2/system/IMorphToken.sol index c575adb7f..ba165b383 100644 --- a/contracts/contracts/l2/system/IMorphToken.sol +++ b/contracts/contracts/l2/system/IMorphToken.sol @@ -14,11 +14,11 @@ interface IMorphToken is IERC20MetadataUpgradeable { /// @notice DailyInflationRate representing a daily inflation rate. /// - /// @custom:field rate daily inflation ratio, precision is 1e16 - /// @custom:field effectiveDayIndex effective day index - struct DailyInflationRate { + /// @custom:field rate epoch inflation ratio, precision is 1e16 + /// @custom:field effectiveEpochIndex effective epoch index + struct EpochInflationRate { uint256 rate; - uint256 effectiveDayIndex; + uint256 effectiveEpochIndex; } /********** @@ -27,16 +27,16 @@ interface IMorphToken is IERC20MetadataUpgradeable { /// @notice Emitted the owner sets the next valid exchange rate. /// @param rate new rate - /// @param effectiveDayIndex effective day index - event UpdateDailyInflationRate( + /// @param effectiveEpochIndex effective epoch index + event UpdateEpochInflationRate( uint256 indexed rate, - uint256 indexed effectiveDayIndex + uint256 indexed effectiveEpochIndex ); /// @notice Inflation minted - /// @param dayIndex minted day index + /// @param epochIndex minted epoch index /// @param amount inflation amount - event InflationMinted(uint256 indexed dayIndex, uint256 amount); + event InflationMinted(uint256 indexed epochIndex, uint256 amount); /************************* * Public View Functions * @@ -45,21 +45,21 @@ interface IMorphToken is IERC20MetadataUpgradeable { /// @dev inflationRatesCount returns the total rate for all Settings. function inflationRatesCount() external view returns (uint256); - /// @dev query daily inflation rates. + /// @dev query epoch inflation rates. /// @param index in array - function dailyInflationRates( + function epochInflationRates( uint256 index - ) external view returns (DailyInflationRate memory); + ) external view returns (EpochInflationRate memory); /// @dev inflation returns amount of daily issues. - /// @param dayIndex day index from start inflation. + /// @param epochIndex epoch index from start inflation. /// greater than or equal to zero, - /// and less than or equal to the return value of inflationMintedDays. - function inflation(uint256 dayIndex) external view returns (uint256); + /// and less than or equal to the return value of inflationMintedEpochs. + function inflation(uint256 epochIndex) external view returns (uint256); - /// @dev inflationMintedDays - /// returns the maximum number of days that have been mint recently. - function inflationMintedDays() external view returns (uint256); + /// @dev inflationMintedEpochs + /// returns the maximum number of epochs that have been mint recently. + function inflationMintedEpochs() external view returns (uint256); /***************************** * Public Mutating Functions * @@ -75,8 +75,8 @@ interface IMorphToken is IERC20MetadataUpgradeable { /// the exchange rate must be greater than or equal to zero and less than or equal to 19008376772350. /// That is, there will be no additional issuance or the maximum annual increase will be doubled. /// - /// @param effectiveDayIndex effective day index - function updateRate(uint256 newRate, uint256 effectiveDayIndex) external; + /// @param effectiveEpochIndex effective epoch index + function updateRate(uint256 newRate, uint256 effectiveEpochIndex) external; /// @dev Atomically increases the allowance granted to `spender` by the caller. /// @@ -106,6 +106,6 @@ interface IMorphToken is IERC20MetadataUpgradeable { ) external returns (bool); /// @dev mint inflations - /// @param upToDayIndex mint up to which day - function mintInflations(uint256 upToDayIndex) external; + /// @param upToEpochIndex mint up to which epoch + function mintInflations(uint256 upToEpochIndex) external; } diff --git a/contracts/contracts/l2/system/MorphToken.sol b/contracts/contracts/l2/system/MorphToken.sol index 005544a21..6e9dd82ce 100644 --- a/contracts/contracts/l2/system/MorphToken.sol +++ b/contracts/contracts/l2/system/MorphToken.sol @@ -13,9 +13,6 @@ contract MorphToken is IMorphToken, OwnableUpgradeable { * Constants * *************/ - /// @notice day seconds - uint256 private constant DAY_SECONDS = 86400; - /// @notice daily inflation ratio precision uint256 private constant PRECISION = 1e16; @@ -48,14 +45,14 @@ contract MorphToken is IMorphToken, OwnableUpgradeable { mapping(address owner => mapping(address spender => uint256)) private _allowances; - /// @notice daily inflation rate - DailyInflationRate[] private _dailyInflationRates; + /// @notice per epoch inflation rate + EpochInflationRate[] private _epochInflationRates; /// @notice inflations - mapping(uint256 dayIndex => uint256 inflationAmount) private _inflations; + mapping(uint256 epochIndex => uint256 inflationAmount) private _inflations; - /// @notice inflation minted days - uint256 private _inflationMintedDays; + /// @notice inflation minted epochs + uint256 private _inflationMintedEpochs; /********************** * Function Modifiers * @@ -97,9 +94,9 @@ contract MorphToken is IMorphToken, OwnableUpgradeable { _name = name_; _symbol = symbol_; _mint(_msgSender(), initialSupply_); - _dailyInflationRates.push(DailyInflationRate(dailyInflationRate_, 0)); + _epochInflationRates.push(EpochInflationRate(dailyInflationRate_, 0)); - emit UpdateDailyInflationRate(dailyInflationRate_, 0); + emit UpdateEpochInflationRate(dailyInflationRate_, 0); } /************************ @@ -109,37 +106,42 @@ contract MorphToken is IMorphToken, OwnableUpgradeable { /// @dev See {IMorphToken-setRate}. function updateRate( uint256 newRate, - uint256 effectiveDayIndex + uint256 effectiveEpochIndex ) public onlyOwner { require( - effectiveDayIndex > - _dailyInflationRates[_dailyInflationRates.length - 1] - .effectiveDayIndex, - "effective days after must be greater than before" + effectiveEpochIndex > + _epochInflationRates[_epochInflationRates.length - 1] + .effectiveEpochIndex, + "effective epochs after must be greater than before" ); - _dailyInflationRates.push( - DailyInflationRate(newRate, effectiveDayIndex) + _epochInflationRates.push( + EpochInflationRate(newRate, effectiveEpochIndex) ); - emit UpdateDailyInflationRate(newRate, effectiveDayIndex); + emit UpdateEpochInflationRate(newRate, effectiveEpochIndex); } /// @dev mint inflations - /// @param upToDayIndex mint up to which day - function mintInflations(uint256 upToDayIndex) external onlyRecordContract { + /// @param upToEpochIndex mint up to which epoch + function mintInflations( + uint256 upToEpochIndex + ) external onlyRecordContract { require( - IL2Staking(L2_STAKING_CONTRACT).currentEpoch() > upToDayIndex, + IL2Staking(L2_STAKING_CONTRACT).currentEpoch() > upToEpochIndex, "the specified time has not yet been reached" ); - require(upToDayIndex >= _inflationMintedDays, "all inflations minted"); - - for (uint256 i = _inflationMintedDays; i <= upToDayIndex; i++) { - uint256 rate = _dailyInflationRates[0].rate; - // find inflation rate of the day - for (uint256 j = _dailyInflationRates.length - 1; j > 0; j--) { - if (_dailyInflationRates[j].effectiveDayIndex <= i) { - rate = _dailyInflationRates[j].rate; + require( + upToEpochIndex >= _inflationMintedEpochs, + "all inflations minted" + ); + + for (uint256 i = _inflationMintedEpochs; i <= upToEpochIndex; i++) { + uint256 rate = _epochInflationRates[0].rate; + // find inflation rate of the epoch + for (uint256 j = _epochInflationRates.length - 1; j > 0; j--) { + if (_epochInflationRates[j].effectiveEpochIndex <= i) { + rate = _epochInflationRates[j].rate; } } _inflations[i] = (_totalSupply * rate) / PRECISION; @@ -147,7 +149,7 @@ contract MorphToken is IMorphToken, OwnableUpgradeable { emit InflationMinted(i, _inflations[i]); } - _inflationMintedDays = upToDayIndex + 1; + _inflationMintedEpochs = upToEpochIndex + 1; } /***************************** @@ -279,24 +281,24 @@ contract MorphToken is IMorphToken, OwnableUpgradeable { /// @dev See {IMorphToken-inflationRatesCount}. function inflationRatesCount() public view returns (uint256) { - return _dailyInflationRates.length; + return _epochInflationRates.length; } - /// @dev See {IMorphToken-dailyInflationRates}. - function dailyInflationRates( + /// @dev See {IMorphToken-epochInflationRates}. + function epochInflationRates( uint256 index - ) public view returns (DailyInflationRate memory) { - return _dailyInflationRates[index]; + ) public view returns (EpochInflationRate memory) { + return _epochInflationRates[index]; } /// @dev See {IMorphToken-inflation}. - function inflation(uint256 dayIndex) public view returns (uint256) { - return _inflations[dayIndex]; + function inflation(uint256 epochIndex) public view returns (uint256) { + return _inflations[epochIndex]; } - /// @dev See {IMorphToken-inflationMintedDays}. - function inflationMintedDays() public view returns (uint256) { - return _inflationMintedDays; + /// @dev See {IMorphToken-inflationMintedEpochs}. + function inflationMintedEpochs() public view returns (uint256) { + return _inflationMintedEpochs; } /// @dev See {IMorphToken-transfer}. diff --git a/contracts/contracts/test/L2Staking.t.sol b/contracts/contracts/test/L2Staking.t.sol index 0b8471b7d..bb57118d9 100644 --- a/contracts/contracts/test/L2Staking.t.sol +++ b/contracts/contracts/test/L2Staking.t.sol @@ -9,7 +9,6 @@ import {L2StakingBaseTest} from "./base/L2StakingBase.t.sol"; import {ICrossDomainMessenger} from "../libraries/ICrossDomainMessenger.sol"; contract L2StakingTest is L2StakingBaseTest { - uint256 DAY_SECONDS = 86400; uint256 SEQUENCER_RATIO_PRECISION = 1e8; uint256 INFLATION_RATIO_PRECISION = 1e16; @@ -204,7 +203,7 @@ contract L2StakingTest is L2StakingBaseTest { l2Staking.delegateStake(firstStaker, morphBalance); l2Staking.undelegateStake(firstStaker); - uint256 time = rewardStartTime + DAY_SECONDS * (ROLLUP_EPOCH + 1); + uint256 time = rewardStartTime + REWARD_EPOCH * (ROLLUP_EPOCH + 1); hevm.warp(time); l2Staking.claimUndelegation(); @@ -238,7 +237,7 @@ contract L2StakingTest is L2StakingBaseTest { hevm.roll(ROLLUP_EPOCH); - uint256 time = rewardStartTime + DAY_SECONDS * (ROLLUP_EPOCH + 1); + uint256 time = rewardStartTime + REWARD_EPOCH * (ROLLUP_EPOCH + 1); hevm.warp(time); l2Staking.claimUndelegation(); @@ -301,7 +300,7 @@ contract L2StakingTest is L2StakingBaseTest { function _updateDistribute(uint256 epochIndex) internal returns (uint256) { uint256 sequencerSize = SEQUENCER_SIZE; - uint256 blockCount = DAY_SECONDS / 3; // 1 block per 3s + uint256 blockCount = REWARD_EPOCH / 3; // 1 block per 3s address[] memory sequencers = sequencerAddresses; uint256[] memory sequencerBlocks = new uint256[](sequencerSize); uint256[] memory sequencerRatios = new uint256[](sequencerSize); @@ -351,7 +350,7 @@ contract L2StakingTest is L2StakingBaseTest { l2Staking.delegateStake(thirdStaker, 5 ether); hevm.stopPrank(); - uint256 time = DAY_SECONDS; + uint256 time = REWARD_EPOCH; hevm.warp(time); // reward starting @@ -370,13 +369,13 @@ contract L2StakingTest is L2StakingBaseTest { l2Staking.setCommissionRate(1); // *************** epoch = 1 ******************** // - time = DAY_SECONDS * 2; + time = REWARD_EPOCH * 2; hevm.warp(time); - uint256 blocksCountOfDay = DAY_SECONDS / 3; - hevm.roll(blocksCountOfDay * 2); + uint256 blocksCountOfEpoch = REWARD_EPOCH / 3; + hevm.roll(blocksCountOfEpoch * 2); hevm.prank(oracleAddress); - record.setLatestRewardEpochBlock(blocksCountOfDay); + record.setLatestRewardEpochBlock(blocksCountOfEpoch); _updateDistribute(0); // effectiveEpoch = 2 @@ -390,14 +389,14 @@ contract L2StakingTest is L2StakingBaseTest { assertEq(secondRanking, 0 + 1); // *************** epoch = 2 ******************** // - time = DAY_SECONDS * 3; - hevm.roll(blocksCountOfDay * 3); + time = REWARD_EPOCH * 3; + hevm.roll(blocksCountOfEpoch * 3); hevm.warp(time); _updateDistribute(1); // *************** epoch = 3 ******************** // - time = DAY_SECONDS * 4; - hevm.roll(blocksCountOfDay * 4); + time = REWARD_EPOCH * 4; + hevm.roll(blocksCountOfEpoch * 4); hevm.warp(time); uint256 totalInflations = _updateDistribute(2); @@ -442,7 +441,7 @@ contract L2StakingTest is L2StakingBaseTest { l2Staking.delegateStake(thirdStaker, 5 ether); hevm.stopPrank(); - uint256 time = DAY_SECONDS; + uint256 time = REWARD_EPOCH; hevm.warp(time); // reward starting @@ -461,13 +460,13 @@ contract L2StakingTest is L2StakingBaseTest { l2Staking.setCommissionRate(1); // *************** epoch = 1 ******************** // - time = DAY_SECONDS * 2; + time = REWARD_EPOCH * 2; hevm.warp(time); - uint256 blocksCountOfDay = DAY_SECONDS / 3; - hevm.roll(blocksCountOfDay * 2); + uint256 blocksCountOfEpoch = REWARD_EPOCH / 3; + hevm.roll(blocksCountOfEpoch * 2); hevm.prank(oracleAddress); - record.setLatestRewardEpochBlock(blocksCountOfDay); + record.setLatestRewardEpochBlock(blocksCountOfEpoch); uint256 totalInflations0 = _updateDistribute(0); // effectiveEpoch = 2 @@ -488,19 +487,19 @@ contract L2StakingTest is L2StakingBaseTest { hevm.stopPrank(); // *************** epoch = 2 ******************** // - time = DAY_SECONDS * 3 + 1; - hevm.roll(blocksCountOfDay * 3); + time = REWARD_EPOCH * 3 + 1; + hevm.roll(blocksCountOfEpoch * 3); hevm.warp(time); uint256 totalInflations1 = _updateDistribute(1); // *************** epoch = 3 ******************** // - time = DAY_SECONDS * 4; - hevm.roll(blocksCountOfDay * 4); + time = REWARD_EPOCH * 4; + hevm.roll(blocksCountOfEpoch * 4); hevm.warp(time); _updateDistribute(2); // *************** at unlock epoch ******************** // - time = rewardStartTime + DAY_SECONDS * (ROLLUP_EPOCH + 2); + time = rewardStartTime + REWARD_EPOCH * (ROLLUP_EPOCH + 2); hevm.warp(time); hevm.prank(alice); l2Staking.claimUndelegation(); diff --git a/contracts/contracts/test/MorphToken.t.sol b/contracts/contracts/test/MorphToken.t.sol index 7825bbf8f..7a358dbff 100644 --- a/contracts/contracts/test/MorphToken.t.sol +++ b/contracts/contracts/test/MorphToken.t.sol @@ -44,11 +44,11 @@ contract MorphTokenTest is L2StakingBaseTest { function test_inflationRate() public { uint256 count = morphToken.inflationRatesCount(); - assertEq(morphToken.dailyInflationRates(count - 1).rate, 1596535874529); + assertEq(morphToken.epochInflationRates(count - 1).rate, 1596535874529); } - function test_inflationMintedDays() public { - assertEq(morphToken.inflationMintedDays(), 0); + function test_inflationMintedEpochs() public { + assertEq(morphToken.inflationMintedEpochs(), 0); } function test_transfer() public { From f70ab6982cda5234ffb308edbea8838da371ca33 Mon Sep 17 00:00:00 2001 From: Segue Date: Tue, 14 May 2024 03:22:30 +0800 Subject: [PATCH 4/6] fix typo & improve claim undelegation --- contracts/contracts/l2/staking/L2Staking.sol | 36 ++++++++++++-------- contracts/contracts/l2/staking/Record.sol | 2 +- contracts/contracts/l2/system/MorphToken.sol | 4 ++- 3 files changed, 25 insertions(+), 17 deletions(-) diff --git a/contracts/contracts/l2/staking/L2Staking.sol b/contracts/contracts/l2/staking/L2Staking.sol index 9fb36a898..3e0984ec7 100644 --- a/contracts/contracts/l2/staking/L2Staking.sol +++ b/contracts/contracts/l2/staking/L2Staking.sol @@ -41,8 +41,8 @@ contract L2Staking is * Variables * *************/ - /// @notice is reward start - bool public rewardStart; + /// @notice is reward started + bool public rewardStarted; /// @notice reward start time uint256 public rewardStartTime; @@ -173,7 +173,7 @@ contract L2Staking is stakers[add.addr] = add; emit StakerAdded(add.addr, add.tmKey, add.blsKey); - if (!rewardStart && stakerAddresses.length <= sequencerSetMaxSize) { + if (!rewardStarted && stakerAddresses.length <= sequencerSetMaxSize) { _updateSequencerSet(); } } @@ -220,7 +220,7 @@ contract L2Staking is function setCommissionRate(uint256 commission) external onlyStaker { require(commission <= 20, "invalid commission"); commissions[_msgSender()] = commission; - uint256 epochEffective = rewardStart ? currentEpoch() + 1 : 0; + uint256 epochEffective = rewardStarted ? currentEpoch() + 1 : 0; emit CommissionUpdated(_msgSender(), commission, epochEffective); } @@ -264,7 +264,7 @@ contract L2Staking is uint256 _rewardStartTime ) external onlyOwner { require( - !rewardStart && rewardStartTime > block.timestamp, + !rewardStarted && rewardStartTime > block.timestamp, "reward already started" ); require( @@ -286,7 +286,7 @@ contract L2Staking is ); require(candidateNumber > 0, "none candidate"); - rewardStart = true; + rewardStarted = true; // sort stakers by insertion sort for (uint256 i = 1; i < stakerAddresses.length; i++) { @@ -334,7 +334,7 @@ contract L2Staking is } uint256 beforeRanking = stakerRankings[delegatee]; - if (rewardStart && beforeRanking > 1) { + if (rewardStarted && beforeRanking > 1) { // update stakers and rankings for (uint256 i = beforeRanking - 1; i > 0; i--) { if ( @@ -350,7 +350,7 @@ contract L2Staking is } } } - uint256 effectiveEpoch = rewardStart ? currentEpoch() + 1 : 0; + uint256 effectiveEpoch = rewardStarted ? currentEpoch() + 1 : 0; emit Delegated( delegatee, @@ -374,7 +374,7 @@ contract L2Staking is _transferFrom(_msgSender(), address(this), amount); if ( - rewardStart && + rewardStarted && beforeRanking > latestSequencerSetSize && stakerRankings[delegatee] <= sequencerSetMaxSize ) { @@ -392,8 +392,8 @@ contract L2Staking is // staker has been removed, unlock next epoch bool removed = stakerRankings[delegatee] == 0; - uint256 effectiveEpoch = rewardStart ? currentEpoch() + 1 : 0; - uint256 unlockEpoch = (rewardStart && !removed) + uint256 effectiveEpoch = rewardStarted ? currentEpoch() + 1 : 0; + uint256 unlockEpoch = (rewardStarted && !removed) ? effectiveEpoch + undelegateLockEpochs // reward started and staker is active : effectiveEpoch; // equal to 0 if reward not started. equal to effectiveEpoch is staker is removed @@ -409,7 +409,7 @@ contract L2Staking is delegators[delegatee].remove(_msgSender()); uint256 beforeRanking = stakerRankings[delegatee]; - if (!removed && rewardStart && beforeRanking < candidateNumber) { + if (!removed && rewardStarted && beforeRanking < candidateNumber) { // update stakers and rankings for ( uint256 i = stakerRankings[delegatee] - 1; @@ -454,7 +454,7 @@ contract L2Staking is if ( !removed && - rewardStart && + rewardStarted && beforeRanking <= latestSequencerSetSize && (stakerRankings[delegatee] > latestSequencerSetSize || stakerRankings[delegatee] > candidateNumber) @@ -466,8 +466,13 @@ contract L2Staking is /// @notice delegator cliam delegate staking value function claimUndelegation() external nonReentrant { uint256 totalAmount; + for (uint256 i = 0; i < undelegations[_msgSender()].length; i++) { - if (undelegations[_msgSender()][i].unlockEpoch <= currentEpoch()) { + // if the reward is not started yet, claiming directly is allowed + if ( + !rewardStarted || + undelegations[_msgSender()][i].unlockEpoch <= currentEpoch() + ) { totalAmount += undelegations[_msgSender()][i].amount; if (undelegations[_msgSender()].length > 1) { undelegations[_msgSender()][i] = undelegations[ @@ -477,6 +482,7 @@ contract L2Staking is undelegations[_msgSender()].pop(); } } + require(totalAmount > 0, "no Morph token to claim"); _transfer(_msgSender(), totalAmount); @@ -606,7 +612,7 @@ contract L2Staking is /// @notice select the size of staker with the largest staking amount, the max size is ${sequencerSetMaxSize} function _updateSequencerSet() internal { uint256 sequencerSize = sequencerSetMaxSize; - if (rewardStart) { + if (rewardStarted) { if (candidateNumber < sequencerSetMaxSize) { sequencerSize = candidateNumber; } diff --git a/contracts/contracts/l2/staking/Record.sol b/contracts/contracts/l2/staking/Record.sol index 294720214..7cffbe736 100644 --- a/contracts/contracts/l2/staking/Record.sol +++ b/contracts/contracts/l2/staking/Record.sol @@ -187,7 +187,7 @@ contract Record is IRecord, OwnableUpgradeable { require( nextRewardEpochIndex + _rewardEpochs.length - 1 < IL2Staking(L2_STAKING_CONTRACT).currentEpoch(), - "future data cannot be uploaded" + "unfinished epochs cannot be uploaded" ); IMorphToken(MORPH_TOKEN_CONTRACT).mintInflations( nextRewardEpochIndex + _rewardEpochs.length - 1 diff --git a/contracts/contracts/l2/system/MorphToken.sol b/contracts/contracts/l2/system/MorphToken.sol index 6e9dd82ce..91fd57574 100644 --- a/contracts/contracts/l2/system/MorphToken.sol +++ b/contracts/contracts/l2/system/MorphToken.sol @@ -51,7 +51,7 @@ contract MorphToken is IMorphToken, OwnableUpgradeable { /// @notice inflations mapping(uint256 epochIndex => uint256 inflationAmount) private _inflations; - /// @notice inflation minted epochs + /// @notice inflation minted epochs count uint256 private _inflationMintedEpochs; /********************** @@ -127,6 +127,7 @@ contract MorphToken is IMorphToken, OwnableUpgradeable { function mintInflations( uint256 upToEpochIndex ) external onlyRecordContract { + // inflations can only be minted for epochs that have ended. require( IL2Staking(L2_STAKING_CONTRACT).currentEpoch() > upToEpochIndex, "the specified time has not yet been reached" @@ -136,6 +137,7 @@ contract MorphToken is IMorphToken, OwnableUpgradeable { "all inflations minted" ); + // the index of next epoch to mint is equal to the count of minted epochs for (uint256 i = _inflationMintedEpochs; i <= upToEpochIndex; i++) { uint256 rate = _epochInflationRates[0].rate; // find inflation rate of the epoch From 4443038acc9896e131069f18e6a90f93abbb0d40 Mon Sep 17 00:00:00 2001 From: Segue Date: Tue, 14 May 2024 17:24:48 +0800 Subject: [PATCH 5/6] update claim --- contracts/contracts/l2/staking/Distribute.sol | 40 +++++++++---------- .../contracts/l2/staking/IDistribute.sol | 4 +- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/contracts/contracts/l2/staking/Distribute.sol b/contracts/contracts/l2/staking/Distribute.sol index a80489c82..35382d8b2 100644 --- a/contracts/contracts/l2/staking/Distribute.sol +++ b/contracts/contracts/l2/staking/Distribute.sol @@ -37,10 +37,10 @@ contract Distribute is IDistribute, OwnableUpgradeable { mapping(address delegatee => mapping(uint256 epochIndex => Distribution)) private distributions; - /// @notice delegatee's unclaimed commission + /// @notice the next epoch to claim commission for a delegatee mapping(address delegatee => uint256 epochIndex) public - override unclaimedCommission; + override nextEpochToClaimCommission; /// @notice delegator's unclaimed reward mapping(address delegator => Unclaimed) private unclaimed; @@ -203,11 +203,11 @@ contract Distribute is IDistribute, OwnableUpgradeable { address delegator, uint256 targetEpochIndex ) external onlyL2StakingContract { - require(mintedEpochCount != 0, "not mint yet"); - uint256 endEpochIndex = targetEpochIndex; - if (targetEpochIndex == 0 || targetEpochIndex >= mintedEpochCount) { - endEpochIndex = mintedEpochCount - 1; - } + require(mintedEpochCount != 0, "not minted yet"); + uint256 endEpochIndex = (targetEpochIndex == 0 || + targetEpochIndex > mintedEpochCount - 1) + ? mintedEpochCount - 1 + : targetEpochIndex; uint256 reward = _claim(delegatee, delegator, endEpochIndex); if (reward > 0) { _transfer(delegator, reward); @@ -224,11 +224,11 @@ contract Distribute is IDistribute, OwnableUpgradeable { address delegator, uint256 targetEpochIndex ) external onlyL2StakingContract { - require(mintedEpochCount != 0, "not mint yet"); - uint256 endEpochIndex = targetEpochIndex; - if (targetEpochIndex == 0 || targetEpochIndex >= mintedEpochCount) { - endEpochIndex = mintedEpochCount - 1; - } + require(mintedEpochCount != 0, "not minted yet"); + uint256 endEpochIndex = (targetEpochIndex == 0 || + targetEpochIndex > mintedEpochCount - 1) + ? mintedEpochCount - 1 + : targetEpochIndex; uint256 reward; for (uint256 i = 0; i < unclaimed[delegator].delegatees.length(); i++) { address delegatee = unclaimed[delegator].delegatees.at(i); @@ -251,17 +251,17 @@ contract Distribute is IDistribute, OwnableUpgradeable { address delegatee, uint256 targetEpochIndex ) external onlyL2StakingContract { - require(mintedEpochCount != 0, "not mint yet"); - uint256 end = targetEpochIndex; - if (targetEpochIndex == 0 || targetEpochIndex >= mintedEpochCount) { - end = mintedEpochCount - 1; - } + require(mintedEpochCount != 0, "not minted yet"); + uint256 end = (targetEpochIndex == 0 || + targetEpochIndex > mintedEpochCount - 1) + ? mintedEpochCount - 1 + : targetEpochIndex; require( - unclaimedCommission[delegatee] <= end, + nextEpochToClaimCommission[delegatee] <= end, "all commission claimed" ); uint256 commission; - for (uint256 i = unclaimedCommission[delegatee]; i <= end; i++) { + for (uint256 i = nextEpochToClaimCommission[delegatee]; i <= end; i++) { commission += distributions[delegatee][i].commissionAmount; distributions[delegatee][i].commissionAmount = 0; // if all delegators claimed, delete distribution @@ -272,7 +272,7 @@ contract Distribute is IDistribute, OwnableUpgradeable { if (commission > 0) { _transfer(delegatee, commission); } - unclaimedCommission[delegatee] = end + 1; + nextEpochToClaimCommission[delegatee] = end + 1; emit CommissionClaimed(delegatee, end, commission); } diff --git a/contracts/contracts/l2/staking/IDistribute.sol b/contracts/contracts/l2/staking/IDistribute.sol index 78312f95b..883744f20 100644 --- a/contracts/contracts/l2/staking/IDistribute.sol +++ b/contracts/contracts/l2/staking/IDistribute.sol @@ -72,9 +72,9 @@ interface IDistribute { * Public View Functions * *************************/ - /// @dev return delegatee unclaimed epoch index + /// @dev return the next epoch to claim commission for a delegatee /// @param delegatee delegatee - function unclaimedCommission( + function nextEpochToClaimCommission( address delegatee ) external view returns (uint256); From d33fa720878757d293c04093d978f3c237eca241 Mon Sep 17 00:00:00 2001 From: Segue Date: Wed, 15 May 2024 14:51:26 +0800 Subject: [PATCH 6/6] update bindings --- bindings/bin/distribute_deployed.hex | 2 +- bindings/bin/gov_deployed.hex | 2 +- bindings/bin/l1staking_deployed.hex | 2 +- bindings/bin/l2staking_deployed.hex | 2 +- bindings/bin/l2txfeevault_deployed.hex | 2 +- bindings/bin/morphtoken_deployed.hex | 2 +- bindings/bin/record_deployed.hex | 2 +- bindings/bin/rollup_deployed.hex | 2 +- bindings/bindings/distribute.go | 66 +++---- bindings/bindings/distribute_more.go | 4 +- bindings/bindings/gov.go | 2 +- bindings/bindings/gov_more.go | 2 +- bindings/bindings/l1staking.go | 2 +- bindings/bindings/l1staking_more.go | 2 +- bindings/bindings/l2staking.go | 78 ++++---- bindings/bindings/l2staking_more.go | 4 +- bindings/bindings/l2txfeevault.go | 2 +- bindings/bindings/l2txfeevault_more.go | 2 +- bindings/bindings/morphtoken.go | 248 ++++++++++++------------- bindings/bindings/morphtoken_more.go | 4 +- bindings/bindings/record.go | 2 +- bindings/bindings/record_more.go | 2 +- bindings/bindings/rollup.go | 2 +- bindings/bindings/rollup_more.go | 2 +- bindings/bindings/sequencer.go | 2 +- 25 files changed, 221 insertions(+), 221 deletions(-) diff --git a/bindings/bin/distribute_deployed.hex b/bindings/bin/distribute_deployed.hex index 44f40f61c..481ca0d22 100644 --- a/bindings/bin/distribute_deployed.hex +++ b/bindings/bin/distribute_deployed.hex @@ -1 +1 @@ -0x608060405234801561000f575f80fd5b50600436106100f0575f3560e01c80639889be5111610093578063cdd0c50e11610063578063cdd0c50e1461020e578063d557714114610221578063e16bcc3214610248578063f2fde38b1461025b575f80fd5b80639889be51146101ae578063996cba68146101c1578063ad8e1223146101d4578063cd4281d0146101e7575f80fd5b80637ac3339a116100ce5780637ac3339a14610124578063807de443146101565780638129fc1c146101955780638da5cb5b1461019d575f80fd5b806341302560146100f45780635cf20c7b14610109578063715018a61461011c575b5f80fd5b610107610102366004611ce8565b61026e565b005b610107610117366004611ce8565b6104a6565b610107610675565b610143610132366004611d10565b60676020525f908152604090205481565b6040519081526020015b60405180910390f35b61017d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161014d565b610107610688565b6033546001600160a01b031661017d565b6101436101bc366004611d29565b6107fa565b6101076101cf366004611d5a565b6109af565b6101076101e2366004611d93565b610ac3565b61017d7f000000000000000000000000000000000000000000000000000000000000000081565b61010761021c366004611e24565b610d11565b61017d7f000000000000000000000000000000000000000000000000000000000000000081565b610107610256366004611ecd565b610f48565b610107610269366004611d10565b61108e565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146102eb5760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206c32207374616b696e6720636f6e747261637420616c6c6f77656460448201526064015b60405180910390fd5b6065545f0361033c5760405162461bcd60e51b815260206004820152600c60248201527f6e6f74206d696e7420796574000000000000000000000000000000000000000060448201526064016102e2565b8080158061034b575060655482115b1561036257600160655461035f9190611f63565b90505b6001600160a01b0383165f908152606760205260409020548110156103c95760405162461bcd60e51b815260206004820152601660248201527f616c6c20636f6d6d697373696f6e20636c61696d65640000000000000000000060448201526064016102e2565b6001600160a01b0383165f908152606760205260408120545b82811161042d576001600160a01b0385165f9081526066602090815260408083208484529091529020600101546104199083611f76565b91508061042581611f89565b9150506103e2565b50801561043e5761043e848261111b565b610449826001611f76565b6001600160a01b0385165f8181526067602090815260409182902093909355805185815292830184905290917fe4760bd616775d8b0ae78f9b8bfa4b453fdde769d10a0559ba473157ce9011d4910160405180910390a250505050565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161461051e5760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206c32207374616b696e6720636f6e747261637420616c6c6f77656460448201526064016102e2565b6065545f0361056f5760405162461bcd60e51b815260206004820152600c60248201527f6e6f74206d696e7420796574000000000000000000000000000000000000000060448201526064016102e2565b8080158061057e575060655482115b156105955760016065546105929190611f63565b90505b5f805b6001600160a01b0385165f9081526068602052604090206105b890611379565b81101561065e576001600160a01b0385165f9081526068602052604081206105e09083611388565b6001600160a01b0387165f908152606860205260409020909150610604908261139a565b801561063857506001600160a01b038087165f90815260686020908152604080832093851683526003909301905220548410155b15610655576106488187876113bb565b6106529084611f76565b92505b50600101610598565b50801561066f5761066f848261111b565b50505050565b61067d611956565b6106865f6119b0565b565b5f54610100900460ff16158080156106a657505f54600160ff909116105b806106bf5750303b1580156106bf57505f5460ff166001145b6107315760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016102e2565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561078d575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610795611a19565b80156107f7575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6001600160a01b038082165f9081526068602090815260408083209386168352600390930190529081205481908190805b6065548110156109a5576001600160a01b038088165f9081526066602090815260408083208584528252808320938a1683526006909301905220541561089f576001600160a01b038088165f9081526066602090815260408083208584528252808320938a16835260069093019052205492505b6001600160a01b0387165f908152606660209081526040808320848452909152902060020154156108f3576001600160a01b0387165f90815260666020908152604080832084845290915290206002015493505b6001600160a01b0387165f9081526066602090815260408083208484529091529020548490610923908590611fc0565b61092d9190611fd7565b6109379086611f76565b6001600160a01b038088165f908152606860209081526040808320938c16835260029093019052205490955060ff16801561099957506001600160a01b038087165f908152606860209081526040808320938b16835260049093019052205481145b6109a55760010161082b565b5050505092915050565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610a275760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206c32207374616b696e6720636f6e747261637420616c6c6f77656460448201526064016102e2565b6065545f03610a785760405162461bcd60e51b815260206004820152600c60248201527f6e6f74206d696e7420796574000000000000000000000000000000000000000060448201526064016102e2565b80801580610a87575060655482115b15610a9e576001606554610a9b9190611f63565b90505b5f610aaa8585846113bb565b90508015610abc57610abc848261111b565b5050505050565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610b3b5760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206c32207374616b696e6720636f6e747261637420616c6c6f77656460448201526064016102e2565b6001600160a01b0385165f908152606660209081526040808320868452909152902060028101839055600301819055821580610b9e57506001600160a01b038085165f908152606860209081526040808320938916835260039093019052205483145b15610c83576001600160a01b0385165f9081526066602090815260408083208684529091529020610bd29060040185611a9d565b506001600160a01b038086165f90815260666020908152604080832087845282528083209388168352600690930181528282208290556068905220610c179086611a9d565b506001600160a01b038481165f908152606860209081526040808320938916835260028401825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556003840182528083208390556004909301905290812055610abc565b6001600160a01b038085165f9081526068602090815260408083209389168352600290930190522080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155610ce19084611f63565b6001600160a01b038086165f908152606860209081526040808320938a1683526004909301905220555050505050565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610d895760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c79207265636f726420636f6e747261637420616c6c6f7765640000000060448201526064016102e2565b60658054905f610d9883611f89565b9190505550866001606554610dad9190611f63565b14610dfa5760405162461bcd60e51b815260206004820152601360248201527f696e76616c69642065706f636820696e6465780000000000000000000000000060448201526064016102e2565b8285148015610e0857508085145b610e545760405162461bcd60e51b815260206004820152601360248201527f696e76616c69642064617461206c656e6774680000000000000000000000000060448201526064016102e2565b5f5b85811015610f3e57848482818110610e7057610e7061200f565b9050602002013560665f898985818110610e8c57610e8c61200f565b9050602002016020810190610ea19190611d10565b6001600160a01b0316815260208082019290925260409081015f9081208c8252909252902055828282818110610ed957610ed961200f565b9050602002013560665f898985818110610ef557610ef561200f565b9050602002016020810190610f0a9190611d10565b6001600160a01b0316815260208082019290925260409081015f9081208c8252909252902060019081019190915501610e56565b5050505050505050565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610fc05760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206c32207374616b696e6720636f6e747261637420616c6c6f77656460448201526064016102e2565b6001600160a01b0387165f90815260666020908152604080832088845290915290206002810184905560038101839055610ffd9060040187611ab1565b506001600160a01b038088165f9081526066602090815260408083208984528252808320938a16835260069093019052208490558015611085576001600160a01b0386165f9081526068602052604090206110589088611ab1565b506001600160a01b038087165f908152606860209081526040808320938b16835260039093019052208590555b50505050505050565b611096611956565b6001600160a01b0381166111125760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016102e2565b6107f7816119b0565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa15801561119c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c0919061203c565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303815f875af115801561124a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061126e9190612053565b506040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa1580156112f0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611314919061203c565b90505f8311801561132d57508261132b8383611f63565b145b61066f5760405162461bcd60e51b815260206004820152601b60248201527f6d6f72706820746f6b656e207472616e73666572206661696c6564000000000060448201526064016102e2565b5f611382825490565b92915050565b5f6113938383611ac5565b9392505050565b6001600160a01b0381165f9081526001830160205260408120541515611393565b6001600160a01b0382165f9081526068602052604081206113dc908561139a565b6114285760405162461bcd60e51b815260206004820152601360248201527f6e6f2072656d61696e696e67207265776172640000000000000000000000000060448201526064016102e2565b6001600160a01b038084165f90815260686020908152604080832093881683526003909301905220548210156114a05760405162461bcd60e51b815260206004820152601260248201527f616c6c2072657761726420636c61696d6564000000000000000000000000000060448201526064016102e2565b6001600160a01b038084165f90815260686020908152604080832093881683526003909301905220545b8281116118f8576001600160a01b038086165f9081526066602090815260408083208584528083528184206002810154958a16855260068101845291842054938690529091525461151b9190611fc0565b6115259190611fd7565b61152f9083611f76565b6001600160a01b0386165f90815260666020526040812091935061157891869161155a856001611f76565b81526020019081526020015f2060040161139a90919063ffffffff16565b611704576001600160a01b0385165f9081526066602052604081206115c3918691906115a5856001611f76565b81526020019081526020015f20600401611ab190919063ffffffff16565b506001600160a01b038086165f818152606660208181526040808420878552808352818520968b1685526006909601825283205493835252909190611609846001611f76565b815260208082019290925260409081015f9081206001600160a01b03808a168352600690910184528282209490945592881683526066909152812090611650836001611f76565b81526020019081526020015f20600201545f03611704576001600160a01b0385165f81815260666020818152604080842086855280835290842060020154948452919052906116a0846001611f76565b815260208082019290925260409081015f908120600201939093556001600160a01b03881680845260668084528285208686528085529285206003015491855290925290916116f0846001611f76565b815260208101919091526040015f20600301555b6001600160a01b0385165f90815260666020908152604080832084845290915281206003018054916117358361206e565b90915550506001600160a01b0385165f90815260666020908152604080832084845290915281206003015490036117b9576001600160a01b0385165f908152606660209081526040808320848452909152812081815560018101829055600281018290556003810182905590600482018181816117b28282611c9f565b5050505050505b6001600160a01b038085165f908152606860209081526040808320938916835260029093019052205460ff16801561181857506001600160a01b038085165f908152606860209081526040808320938916835260049093019052205481145b156118aa576001600160a01b0384165f90815260686020526040902061183e9086611a9d565b506001600160a01b038481165f908152606860209081526040808320938916835260028401825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905560038401825280832083905560049093019052908120556118f8565b6001600160a01b038085165f9081526068602090815260408083209389168352600390930190529081208054916118e083611f89565b919050555080806118f090611f89565b9150506114ca565b50836001600160a01b0316836001600160a01b03167f7a84a08b02c91f3c62d572853f966fc799bbd121e8ad7833a4494ab8dcfcb4048484604051611947929190918252602082015260400190565b60405180910390a39392505050565b6033546001600160a01b031633146106865760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102e2565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16611a955760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016102e2565b610686611aeb565b5f611393836001600160a01b038416611b70565b5f611393836001600160a01b038416611c53565b5f825f018281548110611ada57611ada61200f565b905f5260205f200154905092915050565b5f54610100900460ff16611b675760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016102e2565b610686336119b0565b5f8181526001830160205260408120548015611c4a575f611b92600183611f63565b85549091505f90611ba590600190611f63565b9050818114611c04575f865f018281548110611bc357611bc361200f565b905f5260205f200154905080875f018481548110611be357611be361200f565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080611c1557611c156120a2565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050611382565b5f915050611382565b5f818152600183016020526040812054611c9857508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155611382565b505f611382565b5080545f8255905f5260205f20908101906107f791905b80821115611cc9575f8155600101611cb6565b5090565b80356001600160a01b0381168114611ce3575f80fd5b919050565b5f8060408385031215611cf9575f80fd5b611d0283611ccd565b946020939093013593505050565b5f60208284031215611d20575f80fd5b61139382611ccd565b5f8060408385031215611d3a575f80fd5b611d4383611ccd565b9150611d5160208401611ccd565b90509250929050565b5f805f60608486031215611d6c575f80fd5b611d7584611ccd565b9250611d8360208501611ccd565b9150604084013590509250925092565b5f805f805f60a08688031215611da7575f80fd5b611db086611ccd565b9450611dbe60208701611ccd565b94979496505050506040830135926060810135926080909101359150565b5f8083601f840112611dec575f80fd5b50813567ffffffffffffffff811115611e03575f80fd5b6020830191508360208260051b8501011115611e1d575f80fd5b9250929050565b5f805f805f805f6080888a031215611e3a575f80fd5b87359650602088013567ffffffffffffffff80821115611e58575f80fd5b611e648b838c01611ddc565b909850965060408a0135915080821115611e7c575f80fd5b611e888b838c01611ddc565b909650945060608a0135915080821115611ea0575f80fd5b50611ead8a828b01611ddc565b989b979a50959850939692959293505050565b80151581146107f7575f80fd5b5f805f805f805f60e0888a031215611ee3575f80fd5b611eec88611ccd565b9650611efa60208901611ccd565b955060408801359450606088013593506080880135925060a0880135915060c0880135611f2681611ec0565b8091505092959891949750929550565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561138257611382611f36565b8082018082111561138257611382611f36565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611fb957611fb9611f36565b5060010190565b808202811582820484141761138257611382611f36565b5f8261200a577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6020828403121561204c575f80fd5b5051919050565b5f60208284031215612063575f80fd5b815161139381611ec0565b5f8161207c5761207c611f36565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea164736f6c6343000818000a +0x608060405234801561000f575f80fd5b50600436106100f0575f3560e01c8063996cba6811610093578063ce293aaf11610063578063ce293aaf14610202578063d557714114610221578063e16bcc3214610248578063f2fde38b1461025b575f80fd5b8063996cba68146101a2578063ad8e1223146101b5578063cd4281d0146101c8578063cdd0c50e146101ef575f80fd5b8063807de443116100ce578063807de443146101245780638129fc1c146101685780638da5cb5b146101705780639889be5114610181575f80fd5b806341302560146100f45780635cf20c7b14610109578063715018a61461011c575b5f80fd5b610107610102366004611e1d565b61026e565b005b610107610117366004611e1d565b61053d565b61010761071c565b61014b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61010761072f565b6033546001600160a01b031661014b565b61019461018f366004611e45565b6108a1565b60405190815260200161015f565b6101076101b0366004611e76565b610a56565b6101076101c3366004611eaf565b610b7a565b61014b7f000000000000000000000000000000000000000000000000000000000000000081565b6101076101fd366004611f40565b610dc8565b610194610210366004611fdc565b60676020525f908152604090205481565b61014b7f000000000000000000000000000000000000000000000000000000000000000081565b610107610256366004612002565b610fff565b610107610269366004611fdc565b611145565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146102eb5760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206c32207374616b696e6720636f6e747261637420616c6c6f77656460448201526064015b60405180910390fd5b6065545f0361033c5760405162461bcd60e51b815260206004820152600e60248201527f6e6f74206d696e7465642079657400000000000000000000000000000000000060448201526064016102e2565b5f811580610357575060016065546103549190612098565b82115b6103615781610370565b60016065546103709190612098565b6001600160a01b0384165f908152606760205260409020549091508110156103da5760405162461bcd60e51b815260206004820152601660248201527f616c6c20636f6d6d697373696f6e20636c61696d65640000000000000000000060448201526064016102e2565b6001600160a01b0383165f908152606760205260408120545b8281116104c4576001600160a01b0385165f90815260666020908152604080832084845290915290206001015461042a90836120ab565b6001600160a01b0386165f90815260666020908152604080832085845290915281206001810182905560030154919350036104b2576001600160a01b0385165f908152606660209081526040808320848452909152812081815560018101829055600281018290556003810182905590600482018181816104ab8282611dd4565b5050505050505b806104bc816120be565b9150506103f3565b5080156104d5576104d584826111d2565b6104e08260016120ab565b6001600160a01b0385165f8181526067602090815260409182902093909355805185815292830184905290917fe4760bd616775d8b0ae78f9b8bfa4b453fdde769d10a0559ba473157ce9011d4910160405180910390a250505050565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146105b55760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206c32207374616b696e6720636f6e747261637420616c6c6f77656460448201526064016102e2565b6065545f036106065760405162461bcd60e51b815260206004820152600e60248201527f6e6f74206d696e7465642079657400000000000000000000000000000000000060448201526064016102e2565b5f8115806106215750600160655461061e9190612098565b82115b61062b578161063a565b600160655461063a9190612098565b90505f805b6001600160a01b0385165f90815260686020526040902061065f90611430565b811015610705576001600160a01b0385165f908152606860205260408120610687908361143f565b6001600160a01b0387165f9081526068602052604090209091506106ab9082611451565b80156106df57506001600160a01b038087165f90815260686020908152604080832093851683526003909301905220548410155b156106fc576106ef818786611472565b6106f990846120ab565b92505b5060010161063f565b5080156107165761071684826111d2565b50505050565b610724611a8b565b61072d5f611ae5565b565b5f54610100900460ff161580801561074d57505f54600160ff909116105b806107665750303b15801561076657505f5460ff166001145b6107d85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016102e2565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610834575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61083c611b4e565b801561089e575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6001600160a01b038082165f9081526068602090815260408083209386168352600390930190529081205481908190805b606554811015610a4c576001600160a01b038088165f9081526066602090815260408083208584528252808320938a16835260069093019052205415610946576001600160a01b038088165f9081526066602090815260408083208584528252808320938a16835260069093019052205492505b6001600160a01b0387165f9081526066602090815260408083208484529091529020600201541561099a576001600160a01b0387165f90815260666020908152604080832084845290915290206002015493505b6001600160a01b0387165f90815260666020908152604080832084845290915290205484906109ca9085906120f5565b6109d4919061210c565b6109de90866120ab565b6001600160a01b038088165f908152606860209081526040808320938c16835260029093019052205490955060ff168015610a4057506001600160a01b038087165f908152606860209081526040808320938b16835260049093019052205481145b610a4c576001016108d2565b5050505092915050565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610ace5760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206c32207374616b696e6720636f6e747261637420616c6c6f77656460448201526064016102e2565b6065545f03610b1f5760405162461bcd60e51b815260206004820152600e60248201527f6e6f74206d696e7465642079657400000000000000000000000000000000000060448201526064016102e2565b5f811580610b3a57506001606554610b379190612098565b82115b610b445781610b53565b6001606554610b539190612098565b90505f610b61858584611472565b90508015610b7357610b7384826111d2565b5050505050565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610bf25760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206c32207374616b696e6720636f6e747261637420616c6c6f77656460448201526064016102e2565b6001600160a01b0385165f908152606660209081526040808320868452909152902060028101839055600301819055821580610c5557506001600160a01b038085165f908152606860209081526040808320938916835260039093019052205483145b15610d3a576001600160a01b0385165f9081526066602090815260408083208684529091529020610c899060040185611bd2565b506001600160a01b038086165f90815260666020908152604080832087845282528083209388168352600690930181528282208290556068905220610cce9086611bd2565b506001600160a01b038481165f908152606860209081526040808320938916835260028401825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556003840182528083208390556004909301905290812055610b73565b6001600160a01b038085165f9081526068602090815260408083209389168352600290930190522080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155610d989084612098565b6001600160a01b038086165f908152606860209081526040808320938a1683526004909301905220555050505050565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610e405760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c79207265636f726420636f6e747261637420616c6c6f7765640000000060448201526064016102e2565b60658054905f610e4f836120be565b9190505550866001606554610e649190612098565b14610eb15760405162461bcd60e51b815260206004820152601360248201527f696e76616c69642065706f636820696e6465780000000000000000000000000060448201526064016102e2565b8285148015610ebf57508085145b610f0b5760405162461bcd60e51b815260206004820152601360248201527f696e76616c69642064617461206c656e6774680000000000000000000000000060448201526064016102e2565b5f5b85811015610ff557848482818110610f2757610f27612144565b9050602002013560665f898985818110610f4357610f43612144565b9050602002016020810190610f589190611fdc565b6001600160a01b0316815260208082019290925260409081015f9081208c8252909252902055828282818110610f9057610f90612144565b9050602002013560665f898985818110610fac57610fac612144565b9050602002016020810190610fc19190611fdc565b6001600160a01b0316815260208082019290925260409081015f9081208c8252909252902060019081019190915501610f0d565b5050505050505050565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146110775760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206c32207374616b696e6720636f6e747261637420616c6c6f77656460448201526064016102e2565b6001600160a01b0387165f908152606660209081526040808320888452909152902060028101849055600381018390556110b49060040187611be6565b506001600160a01b038088165f9081526066602090815260408083208984528252808320938a1683526006909301905220849055801561113c576001600160a01b0386165f90815260686020526040902061110f9088611be6565b506001600160a01b038087165f908152606860209081526040808320938b16835260039093019052208590555b50505050505050565b61114d611a8b565b6001600160a01b0381166111c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016102e2565b61089e81611ae5565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015611253573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112779190612171565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303815f875af1158015611301573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113259190612188565b506040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa1580156113a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113cb9190612171565b90505f831180156113e45750826113e28383612098565b145b6107165760405162461bcd60e51b815260206004820152601b60248201527f6d6f72706820746f6b656e207472616e73666572206661696c6564000000000060448201526064016102e2565b5f611439825490565b92915050565b5f61144a8383611bfa565b9392505050565b6001600160a01b0381165f908152600183016020526040812054151561144a565b6001600160a01b0382165f9081526068602052604081206114939085611451565b6114df5760405162461bcd60e51b815260206004820152601360248201527f6e6f2072656d61696e696e67207265776172640000000000000000000000000060448201526064016102e2565b6001600160a01b038084165f90815260686020908152604080832093881683526003909301905220548210156115575760405162461bcd60e51b815260206004820152601260248201527f616c6c2072657761726420636c61696d6564000000000000000000000000000060448201526064016102e2565b6001600160a01b038084165f90815260686020908152604080832093881683526003909301905220545b828111611a0e576001600160a01b038086165f9081526066602090815260408083208584528083528184206002810154958a1685526006810184529184205493869052909152546115d291906120f5565b6115dc919061210c565b6115e690836120ab565b6001600160a01b038086165f908152606860209081526040808320938a16835260029093019052205490925060ff16158061164957506001600160a01b038085165f90815260686020908152604080832093891683526004909301905220548114155b15611827576001600160a01b0385165f908152606660205260408120611695918691906116778560016120ab565b81526020019081526020015f2060040161145190919063ffffffff16565b611750576001600160a01b0385165f9081526066602052604081206116e0918691906116c28560016120ab565b81526020019081526020015f20600401611be690919063ffffffff16565b506001600160a01b038086165f818152606660208181526040808420878552808352818520968b16855260069096018252832054938352529091906117268460016120ab565b815260208082019290925260409081015f9081206001600160a01b03891682526006019092529020555b6001600160a01b0385165f908152606660205260408120906117738360016120ab565b81526020019081526020015f20600201545f03611827576001600160a01b0385165f81815260666020818152604080842086855280835290842060020154948452919052906117c38460016120ab565b815260208082019290925260409081015f908120600201939093556001600160a01b03881680845260668084528285208686528085529285206003015491855290925290916118138460016120ab565b815260208101919091526040015f20600301555b6001600160a01b0385165f9081526066602090815260408083208484529091528120600301805491611858836121a3565b90915550506001600160a01b0385165f9081526066602090815260408083208484529091529020600301541580156118b357506001600160a01b0385165f908152606660209081526040808320848452909152902060010154155b1561190b576001600160a01b0385165f908152606660209081526040808320848452909152812081815560018101829055600281018290556003810182905590600482018181816119048282611dd4565b5050505050505b6001600160a01b038085165f908152606860209081526040808320938916835260029093019052205460ff16801561196a57506001600160a01b038085165f908152606860209081526040808320938916835260049093019052205481145b156119fc576001600160a01b0384165f9081526068602052604090206119909086611bd2565b506001600160a01b038481165f908152606860209081526040808320938916835260028401825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556003840182528083208390556004909301905290812055611a0e565b80611a06816120be565b915050611581565b50611a1a8260016120ab565b6001600160a01b038481165f818152606860209081526040808320948a168084526003909501825291829020949094558051868152938401859052919290917f7a84a08b02c91f3c62d572853f966fc799bbd121e8ad7833a4494ab8dcfcb404910160405180910390a39392505050565b6033546001600160a01b0316331461072d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102e2565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16611bca5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016102e2565b61072d611c20565b5f61144a836001600160a01b038416611ca5565b5f61144a836001600160a01b038416611d88565b5f825f018281548110611c0f57611c0f612144565b905f5260205f200154905092915050565b5f54610100900460ff16611c9c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016102e2565b61072d33611ae5565b5f8181526001830160205260408120548015611d7f575f611cc7600183612098565b85549091505f90611cda90600190612098565b9050818114611d39575f865f018281548110611cf857611cf8612144565b905f5260205f200154905080875f018481548110611d1857611d18612144565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080611d4a57611d4a6121d7565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050611439565b5f915050611439565b5f818152600183016020526040812054611dcd57508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155611439565b505f611439565b5080545f8255905f5260205f209081019061089e91905b80821115611dfe575f8155600101611deb565b5090565b80356001600160a01b0381168114611e18575f80fd5b919050565b5f8060408385031215611e2e575f80fd5b611e3783611e02565b946020939093013593505050565b5f8060408385031215611e56575f80fd5b611e5f83611e02565b9150611e6d60208401611e02565b90509250929050565b5f805f60608486031215611e88575f80fd5b611e9184611e02565b9250611e9f60208501611e02565b9150604084013590509250925092565b5f805f805f60a08688031215611ec3575f80fd5b611ecc86611e02565b9450611eda60208701611e02565b94979496505050506040830135926060810135926080909101359150565b5f8083601f840112611f08575f80fd5b50813567ffffffffffffffff811115611f1f575f80fd5b6020830191508360208260051b8501011115611f39575f80fd5b9250929050565b5f805f805f805f6080888a031215611f56575f80fd5b87359650602088013567ffffffffffffffff80821115611f74575f80fd5b611f808b838c01611ef8565b909850965060408a0135915080821115611f98575f80fd5b611fa48b838c01611ef8565b909650945060608a0135915080821115611fbc575f80fd5b50611fc98a828b01611ef8565b989b979a50959850939692959293505050565b5f60208284031215611fec575f80fd5b61144a82611e02565b801515811461089e575f80fd5b5f805f805f805f60e0888a031215612018575f80fd5b61202188611e02565b965061202f60208901611e02565b955060408801359450606088013593506080880135925060a0880135915060c088013561205b81611ff5565b8091505092959891949750929550565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156114395761143961206b565b808201808211156114395761143961206b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036120ee576120ee61206b565b5060010190565b80820281158282048414176114395761143961206b565b5f8261213f577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215612181575f80fd5b5051919050565b5f60208284031215612198575f80fd5b815161144a81611ff5565b5f816121b1576121b161206b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea164736f6c6343000818000a diff --git a/bindings/bin/gov_deployed.hex b/bindings/bin/gov_deployed.hex index 7fdb9483c..407637d06 100644 --- a/bindings/bin/gov_deployed.hex +++ b/bindings/bin/gov_deployed.hex @@ -1 +1 @@ -0x608060405234801561000f575f80fd5b5060043610610179575f3560e01c80638da5cb5b116100d2578063b511328d11610088578063e5aec99511610063578063e5aec9951461038e578063ecded2ae14610397578063f2fde38b146103aa575f80fd5b8063b511328d14610334578063bb881e4114610372578063de00d3fd1461037b575f80fd5b8063929a9cbe116100b8578063929a9cbe146102b457806396dea936146102bd5780639f50395214610321575f80fd5b80638da5cb5b1461026f5780638e21d5fb1461028d575f80fd5b806349c1a5811161013257806377c793801161010d57806377c7938014610211578063807de4431461021a5780638596305214610266575f80fd5b806349c1a581146101dd5780636396619014610200578063715018a614610209575f80fd5b80632d7aa82b116101625780632d7aa82b146101a55780634063a84e146101b85780634428c1a4146101d4575f80fd5b80630121b93f1461017d5780630d61b51914610192575b5f80fd5b61019061018b366004611915565b6103bd565b005b6101906101a0366004611915565b6107c3565b6101906101b336600461192c565b6108a3565b6101c1606b5481565b6040519081526020015b60405180910390f35b6101c1606a5481565b6101f06101eb36600461198c565b610ce3565b60405190151581526020016101cb565b6101c1606c5481565b610190610d03565b6101c160675481565b6102417f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101cb565b6101c160655481565b60335473ffffffffffffffffffffffffffffffffffffffff16610241565b6102417f000000000000000000000000000000000000000000000000000000000000000081565b6101c160665481565b6102f96102cb366004611915565b606d6020525f9081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a0016101cb565b61019061032f366004611915565b610d16565b61035d610342366004611915565b606e6020525f90815260409020805460019091015460ff1682565b604080519283529015156020830152016101cb565b6101c160685481565b6101906103893660046119ba565b610dc0565b6101c160695481565b6101f06103a5366004611915565b6110b6565b6101906103b83660046119d0565b6110fb565b5f73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016636d46e987336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa158015610462573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061048691906119f2565b9050806104da5760405162461bcd60e51b815260206004820152601a60248201527f6f6e6c792073657175656e6365722063616e2070726f706f736500000000000060448201526064015b60405180910390fd5b5f828152606e6020526040902060010154829060ff161561053d5760405162461bcd60e51b815260206004820152601960248201527f70726f706f73616c20616c726561647920617070726f7665640000000000000060448201526064016104d1565b5f818152606e602052604090205442111561059a5760405162461bcd60e51b815260206004820152601460248201527f70726f706f73616c206f7574206f66206461746500000000000000000000000060448201526064016104d1565b6105b1335f858152606f6020526040902090611198565b156106245760405162461bcd60e51b815260206004820152602860248201527f73657175656e63657220616c726561647920766f746520666f7220746869732060448201527f70726f706f73616c00000000000000000000000000000000000000000000000060648201526084016104d1565b61063b335f858152606f60205260409020906111c6565b505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166377d7dffb6040518163ffffffff1660e01b81526004015f60405180830381865afa1580156106a5573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526106ea9190810190611a4e565b90505f5b815181101561077d5761073382828151811061070c5761070c611b2c565b6020026020010151606f5f8881526020019081526020015f2061119890919063ffffffff16565b6107755761077382828151811061074c5761074c611b2c565b6020026020010151606f5f8881526020019081526020015f206111e790919063ffffffff16565b505b6001016106ee565b5060038151600261078e9190611b86565b6107989190611b9d565b5f858152606f602052604090206107ae90611208565b11156107bd576107bd84611211565b50505050565b5f818152606e6020526040902060010154819060ff16156108265760405162461bcd60e51b815260206004820152601960248201527f70726f706f73616c20616c726561647920617070726f7665640000000000000060448201526064016104d1565b5f818152606e60205260409020544211156108835760405162461bcd60e51b815260206004820152601460248201527f70726f706f73616c206f7574206f66206461746500000000000000000000000060448201526064016104d1565b5f61088d836114f0565b9050801561089e5761089e83611211565b505050565b5f54610100900460ff16158080156108c157505f54600160ff909116105b806108da5750303b1580156108da57505f5460ff166001145b61094c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016104d1565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156109a8575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b5f87116109f75760405162461bcd60e51b815260206004820152601960248201527f696e76616c69642070726f706f73616c20696e74657276616c0000000000000060448201526064016104d1565b5f8311610a465760405162461bcd60e51b815260206004820152601260248201527f696e76616c6964206d6178206368756e6b73000000000000000000000000000060448201526064016104d1565b5f8211610a955760405162461bcd60e51b815260206004820152601460248201527f696e76616c696420726f6c6c75702065706f636800000000000000000000000060448201526064016104d1565b85151580610aa257508415155b80610aac57508315155b610af85760405162461bcd60e51b815260206004820152601460248201527f696e76616c696420626174636820706172616d7300000000000000000000000060448201526064016104d1565b610b00611600565b606b8790556065869055606685905560678490556068839055606982905542606a55604080515f8152602081018990527f9e890086ea51933fb82fde9166ba4d58ecb0fdb81559ee03743b7ac052f43f7b910160405180910390a1604080515f8152602081018890527fa044538eba1b21d23eb13fa35811ca9d1d7ff9ef1c81ee4dc594fca08412531b910160405180910390a1604080515f8152602081018790527f11b7e0f5b30d2753fcf7151b7a907cc343034c6a7572d56c261ae00c411d16a7910160405180910390a1604080515f8152602081018690527fab2cb47d396c5d12c082ac9b6512d332af2767ca8e1fa5bcef40fa6970626569910160405180910390a1604080515f8152602081018590527fd4cf36ce0d0f667d929d7bdf98e8774da275ea7f990c012c308516650d85839a910160405180910390a1604080515f8152602081018490527f9b20ee151d057f4f3ece7fdf4ca1370cf143f181760e7712b722572f2dcba88f910160405180910390a18015610cda575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b5f828152606f60205260408120610cfa9083611198565b90505b92915050565b610d0b611684565b610d145f6116eb565b565b610d1e611684565b5f81118015610d2f57506065548114155b610d7b5760405162461bcd60e51b815260206004820152601d60248201527f696e76616c6964206e65772070726f706f73616c20696e74657276616c00000060448201526064016104d1565b606580549082905560408051828152602081018490527f9e890086ea51933fb82fde9166ba4d58ecb0fdb81559ee03743b7ac052f43f7b910160405180910390a15050565b5f73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016636d46e987336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa158015610e65573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e8991906119f2565b905080610ed85760405162461bcd60e51b815260206004820152601a60248201527f6f6e6c792073657175656e6365722063616e2070726f706f736500000000000060448201526064016104d1565b81608001355f03610f2b5760405162461bcd60e51b815260206004820152601460248201527f696e76616c696420726f6c6c75702065706f636800000000000000000000000060448201526064016104d1565b5f826060013511610f7e5760405162461bcd60e51b815260206004820152601260248201527f696e76616c6964206d6178206368756e6b73000000000000000000000000000060448201526064016104d1565b8135151580610f905750602082013515155b80610f9e5750604082013515155b610fea5760405162461bcd60e51b815260206004820152601460248201527f696e76616c696420626174636820706172616d7300000000000000000000000060448201526064016104d1565b606c8054905f610ff983611bd5565b9091555050606c545f908152606d602052604090208290611045828281358155602082013560018201556040820135600282015560608201356003820155608082013560048201555050565b9050506040518060400160405280606b54426110619190611c0c565b81525f6020918201819052606c548152606e82526040902082518155910151600190910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790555050565b5f818152606e602052604081206001015460ff16156110d657505f919050565b5f828152606e60205260409020544211156110f257505f919050565b610cfd826114f0565b611103611684565b73ffffffffffffffffffffffffffffffffffffffff811661118c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104d1565b611195816116eb565b50565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001830160205260408120541515610cfa565b5f610cfa8373ffffffffffffffffffffffffffffffffffffffff8416611761565b5f610cfa8373ffffffffffffffffffffffffffffffffffffffff84166117ad565b5f610cfd825490565b5f818152606d60205260409020546065541461128057606580545f838152606d60205260409081902054928390555190917fa044538eba1b21d23eb13fa35811ca9d1d7ff9ef1c81ee4dc594fca08412531b9161127691848252602082015260400190565b60405180910390a1505b5f818152606d6020526040902060010154606654146112f557606680545f838152606d60205260409081902060010154928390555190917f11b7e0f5b30d2753fcf7151b7a907cc343034c6a7572d56c261ae00c411d16a7916112eb91848252602082015260400190565b60405180910390a1505b5f818152606d60205260409020600201546067541461136a57606780545f838152606d60205260409081902060020154928390555190917fab2cb47d396c5d12c082ac9b6512d332af2767ca8e1fa5bcef40fa69706265699161136091848252602082015260400190565b60405180910390a1505b5f818152606d6020526040902060030154606854146113df57606880545f838152606d60205260409081902060030154928390555190917fd4cf36ce0d0f667d929d7bdf98e8774da275ea7f990c012c308516650d85839a916113d591848252602082015260400190565b60405180910390a1505b5f818152606d60205260409020600401546069541461145357606980545f838152606d6020908152604091829020600401805490945542606a55925481518381529384015290917f9b20ee151d057f4f3ece7fdf4ca1370cf143f181760e7712b722572f2dcba88f910160405180910390a1505b5f818152606e6020908152604091829020600190810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790556065546066546067546068546069548651948552948401929092528285015260608201526080810191909152905182917f146676d233683eb1ec2a813a7f97a7aa3241ae78af1ee6df4a4548c47178cbfa919081900360a00190a250565b5f807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166377d7dffb6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561155a573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261159f9190810190611a4e565b90505f805b82518110156115dd576115c283828151811061070c5761070c611b2c565b156115d5576115d2826001611c0c565b91505b6001016115a4565b506003825160026115ee9190611b86565b6115f89190611b9d565b109392505050565b5f54610100900460ff1661167c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104d1565b610d14611890565b60335473ffffffffffffffffffffffffffffffffffffffff163314610d145760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104d1565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f8181526001830160205260408120546117a657508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610cfd565b505f610cfd565b5f8181526001830160205260408120548015611887575f6117cf600183611c1f565b85549091505f906117e290600190611c1f565b9050818114611841575f865f01828154811061180057611800611b2c565b905f5260205f200154905080875f01848154811061182057611820611b2c565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061185257611852611c32565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050610cfd565b5f915050610cfd565b5f54610100900460ff1661190c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104d1565b610d14336116eb565b5f60208284031215611925575f80fd5b5035919050565b5f805f805f8060c08789031215611941575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b73ffffffffffffffffffffffffffffffffffffffff81168114611195575f80fd5b5f806040838503121561199d575f80fd5b8235915060208301356119af8161196b565b809150509250929050565b5f60a082840312156119ca575f80fd5b50919050565b5f602082840312156119e0575f80fd5b81356119eb8161196b565b9392505050565b5f60208284031215611a02575f80fd5b815180151581146119eb575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b8051611a498161196b565b919050565b5f6020808385031215611a5f575f80fd5b825167ffffffffffffffff80821115611a76575f80fd5b818501915085601f830112611a89575f80fd5b815181811115611a9b57611a9b611a11565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715611ade57611ade611a11565b604052918252848201925083810185019188831115611afb575f80fd5b938501935b82851015611b2057611b1185611a3e565b84529385019392850192611b00565b98975050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082028115828204841417610cfd57610cfd611b59565b5f82611bd0577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611c0557611c05611b59565b5060010190565b80820180821115610cfd57610cfd611b59565b81810381811115610cfd57610cfd611b59565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea164736f6c6343000818000a +0x608060405234801561000f575f80fd5b5060043610610179575f3560e01c80638da5cb5b116100d2578063b511328d11610088578063e5aec99511610063578063e5aec9951461038e578063ecded2ae14610397578063f2fde38b146103aa575f80fd5b8063b511328d14610334578063bb881e4114610372578063de00d3fd1461037b575f80fd5b8063929a9cbe116100b8578063929a9cbe146102b457806396dea936146102bd5780639f50395214610321575f80fd5b80638da5cb5b1461026f5780638e21d5fb1461028d575f80fd5b806349c1a5811161013257806377c793801161010d57806377c7938014610211578063807de4431461021a5780638596305214610266575f80fd5b806349c1a581146101dd5780636396619014610200578063715018a614610209575f80fd5b80632d7aa82b116101625780632d7aa82b146101a55780634063a84e146101b85780634428c1a4146101d4575f80fd5b80630121b93f1461017d5780630d61b51914610192575b5f80fd5b61019061018b3660046116bf565b6103bd565b005b6101906101a03660046116bf565b610658565b6101906101b33660046116d6565b610733565b6101c1606b5481565b6040519081526020015b60405180910390f35b6101c1606a5481565b6101f06101eb366004611736565b610b73565b60405190151581526020016101cb565b6101c1606c5481565b610190610b93565b6101c160675481565b6102417f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101cb565b6101c160655481565b60335473ffffffffffffffffffffffffffffffffffffffff16610241565b6102417f000000000000000000000000000000000000000000000000000000000000000081565b6101c160665481565b6102f96102cb3660046116bf565b606d6020525f9081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a0016101cb565b61019061032f3660046116bf565b610ba6565b61035d6103423660046116bf565b606e6020525f90815260409020805460019091015460ff1682565b604080519283529015156020830152016101cb565b6101c160685481565b610190610389366004611764565b610c50565b6101c160695481565b6101f06103a53660046116bf565b610f46565b6101906103b836600461177a565b610f8b565b5f73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016636d46e987336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa158015610462573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610486919061179c565b9050806104da5760405162461bcd60e51b815260206004820152601a60248201527f6f6e6c792073657175656e6365722063616e2070726f706f736500000000000060448201526064015b60405180910390fd5b5f828152606e6020526040902060010154829060ff161561053d5760405162461bcd60e51b815260206004820152601960248201527f70726f706f73616c20616c726561647920617070726f7665640000000000000060448201526064016104d1565b5f818152606e602052604090205442111561059a5760405162461bcd60e51b815260206004820152601460248201527f70726f706f73616c206f7574206f66206461746500000000000000000000000060448201526064016104d1565b6105b1335f858152606f6020526040902090611028565b156106245760405162461bcd60e51b815260206004820152602860248201527f73657175656e63657220616c726561647920766f746520666f7220746869732060448201527f70726f706f73616c00000000000000000000000000000000000000000000000060648201526084016104d1565b61063b335f858152606f6020526040902090611056565b5061064583611077565b1561065357610653836111ae565b505050565b5f818152606e6020526040902060010154819060ff16156106bb5760405162461bcd60e51b815260206004820152601960248201527f70726f706f73616c20616c726561647920617070726f7665640000000000000060448201526064016104d1565b5f818152606e60205260409020544211156107185760405162461bcd60e51b815260206004820152601460248201527f70726f706f73616c206f7574206f66206461746500000000000000000000000060448201526064016104d1565b61072182611077565b1561072f5761072f826111ae565b5050565b5f54610100900460ff161580801561075157505f54600160ff909116105b8061076a5750303b15801561076a57505f5460ff166001145b6107dc5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016104d1565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610838575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b5f87116108875760405162461bcd60e51b815260206004820152601960248201527f696e76616c69642070726f706f73616c20696e74657276616c0000000000000060448201526064016104d1565b5f83116108d65760405162461bcd60e51b815260206004820152601260248201527f696e76616c6964206d6178206368756e6b73000000000000000000000000000060448201526064016104d1565b5f82116109255760405162461bcd60e51b815260206004820152601460248201527f696e76616c696420726f6c6c75702065706f636800000000000000000000000060448201526064016104d1565b8515158061093257508415155b8061093c57508315155b6109885760405162461bcd60e51b815260206004820152601460248201527f696e76616c696420626174636820706172616d7300000000000000000000000060448201526064016104d1565b61099061148d565b606b8790556065869055606685905560678490556068839055606982905542606a55604080515f8152602081018990527f9e890086ea51933fb82fde9166ba4d58ecb0fdb81559ee03743b7ac052f43f7b910160405180910390a1604080515f8152602081018890527fa044538eba1b21d23eb13fa35811ca9d1d7ff9ef1c81ee4dc594fca08412531b910160405180910390a1604080515f8152602081018790527f11b7e0f5b30d2753fcf7151b7a907cc343034c6a7572d56c261ae00c411d16a7910160405180910390a1604080515f8152602081018690527fab2cb47d396c5d12c082ac9b6512d332af2767ca8e1fa5bcef40fa6970626569910160405180910390a1604080515f8152602081018590527fd4cf36ce0d0f667d929d7bdf98e8774da275ea7f990c012c308516650d85839a910160405180910390a1604080515f8152602081018490527f9b20ee151d057f4f3ece7fdf4ca1370cf143f181760e7712b722572f2dcba88f910160405180910390a18015610b6a575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b5f828152606f60205260408120610b8a9083611028565b90505b92915050565b610b9b611511565b610ba45f611578565b565b610bae611511565b5f81118015610bbf57506065548114155b610c0b5760405162461bcd60e51b815260206004820152601d60248201527f696e76616c6964206e65772070726f706f73616c20696e74657276616c00000060448201526064016104d1565b606580549082905560408051828152602081018490527f9e890086ea51933fb82fde9166ba4d58ecb0fdb81559ee03743b7ac052f43f7b910160405180910390a15050565b5f73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016636d46e987336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa158015610cf5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d19919061179c565b905080610d685760405162461bcd60e51b815260206004820152601a60248201527f6f6e6c792073657175656e6365722063616e2070726f706f736500000000000060448201526064016104d1565b81608001355f03610dbb5760405162461bcd60e51b815260206004820152601460248201527f696e76616c696420726f6c6c75702065706f636800000000000000000000000060448201526064016104d1565b5f826060013511610e0e5760405162461bcd60e51b815260206004820152601260248201527f696e76616c6964206d6178206368756e6b73000000000000000000000000000060448201526064016104d1565b8135151580610e205750602082013515155b80610e2e5750604082013515155b610e7a5760405162461bcd60e51b815260206004820152601460248201527f696e76616c696420626174636820706172616d7300000000000000000000000060448201526064016104d1565b606c8054905f610e89836117e8565b9091555050606c545f908152606d602052604090208290610ed5828281358155602082013560018201556040820135600282015560608201356003820155608082013560048201555050565b9050506040518060400160405280606b5442610ef1919061181f565b81525f6020918201819052606c548152606e82526040902082518155910151600190910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790555050565b5f818152606e602052604081206001015460ff1615610f6657505f919050565b5f828152606e6020526040902054421115610f8257505f919050565b610b8d82611077565b610f93611511565b73ffffffffffffffffffffffffffffffffffffffff811661101c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104d1565b61102581611578565b50565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001830160205260408120541515610b8a565b5f610b8a8373ffffffffffffffffffffffffffffffffffffffff84166115ee565b5f807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166377d7dffb6040518163ffffffff1660e01b81526004015f60405180830381865afa1580156110e1573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611126919081019061186f565b90505f805b825181101561118b576111708382815181106111495761114961194d565b6020026020010151606f5f8881526020019081526020015f2061102890919063ffffffff16565b156111835761118082600161181f565b91505b60010161112b565b5060038251600261119c919061197a565b6111a69190611991565b109392505050565b5f818152606d60205260409020546065541461121d57606580545f838152606d60205260409081902054928390555190917fa044538eba1b21d23eb13fa35811ca9d1d7ff9ef1c81ee4dc594fca08412531b9161121391848252602082015260400190565b60405180910390a1505b5f818152606d60205260409020600101546066541461129257606680545f838152606d60205260409081902060010154928390555190917f11b7e0f5b30d2753fcf7151b7a907cc343034c6a7572d56c261ae00c411d16a79161128891848252602082015260400190565b60405180910390a1505b5f818152606d60205260409020600201546067541461130757606780545f838152606d60205260409081902060020154928390555190917fab2cb47d396c5d12c082ac9b6512d332af2767ca8e1fa5bcef40fa6970626569916112fd91848252602082015260400190565b60405180910390a1505b5f818152606d60205260409020600301546068541461137c57606880545f838152606d60205260409081902060030154928390555190917fd4cf36ce0d0f667d929d7bdf98e8774da275ea7f990c012c308516650d85839a9161137291848252602082015260400190565b60405180910390a1505b5f818152606d6020526040902060040154606954146113f057606980545f838152606d6020908152604091829020600401805490945542606a55925481518381529384015290917f9b20ee151d057f4f3ece7fdf4ca1370cf143f181760e7712b722572f2dcba88f910160405180910390a1505b5f818152606e6020908152604091829020600190810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790556065546066546067546068546069548651948552948401929092528285015260608201526080810191909152905182917f146676d233683eb1ec2a813a7f97a7aa3241ae78af1ee6df4a4548c47178cbfa919081900360a00190a250565b5f54610100900460ff166115095760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104d1565b610ba461163a565b60335473ffffffffffffffffffffffffffffffffffffffff163314610ba45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104d1565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f81815260018301602052604081205461163357508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610b8d565b505f610b8d565b5f54610100900460ff166116b65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104d1565b610ba433611578565b5f602082840312156116cf575f80fd5b5035919050565b5f805f805f8060c087890312156116eb575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b73ffffffffffffffffffffffffffffffffffffffff81168114611025575f80fd5b5f8060408385031215611747575f80fd5b82359150602083013561175981611715565b809150509250929050565b5f60a08284031215611774575f80fd5b50919050565b5f6020828403121561178a575f80fd5b813561179581611715565b9392505050565b5f602082840312156117ac575f80fd5b81518015158114611795575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611818576118186117bb565b5060010190565b80820180821115610b8d57610b8d6117bb565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b805161186a81611715565b919050565b5f6020808385031215611880575f80fd5b825167ffffffffffffffff80821115611897575f80fd5b818501915085601f8301126118aa575f80fd5b8151818111156118bc576118bc611832565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156118ff576118ff611832565b60405291825284820192508381018501918883111561191c575f80fd5b938501935b82851015611941576119328561185f565b84529385019392850192611921565b98975050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8082028115828204841417610b8d57610b8d6117bb565b5f826119c4577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea164736f6c6343000818000a diff --git a/bindings/bin/l1staking_deployed.hex b/bindings/bin/l1staking_deployed.hex index d8c06d621..d6186d19c 100644 --- a/bindings/bin/l1staking_deployed.hex +++ b/bindings/bin/l1staking_deployed.hex @@ -1 +1 @@ -0x6080604052600436106101db575f3560e01c80638a565ac3116100fd578063ab8c53dc11610092578063c7cd469a11610062578063c7cd469a146105f5578063cde4cd1114610614578063d51c90a914610633578063f2fde38b14610648575f80fd5b8063ab8c53dc1461056e578063ae81de5314610583578063bfa02ba9146105a2578063c0af545b146105ce575f80fd5b8063927ede2d116100cd578063927ede2d146104cf5780639b19251a14610502578063a3066aab14610530578063a4f209b01461054f575f80fd5b80638a565ac3146104395780638b8c24c1146104585780638da5cb5b146104775780639168ae72146104a1575f80fd5b80634d64903a11610173578063715018a611610143578063715018a61461038d5780637a4e87c3146103a15780637a9262a2146103db578063831cfb5814610406575f80fd5b80634d64903a1461031657806352d472eb1461032b578063692c565b146103405780636f1e85331461036e575f80fd5b80633ccfd60b116101ae5780633ccfd60b146102ad57806341de239b146102c157806343352d61146102d657806345ff4c80146102f7575f80fd5b80632108db35146101df5780632a28e5a3146102075780633a9bbede1461021c5780633cb747bf1461025a575b5f80fd5b3480156101ea575f80fd5b506101f4609c5481565b6040519081526020015b60405180910390f35b61021a61021536600461252d565b610667565b005b348015610227575f80fd5b5061024a610236366004612594565b609f6020525f908152604090205460ff1681565b60405190151581526020016101fe565b348015610265575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101fe565b3480156102b8575f80fd5b5061021a610aa4565b3480156102cc575f80fd5b506101f460995481565b3480156102e1575f80fd5b506102ea610cac565b6040516101fe91906125ad565b348015610302575f80fd5b5061021a610311366004612606565b610cbd565b348015610321575f80fd5b506101f460985481565b348015610336575f80fd5b506101f4609a5481565b34801561034b575f80fd5b5061024a61035a36600461264c565b60a46020525f908152604090205460ff1681565b348015610379575f80fd5b5061024a610388366004612594565b611161565b348015610398575f80fd5b5061021a611173565b3480156103ac575f80fd5b5061024a6103bb366004612663565b805160208183018101805160a38252928201919093012091525460ff1681565b3480156103e6575f80fd5b506101f46103f5366004612594565b60a56020525f908152604090205481565b348015610411575f80fd5b506102887f000000000000000000000000000000000000000000000000000000000000000081565b348015610444575f80fd5b5061021a61045336600461264c565b611186565b348015610463575f80fd5b506101f461047236600461269d565b611231565b348015610482575f80fd5b5060335473ffffffffffffffffffffffffffffffffffffffff16610288565b3480156104ac575f80fd5b506104c06104bb366004612594565b6115c5565b6040516101fe93929190612792565b3480156104da575f80fd5b506102887f000000000000000000000000000000000000000000000000000000000000000081565b34801561050d575f80fd5b5061024a61051c366004612594565b609e6020525f908152604090205460ff1681565b34801561053b575f80fd5b5061021a61054a366004612594565b611684565b34801561055a575f80fd5b5061021a61056936600461264c565b6117b6565b348015610579575f80fd5b506101f4609d5481565b34801561058e575f80fd5b5061021a61059d36600461264c565b611866565b3480156105ad575f80fd5b506097546102889073ffffffffffffffffffffffffffffffffffffffff1681565b3480156105d9575f80fd5b5061024a6105e8366004612817565b6001979650505050505050565b348015610600575f80fd5b5061021a61060f3660046128dd565b611909565b34801561061f575f80fd5b5061021a61062e366004612594565b611b0d565b34801561063e575f80fd5b506101f4609b5481565b348015610653575f80fd5b5061021a610662366004612594565b611b88565b335f818152609e602052604090205460ff166106ca5760405162461bcd60e51b815260206004820152601060248201527f6e6f7420696e2077686974656c6973740000000000000000000000000000000060448201526064015b60405180910390fd5b335f90815260a2602052604090205473ffffffffffffffffffffffffffffffffffffffff161561073c5760405162461bcd60e51b815260206004820152601260248201527f616c72656164792072656769737465726564000000000000000000000000000060448201526064016106c1565b821580159061075957505f83815260a4602052604090205460ff16155b6107a55760405162461bcd60e51b815260206004820152601960248201527f696e76616c69642074656e6465726d696e74207075626b65790000000000000060448201526064016106c1565b81516101001480156107d7575060a3826040516107c29190612944565b9081526040519081900360200190205460ff16155b6108235760405162461bcd60e51b815260206004820152601260248201527f696e76616c696420626c73207075626b6579000000000000000000000000000060448201526064016106c1565b60985434146108745760405162461bcd60e51b815260206004820152601560248201527f696e76616c6964207374616b696e672076616c7565000000000000000000000060448201526064016106c1565b60405180606001604052806108863390565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083018790526040928301869052335f90815260a28252839020845181547fffffffffffffffffffffffff0000000000000000000000000000000000000000169316929092178255830151600182015590820151600282019061090590826129f4565b5090505061091b6109133390565b60a090611c22565b50600160a38360405161092e9190612944565b9081526040805191829003602090810190922080549315157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009485161790555f86815260a49092529020805490911660011790557fb9c7babb56df9f2da4a30811a6c778e4e68af88b72712d56cf62c5516e20e1996109aa3390565b84846040516109bb93929190612792565b60405180910390a1335f90815260a260209081526040918290208251606081018452815473ffffffffffffffffffffffffffffffffffffffff168152600182015492810192909252600281018054610a9f9484019190610a1a9061295f565b80601f0160208091040260200160405190810160405280929190818152602001828054610a469061295f565b8015610a915780601f10610a6857610100808354040283529160200191610a91565b820191905f5260205f20905b815481529060010190602001808311610a7457829003601f168201915b505050505081525050611c4a565b505050565b610aaf60a033611d7f565b610afb5760405162461bcd60e51b815260206004820152600b60248201527f6f6e6c79207374616b657200000000000000000000000000000000000000000060448201526064016106c1565b335f90815260a5602052604090205415610b575760405162461bcd60e51b815260206004820152600b60248201527f7769746864726177696e6700000000000000000000000000000000000000000060448201526064016106c1565b609954610b649043612b1f565b335f81815260a56020526040902091909155610b829060a090611dad565b50335f81815260a560209081526040918290205491519182527f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5910160405180910390a26040805160018082528183019092525f916020808301908036833701905050905033815f81518110610bfa57610bfa612b32565b73ffffffffffffffffffffffffffffffffffffffff92909216602092830291909101820152335f908152609e8252604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00908116909155609f909352908190208054909216600117909155517f3f446646c03e618be8238a586960d6d625f35c653cdca1ef59609993e8ed2c8490610c989083906125ad565b60405180910390a1610ca981611dce565b50565b6060610cb860a0611ed3565b905090565b5f54610100900460ff1615808015610cdb57505f54600160ff909116105b80610cf45750303b158015610cf457505f5460ff166001145b610d665760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106c1565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610dc2575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b73ffffffffffffffffffffffffffffffffffffffff8716610e255760405162461bcd60e51b815260206004820152601760248201527f696e76616c696420726f6c6c757020636f6e747261637400000000000000000060448201526064016106c1565b5f8611610e745760405162461bcd60e51b815260206004820152601560248201527f696e76616c6964207374616b696e672076616c7565000000000000000000000060448201526064016106c1565b5f8511610ec35760405162461bcd60e51b815260206004820152601e60248201527f696e76616c6964207769746864726177616c206c6f636b20626c6f636b73000060448201526064016106c1565b5f8311610f125760405162461bcd60e51b815260206004820152601c60248201527f696e76616c696420676173206c696d697420616464207374616b65720000000060448201526064016106c1565b5f8211610f615760405162461bcd60e51b815260206004820181905260248201527f696e76616c696420676173206c696d69742072656d6f7665207374616b65727360448201526064016106c1565b5f84118015610f71575060648411155b610fe25760405162461bcd60e51b8152602060048201526024808201527f696e76616c6964206368616c6c656e676572207265776172642070657263656e60448201527f746167650000000000000000000000000000000000000000000000000000000060648201526084016106c1565b610fea611edf565b610ff2611f63565b609780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8916179055609a84905560988690556099859055609b839055609c829055604080515f8152602081018590527f0ef80fb82bf5439b8591744c0fde771f5d93dce7a7970b1e9b7828cdc3970e9c910160405180910390a1604080515f8152602081018490527fdd4b37d1f14888147fe4be2cfaedcbf148fd07ececc856d0433241b8b6e4a7f7910160405180910390a1604080515f8152602081018690527fa46de936426e045703b2d34a292a19fde92b329018db8e0da750033876b655ba910160405180910390a18015611158575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b5f61116d60a083611d7f565b92915050565b61117b611fe7565b6111845f61204e565b565b61118e611fe7565b5f8111801561119f5750609c548114155b6111eb5760405162461bcd60e51b815260206004820152601560248201527f696e76616c6964206e657720676173206c696d6974000000000000000000000060448201526064016106c1565b609c80549082905560408051828152602081018490527fdd4b37d1f14888147fe4be2cfaedcbf148fd07ececc856d0433241b8b6e4a7f791015b60405180910390a15050565b6097545f9073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112b05760405162461bcd60e51b815260206004820152601460248201527f6f6e6c7920726f6c6c757020636f6e747261637400000000000000000000000060448201526064016106c1565b6112b86120c4565b5f805b83518110156114dc575f60a55f8684815181106112da576112da612b32565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411156113905760a55f85838151811061133757611337612b32565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9055609854826113899190612b1f565b91506114d4565b6113bd8482815181106113a5576113a5612b32565b602002602001015160a0611d7f90919063ffffffff16565b156113d2576098546113cf9083612b1f565b91505b6113ff8482815181106113e7576113e7612b32565b602002602001015160a0611dad90919063ffffffff16565b50609e5f85838151811061141557611415612b32565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81549060ff02191690556001609f5f86848151811061147c5761147c612b32565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b6001016112bb565b505f6064609a54836114ee9190612b5f565b6114f89190612b76565b90506115048183612bae565b609d5f8282546115149190612b1f565b909155505060975461153c9073ffffffffffffffffffffffffffffffffffffffff168261211d565b7f654f4a61849f1b3ad10abb283d27f02d5fece7b820acc5a3b874713b58748b5a8460405161156b91906125ad565b60405180910390a17f3f446646c03e618be8238a586960d6d625f35c653cdca1ef59609993e8ed2c84846040516115a291906125ad565b60405180910390a16115b384611dce565b9150506115c06001606555565b919050565b60a26020525f908152604090208054600182015460028301805473ffffffffffffffffffffffffffffffffffffffff9093169391926116039061295f565b80601f016020809104026020016040519081016040528092919081815260200182805461162f9061295f565b801561167a5780601f106116515761010080835404028352916020019161167a565b820191905f5260205f20905b81548152906001019060200180831161165d57829003601f168201915b5050505050905083565b61168c6120c4565b335f90815260a560205260409020546116e75760405162461bcd60e51b815260206004820152601460248201527f7769746864726177616c206e6f7420657869737400000000000000000000000060448201526064016106c1565b335f90815260a5602052604090205443116117445760405162461bcd60e51b815260206004820152601160248201527f7769746864726177616c206c6f636b656400000000000000000000000000000060448201526064016106c1565b335f81815260a56020908152604080832092909255815173ffffffffffffffffffffffffffffffffffffffff8516815291517f89309c9b2aeaffbdce717113df9427298b20448c05919bf889e05f8c3094254b9281900390910190a26117ac8160985461211d565b610ca96001606555565b6117be611fe7565b5f811180156117ce575060648111155b80156117dc5750609a548114155b6118285760405162461bcd60e51b815260206004820152601960248201527f696e76616c6964207265776172642070657263656e746167650000000000000060448201526064016106c1565b609a80549082905560408051828152602081018490527fa46de936426e045703b2d34a292a19fde92b329018db8e0da750033876b655ba9101611225565b61186e611fe7565b5f8111801561187f5750609b548114155b6118cb5760405162461bcd60e51b815260206004820152601560248201527f696e76616c6964206e657720676173206c696d6974000000000000000000000060448201526064016106c1565b609b80549082905560408051828152602081018490527f0ef80fb82bf5439b8591744c0fde771f5d93dce7a7970b1e9b7828cdc3970e9c9101611225565b611911611fe7565b5f5b83811015611a4157609f5f86868481811061193057611930612b32565b90506020020160208101906119459190612594565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f205460ff16156119bb5760405162461bcd60e51b815260206004820152600f60248201527f696e2072656d6f766564206c697374000000000000000000000000000000000060448201526064016106c1565b6001609e5f8787858181106119d2576119d2612b32565b90506020020160208101906119e79190612594565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101611913565b505f5b81811015611ac957609e5f848484818110611a6157611a61612b32565b9050602002016020810190611a769190612594565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600101611a44565b507fe375867e538b40218c1b3db2ccceaf875eb073e38b510449e6088c1539ac862284848484604051611aff9493929190612c13565b60405180910390a150505050565b611b15611fe7565b611b1d6120c4565b609d54611b2a828261211d565b5f609d556040805173ffffffffffffffffffffffffffffffffffffffff84168152602081018390527fa1fefb6c5328a92a416e321ed50997303fe7135fd88c28b0592b21ce42b5cdd9910160405180910390a150610ca96001606555565b611b90611fe7565b73ffffffffffffffffffffffffffffffffffffffff8116611c195760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106c1565b610ca98161204e565b5f611c438373ffffffffffffffffffffffffffffffffffffffff84166121da565b9392505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b2267a7b7f00000000000000000000000000000000000000000000000000000000000000005f84604051602401611cb99190612c44565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6d454d5100000000000000000000000000000000000000000000000000000000179052609b5490517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152611d4f9493929190600401612c88565b5f604051808303815f87803b158015611d66575f80fd5b505af1158015611d78573d5f803e3d5ffd5b5050505050565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001830160205260408120541515611c43565b5f611c438373ffffffffffffffffffffffffffffffffffffffff8416612226565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b2267a7b7f00000000000000000000000000000000000000000000000000000000000000005f84604051602401611e3d91906125ad565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be67fcc00000000000000000000000000000000000000000000000000000000179052609c5490517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152611d4f9493929190600401612c88565b60605f611c4383612309565b5f54610100900460ff16611f5b5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106c1565b611184612362565b5f54610100900460ff16611fdf5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106c1565b6111846123e7565b60335473ffffffffffffffffffffffffffffffffffffffff1633146111845760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106c1565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6002606554036121165760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106c1565b6002606555565b80156121cf575f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114612179576040519150601f19603f3d011682016040523d82523d5f602084013e61217e565b606091505b5050905080610a9f5760405162461bcd60e51b815260206004820152601b60248201527f526f6c6c75703a20455448207472616e73666572206661696c6564000000000060448201526064016106c1565b5050565b6001606555565b5f81815260018301602052604081205461221f57508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561116d565b505f61116d565b5f8181526001830160205260408120548015612300575f612248600183612bae565b85549091505f9061225b90600190612bae565b90508181146122ba575f865f01828154811061227957612279612b32565b905f5260205f200154905080875f01848154811061229957612299612b32565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806122cb576122cb612ccd565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061116d565b5f91505061116d565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561235657602002820191905f5260205f20905b815481526020019060010190808311612342575b50505050509050919050565b5f54610100900460ff166123de5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106c1565b6111843361204e565b5f54610100900460ff166121d35760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106c1565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156124b9576124b9612463565b604052919050565b5f82601f8301126124d0575f80fd5b813567ffffffffffffffff8111156124ea576124ea612463565b6124fd6020601f19601f84011601612490565b818152846020838601011115612511575f80fd5b816020850160208301375f918101602001919091529392505050565b5f806040838503121561253e575f80fd5b82359150602083013567ffffffffffffffff81111561255b575f80fd5b612567858286016124c1565b9150509250929050565b803573ffffffffffffffffffffffffffffffffffffffff811681146115c0575f80fd5b5f602082840312156125a4575f80fd5b611c4382612571565b602080825282518282018190525f9190848201906040850190845b818110156125fa57835173ffffffffffffffffffffffffffffffffffffffff16835292840192918401916001016125c8565b50909695505050505050565b5f805f805f8060c0878903121561261b575f80fd5b61262487612571565b9860208801359850604088013597606081013597506080810135965060a00135945092505050565b5f6020828403121561265c575f80fd5b5035919050565b5f60208284031215612673575f80fd5b813567ffffffffffffffff811115612689575f80fd5b612695848285016124c1565b949350505050565b5f60208083850312156126ae575f80fd5b823567ffffffffffffffff808211156126c5575f80fd5b818501915085601f8301126126d8575f80fd5b8135818111156126ea576126ea612463565b8060051b91506126fb848301612490565b8181529183018401918481019088841115612714575f80fd5b938501935b838510156127395761272a85612571565b82529385019390850190612719565b98975050505050505050565b5f5b8381101561275f578181015183820152602001612747565b50505f910152565b5f815180845261277e816020860160208601612745565b601f01601f19169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201525f6127c66060830184612767565b95945050505050565b5f8083601f8401126127df575f80fd5b50813567ffffffffffffffff8111156127f6575f80fd5b6020830191508360208260051b8501011115612810575f80fd5b9250929050565b5f805f805f805f6080888a03121561282d575f80fd5b873567ffffffffffffffff80821115612844575f80fd5b6128508b838c016127cf565b909950975060208a0135915080821115612868575f80fd5b6128748b838c016127cf565b909750955060408a0135945060608a0135915080821115612893575f80fd5b818a0191508a601f8301126128a6575f80fd5b8135818111156128b4575f80fd5b8b60208285010111156128c5575f80fd5b60208301945080935050505092959891949750929550565b5f805f80604085870312156128f0575f80fd5b843567ffffffffffffffff80821115612907575f80fd5b612913888389016127cf565b9096509450602087013591508082111561292b575f80fd5b50612938878288016127cf565b95989497509550505050565b5f8251612955818460208701612745565b9190910192915050565b600181811c9082168061297357607f821691505b6020821081036129aa577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f821115610a9f57805f5260205f20601f840160051c810160208510156129d55750805b601f840160051c820191505b81811015611d78575f81556001016129e1565b815167ffffffffffffffff811115612a0e57612a0e612463565b612a2281612a1c845461295f565b846129b0565b602080601f831160018114612a74575f8415612a3e5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555612aea565b5f85815260208120601f198616915b82811015612aa257888601518255948401946001909101908401612a83565b5085821015612ade57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b505060018460011b0185555b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561116d5761116d612af2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b808202811582820484141761116d5761116d612af2565b5f82612ba9577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b8181038181111561116d5761116d612af2565b8183525f60208085019450825f5b85811015612c085773ffffffffffffffffffffffffffffffffffffffff612bf583612571565b1687529582019590820190600101612bcf565b509495945050505050565b604081525f612c26604083018688612bc1565b8281036020840152612c39818587612bc1565b979650505050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff8251166020820152602082015160408201525f60408301516060808401526126956080840182612767565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152608060408201525f612cbc6080830185612767565b905082606083015295945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea164736f6c6343000818000a +0x6080604052600436106101db575f3560e01c80638a565ac3116100fd578063ab8c53dc11610092578063c7cd469a11610062578063c7cd469a146105f5578063cde4cd1114610614578063d51c90a914610633578063f2fde38b14610648575f80fd5b8063ab8c53dc1461056e578063ae81de5314610583578063bfa02ba9146105a2578063c0af545b146105ce575f80fd5b8063927ede2d116100cd578063927ede2d146104cf5780639b19251a14610502578063a3066aab14610530578063a4f209b01461054f575f80fd5b80638a565ac3146104395780638b8c24c1146104585780638da5cb5b146104775780639168ae72146104a1575f80fd5b80634d64903a11610173578063715018a611610143578063715018a61461038d5780637a4e87c3146103a15780637a9262a2146103db578063831cfb5814610406575f80fd5b80634d64903a1461031657806352d472eb1461032b578063692c565b146103405780636f1e85331461036e575f80fd5b80633ccfd60b116101ae5780633ccfd60b146102ad57806341de239b146102c157806343352d61146102d657806345ff4c80146102f7575f80fd5b80632108db35146101df5780632a28e5a3146102075780633a9bbede1461021c5780633cb747bf1461025a575b5f80fd5b3480156101ea575f80fd5b506101f4609c5481565b6040519081526020015b60405180910390f35b61021a61021536600461264c565b610667565b005b348015610227575f80fd5b5061024a6102363660046126b3565b609f6020525f908152604090205460ff1681565b60405190151581526020016101fe565b348015610265575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101fe565b3480156102b8575f80fd5b5061021a610aa4565b3480156102cc575f80fd5b506101f460995481565b3480156102e1575f80fd5b506102ea610cac565b6040516101fe91906126cc565b348015610302575f80fd5b5061021a610311366004612725565b610cbd565b348015610321575f80fd5b506101f460985481565b348015610336575f80fd5b506101f4609a5481565b34801561034b575f80fd5b5061024a61035a36600461276b565b60a46020525f908152604090205460ff1681565b348015610379575f80fd5b5061024a6103883660046126b3565b611161565b348015610398575f80fd5b5061021a611173565b3480156103ac575f80fd5b5061024a6103bb366004612782565b805160208183018101805160a38252928201919093012091525460ff1681565b3480156103e6575f80fd5b506101f46103f53660046126b3565b60a56020525f908152604090205481565b348015610411575f80fd5b506102887f000000000000000000000000000000000000000000000000000000000000000081565b348015610444575f80fd5b5061021a61045336600461276b565b611186565b348015610463575f80fd5b506101f46104723660046127bc565b611231565b348015610482575f80fd5b5060335473ffffffffffffffffffffffffffffffffffffffff16610288565b3480156104ac575f80fd5b506104c06104bb3660046126b3565b611648565b6040516101fe939291906128b1565b3480156104da575f80fd5b506102887f000000000000000000000000000000000000000000000000000000000000000081565b34801561050d575f80fd5b5061024a61051c3660046126b3565b609e6020525f908152604090205460ff1681565b34801561053b575f80fd5b5061021a61054a3660046126b3565b611707565b34801561055a575f80fd5b5061021a61056936600461276b565b61188b565b348015610579575f80fd5b506101f4609d5481565b34801561058e575f80fd5b5061021a61059d36600461276b565b61193b565b3480156105ad575f80fd5b506097546102889073ffffffffffffffffffffffffffffffffffffffff1681565b3480156105d9575f80fd5b5061024a6105e8366004612936565b6001979650505050505050565b348015610600575f80fd5b5061021a61060f3660046129fc565b6119de565b34801561061f575f80fd5b5061021a61062e3660046126b3565b611be2565b34801561063e575f80fd5b506101f4609b5481565b348015610653575f80fd5b5061021a6106623660046126b3565b611c5d565b335f818152609e602052604090205460ff166106ca5760405162461bcd60e51b815260206004820152601060248201527f6e6f7420696e2077686974656c6973740000000000000000000000000000000060448201526064015b60405180910390fd5b335f90815260a2602052604090205473ffffffffffffffffffffffffffffffffffffffff161561073c5760405162461bcd60e51b815260206004820152601260248201527f616c72656164792072656769737465726564000000000000000000000000000060448201526064016106c1565b821580159061075957505f83815260a4602052604090205460ff16155b6107a55760405162461bcd60e51b815260206004820152601960248201527f696e76616c69642074656e6465726d696e74207075626b65790000000000000060448201526064016106c1565b81516101001480156107d7575060a3826040516107c29190612a63565b9081526040519081900360200190205460ff16155b6108235760405162461bcd60e51b815260206004820152601260248201527f696e76616c696420626c73207075626b6579000000000000000000000000000060448201526064016106c1565b60985434146108745760405162461bcd60e51b815260206004820152601560248201527f696e76616c6964207374616b696e672076616c7565000000000000000000000060448201526064016106c1565b60405180606001604052806108863390565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083018790526040928301869052335f90815260a28252839020845181547fffffffffffffffffffffffff000000000000000000000000000000000000000016931692909217825583015160018201559082015160028201906109059082612b13565b5090505061091b6109133390565b60a090611cf7565b50600160a38360405161092e9190612a63565b9081526040805191829003602090810190922080549315157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009485161790555f86815260a49092529020805490911660011790557fb9c7babb56df9f2da4a30811a6c778e4e68af88b72712d56cf62c5516e20e1996109aa3390565b84846040516109bb939291906128b1565b60405180910390a1335f90815260a260209081526040918290208251606081018452815473ffffffffffffffffffffffffffffffffffffffff168152600182015492810192909252600281018054610a9f9484019190610a1a90612a7e565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4690612a7e565b8015610a915780601f10610a6857610100808354040283529160200191610a91565b820191905f5260205f20905b815481529060010190602001808311610a7457829003601f168201915b505050505081525050611d1f565b505050565b610aaf60a033611e54565b610afb5760405162461bcd60e51b815260206004820152600b60248201527f6f6e6c79207374616b657200000000000000000000000000000000000000000060448201526064016106c1565b335f90815260a5602052604090205415610b575760405162461bcd60e51b815260206004820152600b60248201527f7769746864726177696e6700000000000000000000000000000000000000000060448201526064016106c1565b609954610b649043612c3e565b335f81815260a56020526040902091909155610b829060a090611e82565b50335f81815260a560209081526040918290205491519182527f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5910160405180910390a26040805160018082528183019092525f916020808301908036833701905050905033815f81518110610bfa57610bfa612c51565b73ffffffffffffffffffffffffffffffffffffffff92909216602092830291909101820152335f908152609e8252604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00908116909155609f909352908190208054909216600117909155517f3f446646c03e618be8238a586960d6d625f35c653cdca1ef59609993e8ed2c8490610c989083906126cc565b60405180910390a1610ca981611ea3565b50565b6060610cb860a0611fa8565b905090565b5f54610100900460ff1615808015610cdb57505f54600160ff909116105b80610cf45750303b158015610cf457505f5460ff166001145b610d665760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106c1565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610dc2575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b73ffffffffffffffffffffffffffffffffffffffff8716610e255760405162461bcd60e51b815260206004820152601760248201527f696e76616c696420726f6c6c757020636f6e747261637400000000000000000060448201526064016106c1565b5f8611610e745760405162461bcd60e51b815260206004820152601560248201527f696e76616c6964207374616b696e672076616c7565000000000000000000000060448201526064016106c1565b5f8511610ec35760405162461bcd60e51b815260206004820152601e60248201527f696e76616c6964207769746864726177616c206c6f636b20626c6f636b73000060448201526064016106c1565b5f8311610f125760405162461bcd60e51b815260206004820152601c60248201527f696e76616c696420676173206c696d697420616464207374616b65720000000060448201526064016106c1565b5f8211610f615760405162461bcd60e51b815260206004820181905260248201527f696e76616c696420676173206c696d69742072656d6f7665207374616b65727360448201526064016106c1565b5f84118015610f71575060648411155b610fe25760405162461bcd60e51b8152602060048201526024808201527f696e76616c6964206368616c6c656e676572207265776172642070657263656e60448201527f746167650000000000000000000000000000000000000000000000000000000060648201526084016106c1565b610fea611fb4565b610ff2612038565b609780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8916179055609a84905560988690556099859055609b839055609c829055604080515f8152602081018590527f0ef80fb82bf5439b8591744c0fde771f5d93dce7a7970b1e9b7828cdc3970e9c910160405180910390a1604080515f8152602081018490527fdd4b37d1f14888147fe4be2cfaedcbf148fd07ececc856d0433241b8b6e4a7f7910160405180910390a1604080515f8152602081018690527fa46de936426e045703b2d34a292a19fde92b329018db8e0da750033876b655ba910160405180910390a18015611158575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b5f61116d60a083611e54565b92915050565b61117b6120bc565b6111845f612123565b565b61118e6120bc565b5f8111801561119f5750609c548114155b6111eb5760405162461bcd60e51b815260206004820152601560248201527f696e76616c6964206e657720676173206c696d6974000000000000000000000060448201526064016106c1565b609c80549082905560408051828152602081018490527fdd4b37d1f14888147fe4be2cfaedcbf148fd07ececc856d0433241b8b6e4a7f791015b60405180910390a15050565b6097545f9073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112b05760405162461bcd60e51b815260206004820152601460248201527f6f6e6c7920726f6c6c757020636f6e747261637400000000000000000000000060448201526064016106c1565b6112b8612199565b5f805b835181101561155f575f60a55f8684815181106112da576112da612c51565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411156113905760a55f85838151811061133757611337612c51565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9055609854826113899190612c3e565b91506114d4565b6113bd8482815181106113a5576113a5612c51565b602002602001015160a0611e5490919063ffffffff16565b156113d2576098546113cf9083612c3e565b91505b6113ff8482815181106113e7576113e7612c51565b602002602001015160a0611e8290919063ffffffff16565b50609e5f85838151811061141557611415612c51565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81549060ff02191690556001609f5f86848151811061147c5761147c612c51565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b60a25f8583815181106114e9576114e9612c51565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f90812080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101829055906115556002830182612538565b50506001016112bb565b505f6064609a54836115719190612c7e565b61157b9190612c95565b90506115878183612ccd565b609d5f8282546115979190612c3e565b90915550506097546115bf9073ffffffffffffffffffffffffffffffffffffffff16826121f2565b7f654f4a61849f1b3ad10abb283d27f02d5fece7b820acc5a3b874713b58748b5a846040516115ee91906126cc565b60405180910390a17f3f446646c03e618be8238a586960d6d625f35c653cdca1ef59609993e8ed2c848460405161162591906126cc565b60405180910390a161163684611ea3565b9150506116436001606555565b919050565b60a26020525f908152604090208054600182015460028301805473ffffffffffffffffffffffffffffffffffffffff90931693919261168690612a7e565b80601f01602080910402602001604051908101604052809291908181526020018280546116b290612a7e565b80156116fd5780601f106116d4576101008083540402835291602001916116fd565b820191905f5260205f20905b8154815290600101906020018083116116e057829003601f168201915b5050505050905083565b61170f612199565b335f90815260a5602052604090205461176a5760405162461bcd60e51b815260206004820152601460248201527f7769746864726177616c206e6f7420657869737400000000000000000000000060448201526064016106c1565b335f90815260a5602052604090205443116117c75760405162461bcd60e51b815260206004820152601160248201527f7769746864726177616c206c6f636b656400000000000000000000000000000060448201526064016106c1565b335f90815260a56020908152604080832083905560a2909152812080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600181018290559061181d6002830182612538565b50506118263390565b60405173ffffffffffffffffffffffffffffffffffffffff838116825291909116907f89309c9b2aeaffbdce717113df9427298b20448c05919bf889e05f8c3094254b9060200160405180910390a2611881816098546121f2565b610ca96001606555565b6118936120bc565b5f811180156118a3575060648111155b80156118b15750609a548114155b6118fd5760405162461bcd60e51b815260206004820152601960248201527f696e76616c6964207265776172642070657263656e746167650000000000000060448201526064016106c1565b609a80549082905560408051828152602081018490527fa46de936426e045703b2d34a292a19fde92b329018db8e0da750033876b655ba9101611225565b6119436120bc565b5f811180156119545750609b548114155b6119a05760405162461bcd60e51b815260206004820152601560248201527f696e76616c6964206e657720676173206c696d6974000000000000000000000060448201526064016106c1565b609b80549082905560408051828152602081018490527f0ef80fb82bf5439b8591744c0fde771f5d93dce7a7970b1e9b7828cdc3970e9c9101611225565b6119e66120bc565b5f5b83811015611b1657609f5f868684818110611a0557611a05612c51565b9050602002016020810190611a1a91906126b3565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f205460ff1615611a905760405162461bcd60e51b815260206004820152600f60248201527f696e2072656d6f766564206c697374000000000000000000000000000000000060448201526064016106c1565b6001609e5f878785818110611aa757611aa7612c51565b9050602002016020810190611abc91906126b3565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556001016119e8565b505f5b81811015611b9e57609e5f848484818110611b3657611b36612c51565b9050602002016020810190611b4b91906126b3565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600101611b19565b507fe375867e538b40218c1b3db2ccceaf875eb073e38b510449e6088c1539ac862284848484604051611bd49493929190612d32565b60405180910390a150505050565b611bea6120bc565b611bf2612199565b609d54611bff82826121f2565b5f609d556040805173ffffffffffffffffffffffffffffffffffffffff84168152602081018390527fa1fefb6c5328a92a416e321ed50997303fe7135fd88c28b0592b21ce42b5cdd9910160405180910390a150610ca96001606555565b611c656120bc565b73ffffffffffffffffffffffffffffffffffffffff8116611cee5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106c1565b610ca981612123565b5f611d188373ffffffffffffffffffffffffffffffffffffffff84166122af565b9392505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b2267a7b7f00000000000000000000000000000000000000000000000000000000000000005f84604051602401611d8e9190612d63565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6d454d5100000000000000000000000000000000000000000000000000000000179052609b5490517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152611e249493929190600401612da7565b5f604051808303815f87803b158015611e3b575f80fd5b505af1158015611e4d573d5f803e3d5ffd5b5050505050565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001830160205260408120541515611d18565b5f611d188373ffffffffffffffffffffffffffffffffffffffff84166122fb565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b2267a7b7f00000000000000000000000000000000000000000000000000000000000000005f84604051602401611f1291906126cc565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be67fcc00000000000000000000000000000000000000000000000000000000179052609c5490517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152611e249493929190600401612da7565b60605f611d18836123de565b5f54610100900460ff166120305760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106c1565b611184612437565b5f54610100900460ff166120b45760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106c1565b6111846124bc565b60335473ffffffffffffffffffffffffffffffffffffffff1633146111845760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106c1565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6002606554036121eb5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106c1565b6002606555565b80156122a4575f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f811461224e576040519150601f19603f3d011682016040523d82523d5f602084013e612253565b606091505b5050905080610a9f5760405162461bcd60e51b815260206004820152601b60248201527f526f6c6c75703a20455448207472616e73666572206661696c6564000000000060448201526064016106c1565b5050565b6001606555565b5f8181526001830160205260408120546122f457508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561116d565b505f61116d565b5f81815260018301602052604081205480156123d5575f61231d600183612ccd565b85549091505f9061233090600190612ccd565b905081811461238f575f865f01828154811061234e5761234e612c51565b905f5260205f200154905080875f01848154811061236e5761236e612c51565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806123a0576123a0612dec565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061116d565b5f91505061116d565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561242b57602002820191905f5260205f20905b815481526020019060010190808311612417575b50505050509050919050565b5f54610100900460ff166124b35760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106c1565b61118433612123565b5f54610100900460ff166122a85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106c1565b50805461254490612a7e565b5f825580601f10612553575050565b601f0160209004905f5260205f2090810190610ca991905b8082111561257e575f815560010161256b565b5090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156125d8576125d8612582565b604052919050565b5f82601f8301126125ef575f80fd5b813567ffffffffffffffff81111561260957612609612582565b61261c6020601f19601f840116016125af565b818152846020838601011115612630575f80fd5b816020850160208301375f918101602001919091529392505050565b5f806040838503121561265d575f80fd5b82359150602083013567ffffffffffffffff81111561267a575f80fd5b612686858286016125e0565b9150509250929050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611643575f80fd5b5f602082840312156126c3575f80fd5b611d1882612690565b602080825282518282018190525f9190848201906040850190845b8181101561271957835173ffffffffffffffffffffffffffffffffffffffff16835292840192918401916001016126e7565b50909695505050505050565b5f805f805f8060c0878903121561273a575f80fd5b61274387612690565b9860208801359850604088013597606081013597506080810135965060a00135945092505050565b5f6020828403121561277b575f80fd5b5035919050565b5f60208284031215612792575f80fd5b813567ffffffffffffffff8111156127a8575f80fd5b6127b4848285016125e0565b949350505050565b5f60208083850312156127cd575f80fd5b823567ffffffffffffffff808211156127e4575f80fd5b818501915085601f8301126127f7575f80fd5b81358181111561280957612809612582565b8060051b915061281a8483016125af565b8181529183018401918481019088841115612833575f80fd5b938501935b838510156128585761284985612690565b82529385019390850190612838565b98975050505050505050565b5f5b8381101561287e578181015183820152602001612866565b50505f910152565b5f815180845261289d816020860160208601612864565b601f01601f19169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201525f6128e56060830184612886565b95945050505050565b5f8083601f8401126128fe575f80fd5b50813567ffffffffffffffff811115612915575f80fd5b6020830191508360208260051b850101111561292f575f80fd5b9250929050565b5f805f805f805f6080888a03121561294c575f80fd5b873567ffffffffffffffff80821115612963575f80fd5b61296f8b838c016128ee565b909950975060208a0135915080821115612987575f80fd5b6129938b838c016128ee565b909750955060408a0135945060608a01359150808211156129b2575f80fd5b818a0191508a601f8301126129c5575f80fd5b8135818111156129d3575f80fd5b8b60208285010111156129e4575f80fd5b60208301945080935050505092959891949750929550565b5f805f8060408587031215612a0f575f80fd5b843567ffffffffffffffff80821115612a26575f80fd5b612a32888389016128ee565b90965094506020870135915080821115612a4a575f80fd5b50612a57878288016128ee565b95989497509550505050565b5f8251612a74818460208701612864565b9190910192915050565b600181811c90821680612a9257607f821691505b602082108103612ac9577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f821115610a9f57805f5260205f20601f840160051c81016020851015612af45750805b601f840160051c820191505b81811015611e4d575f8155600101612b00565b815167ffffffffffffffff811115612b2d57612b2d612582565b612b4181612b3b8454612a7e565b84612acf565b602080601f831160018114612b93575f8415612b5d5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555612c09565b5f85815260208120601f198616915b82811015612bc157888601518255948401946001909101908401612ba2565b5085821015612bfd57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b505060018460011b0185555b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561116d5761116d612c11565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b808202811582820484141761116d5761116d612c11565b5f82612cc8577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b8181038181111561116d5761116d612c11565b8183525f60208085019450825f5b85811015612d275773ffffffffffffffffffffffffffffffffffffffff612d1483612690565b1687529582019590820190600101612cee565b509495945050505050565b604081525f612d45604083018688612ce0565b8281036020840152612d58818587612ce0565b979650505050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff8251166020820152602082015160408201525f60408301516060808401526127b46080840182612886565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152608060408201525f612ddb6080830185612886565b905082606083015295945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea164736f6c6343000818000a diff --git a/bindings/bin/l2staking_deployed.hex b/bindings/bin/l2staking_deployed.hex index a85a68db0..cbb7d4485 100644 --- a/bindings/bin/l2staking_deployed.hex +++ b/bindings/bin/l2staking_deployed.hex @@ -1 +1 @@ -0x608060405234801561000f575f80fd5b506004361061029d575f3560e01c80636d454d51116101715780639168ae72116100d2578063d14db45a11610088578063e10911b11161006e578063e10911b11461062a578063f0261bc214610632578063f2fde38b1461063b575f80fd5b8063d14db45a146105f6578063d557714114610603575f80fd5b8063927ede2d116100b8578063927ede2d14610586578063b5d2e0dc146105ad578063c64814dd146105cc575f80fd5b80639168ae721461054557806391bd43a414610567575f80fd5b8063831cfb58116101275780638da5cb5b1161010d5780638da5cb5b146104fa5780638e21d5fb1461050b5780638eca493a14610532575f80fd5b8063831cfb58146104b057806384d7d1d4146104d7575f80fd5b8063746c8ae111610157578063746c8ae11461048157806376671808146104895780637b05afb514610491575f80fd5b80636d454d5114610466578063715018a614610479575f80fd5b80633385ccc21161021b57806340b5c837116101d1578063459598a2116101b7578063459598a21461042057806368e76346146104335780636bda1b9914610453575f80fd5b806340b5c8371461040557806343352d6114610418575f80fd5b80633c323a1b116102015780633c323a1b146103915780633cb747bf146103a45780633d9353fe146103de575f80fd5b80633385ccc2146103755780633b80242114610388575f80fd5b8063174e31c4116102705780632cc138be116102565780632cc138be146103435780632e787be31461034c57806330158eea14610355575f80fd5b8063174e31c41461031d57806319fac8fd14610330575f80fd5b80630be67fcc146102a15780630eb573af146102b65780630f3b7059146102c957806312a3e94714610306575b5f80fd5b6102b46102af366004613e7f565b61064e565b005b6102b46102c4366004613ebe565b610b91565b6102dc6102d7366004613ee9565b610c75565b604080516001600160a01b0390941684526020840192909252908201526060015b60405180910390f35b61030f609a5481565b6040519081526020016102fd565b6102b461032b366004613ee9565b610cbd565b6102b461033e366004613ebe565b610e31565b61030f60985481565b61030f60995481565b610368610363366004613e7f565b610f4e565b6040516102fd9190613f74565b6102b461038336600461401a565b611177565b61030f609c5481565b6102b461039f366004613ee9565b61184b565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016102fd565b6103c67f000000000000000000000000000000000000000000000000000000000000000081565b6102b4610413366004613ebe565b611eb2565b610368611fd2565b6103c661042e366004613ebe565b6121ee565b61044661044136600461401a565b612216565b6040516102fd9190614035565b6102b4610461366004614081565b612239565b6102b46104743660046140dd565b61271d565b6102b4612a15565b6102b4612a28565b61030f612d18565b61030f61049f36600461401a565b60a06020525f908152604090205481565b6103c67f000000000000000000000000000000000000000000000000000000000000000081565b6104ea6104e536600461401a565b612d48565b60405190151581526020016102fd565b6033546001600160a01b03166103c6565b6103c67f000000000000000000000000000000000000000000000000000000000000000081565b6102b4610540366004613ebe565b612d72565b61055861055336600461401a565b612e82565b6040516102fd93929190614114565b61030f61057536600461401a565b60a16020525f908152604090205481565b6103c67f000000000000000000000000000000000000000000000000000000000000000081565b61030f6105bb36600461401a565b609e6020525f908152604090205481565b61030f6105da366004614144565b60a360209081525f928352604080842090915290825290205481565b6097546104ea9060ff1681565b6103c67f000000000000000000000000000000000000000000000000000000000000000081565b6102b4612f34565b61030f609b5481565b6102b461064936600461401a565b6131d8565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561073657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610707573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061072b919061417b565b6001600160a01b0316145b6107d45760405162461bcd60e51b8152602060048201526044602482018190527f5374616b696e673a2066756e6374696f6e2063616e206f6e6c79206265206361908201527f6c6c65642066726f6d20746865206f74686572207374616b696e6720636f6e7460648201527f7261637400000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b5f805b82811015610b445760975460ff1661083d57609954609e5f86868581811061080157610801614196565b9050602002016020810190610816919061401a565b6001600160a01b03166001600160a01b031681526020019081526020015f2054111561088d565b609b54609e5f86868581811061085557610855614196565b905060200201602081019061086a919061401a565b6001600160a01b03166001600160a01b031681526020019081526020015f205411155b91505f609e5f8686858181106108a5576108a5614196565b90506020020160208101906108ba919061401a565b6001600160a01b03166001600160a01b031681526020019081526020015f20541115610b3c575f6001609e5f8787868181106108f8576108f8614196565b905060200201602081019061090d919061401a565b6001600160a01b03166001600160a01b031681526020019081526020015f205461093791906141f0565b90505b609d54610949906001906141f0565b811015610a1b57609d61095d826001614203565b8154811061096d5761096d614196565b5f91825260209091200154609d80546001600160a01b03909216918390811061099857610998614196565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055506001609e5f609d84815481106109db576109db614196565b5f9182526020808320909101546001600160a01b0316835282019290925260400181208054909190610a0e9084906141f0565b909155505060010161093a565b50609d805480610a2d57610a2d614216565b5f8281526020812082017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055909101909155609e90858584818110610a9c57610a9c614196565b9050602002016020810190610ab1919061401a565b6001600160a01b03166001600160a01b031681526020019081526020015f205f90555f60a15f868685818110610ae957610ae9614196565b9050602002016020810190610afe919061401a565b6001600160a01b03166001600160a01b031681526020019081526020015f20541115610b3c576001609c5f828254610b3691906141f0565b90915550505b6001016107d7565b507f3511bf213f9290ba907e91e12a43e8471251e1879580ae5509292a3514c23f618383604051610b76929190614243565b60405180910390a18015610b8c57610b8c613265565b505050565b610b996133e5565b5f81118015610baa57506099548114155b610c1c5760405162461bcd60e51b815260206004820152602260248201527f696e76616c6964206e65772073657175656e63657220736574206d617820736960448201527f7a6500000000000000000000000000000000000000000000000000000000000060648201526084016107cb565b609980549082905560408051828152602081018490527f98b982a120d9be7d9c68d85a1aed8158d1d52e517175bfb3eb4280692f19b1ed910160405180910390a1609b546099541015610c7157610c71613265565b5050565b60a4602052815f5260405f208181548110610c8e575f80fd5b5f9182526020909120600390910201805460018201546002909201546001600160a01b03909116935090915083565b610cc561343f565b6001600160a01b038216610d7b576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016635cf20c7b336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602481018490526044015f604051808303815f87803b158015610d60575f80fd5b505af1158015610d72573d5f803e3d5ffd5b50505050610e27565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663996cba6883336040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604481018490526064015f604051808303815f87803b158015610e10575f80fd5b505af1158015610e22573d5f803e3d5ffd5b505050505b610c716001606555565b335f908152609e6020526040902054610e8c5760405162461bcd60e51b815260206004820152601360248201527f6f6e6c79207374616b657220616c6c6f7765640000000000000000000000000060448201526064016107cb565b6014811115610edd5760405162461bcd60e51b815260206004820152601260248201527f696e76616c696420636f6d6d697373696f6e000000000000000000000000000060448201526064016107cb565b335f90815260a06020526040812082905560975460ff1615610f0f57610f01612d18565b610f0c906001614203565b90505b604080518381526020810183905233917f6e500db30ce535d38852e318f333e9be41a3fec6c65d234ebb06203c896db9a5910160405180910390a25050565b60605f8267ffffffffffffffff811115610f6a57610f6a614290565b604051908082528060200260200182016040528015610fb657816020015b60408051606080820183525f808352602083015291810191909152815260200190600190039081610f885790505b5090505f5b8381101561116d576040518060600160405280609f5f888886818110610fe357610fe3614196565b9050602002016020810190610ff8919061401a565b6001600160a01b03908116825260208083019390935260409091015f908120549091168352910190609f9088888681811061103557611035614196565b905060200201602081019061104a919061401a565b6001600160a01b03166001600160a01b031681526020019081526020015f20600101548152602001609f5f88888681811061108757611087614196565b905060200201602081019061109c919061401a565b6001600160a01b03166001600160a01b031681526020019081526020015f2060020180546110c9906142bd565b80601f01602080910402602001604051908101604052809291908181526020018280546110f5906142bd565b80156111405780601f1061111757610100808354040283529160200191611140565b820191905f5260205f20905b81548152906001019060200180831161112357829003601f168201915b505050505081525082828151811061115a5761115a614196565b6020908102919091010152600101610fbb565b5090505b92915050565b61117f61343f565b611189338261349f565b156111d65760405162461bcd60e51b815260206004820152601660248201527f756e64656c65676174696f6e20756e636c61696d65640000000000000000000060448201526064016107cb565b6001600160a01b0381165f90815260a3602090815260408083203384529091529020546112455760405162461bcd60e51b815260206004820152601660248201527f7374616b696e6720616d6f756e74206973207a65726f0000000000000000000060448201526064016107cb565b6001600160a01b0381165f908152609e602052604081205460975490159190819060ff161561129f57611276612d18565b611281906001614203565b91508261129a57609a546112959083614203565b61129c565b815b90505b604080516060810182526001600160a01b038681168083525f81815260a36020908152858220338084528183528784208054848901908152888a018b815283875260a486528a87208054600180820183559189528789208c5160039092020180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909b16178a558251908a015551600290980197909755908452908252829055925191815260a190925292812080549293929091906113629084906141f0565b90915550506001600160a01b0385165f90815260a2602052604090206113889033613528565b506001600160a01b0385165f908152609e6020526040902054841580156113b1575060975460ff165b80156113be5750609c5481105b15611635576001600160a01b0386165f908152609e60205260408120546113e7906001906141f0565b90505b6001609c546113f991906141f0565b8110156116335760a15f609d838154811061141657611416614196565b5f9182526020808320909101546001600160a01b031683528201929092526040018120549060a190609d61144b856001614203565b8154811061145b5761145b614196565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054111561162b575f609d828154811061149957611499614196565b5f918252602090912001546001600160a01b03169050609d6114bc836001614203565b815481106114cc576114cc614196565b5f91825260209091200154609d80546001600160a01b0390921691849081106114f7576114f7614196565b5f91825260209091200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905580609d611545846001614203565b8154811061155557611555614196565b5f91825260209091200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556115a0826001614203565b609e5f609d85815481106115b6576115b6614196565b5f9182526020808320909101546001600160a01b031683528201929092526040019020556115e5826002614203565b609e5f609d6115f5866001614203565b8154811061160557611605614196565b5f9182526020808320909101546001600160a01b03168352820192909252604001902055505b6001016113ea565b505b8415801561165857506001600160a01b0386165f90815260a16020526040902054155b15611675576001609c5f82825461166f91906141f0565b90915550505b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663ad8e122387338786602001516116d760a25f8e6001600160a01b03166001600160a01b031681526020019081526020015f20613543565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1681526001600160a01b03958616600482015294909316602485015260448401919091526064830152608482015260a4015f604051808303815f87803b158015611748575f80fd5b505af115801561175a573d5f803e3d5ffd5b505050506117653390565b6001600160a01b0316866001600160a01b03167f92039db29d8c0a1aa1433fe109c69488c8c5e51b23c9de7d303ad80c1fef778c846020015187876040516117c0939291909283526020830191909152604082015260600190565b60405180910390a3841580156117d8575060975460ff165b80156117e65750609b548111155b801561182c5750609b546001600160a01b0387165f908152609e6020526040902054118061182c5750609c546001600160a01b0387165f908152609e6020526040902054115b1561183957611839613265565b50505050506118486001606555565b50565b6001600160a01b0382165f908152609e602052604090205482906118b15760405162461bcd60e51b815260206004820152600a60248201527f6e6f74207374616b65720000000000000000000000000000000000000000000060448201526064016107cb565b6118b961343f565b5f82116119085760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964207374616b6520616d6f756e7400000000000000000000000060448201526064016107cb565b611912338461349f565b1561195f5760405162461bcd60e51b815260206004820152601660248201527f756e64656c65676174696f6e20756e636c61696d65640000000000000000000060448201526064016107cb565b6001600160a01b0383165f90815260a1602052604081208054849290611986908490614203565b90915550506001600160a01b0383165f90815260a360209081526040808320338452909152812080548492906119bd908490614203565b90915550506001600160a01b0383165f90815260a2602052604090206119e3903361354c565b506001600160a01b0383165f90815260a16020526040902054829003611a1b576001609c5f828254611a159190614203565b90915550505b6001600160a01b0383165f908152609e602052604090205460975460ff168015611a455750600181115b15611c96575f611a566001836141f0565b90505b8015611c945760a15f609d611a6f6001856141f0565b81548110611a7f57611a7f614196565b905f5260205f20015f9054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020015f205460a15f609d8481548110611ad057611ad0614196565b5f9182526020808320909101546001600160a01b031683528201929092526040019020541115611c82575f609d611b086001846141f0565b81548110611b1857611b18614196565b5f91825260209091200154609d80546001600160a01b0390921692509083908110611b4557611b45614196565b5f918252602090912001546001600160a01b0316609d611b666001856141f0565b81548110611b7657611b76614196565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555080609d8381548110611bb557611bb5614196565b5f918252602082200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0393909316929092179091558290609e90609d611c076001856141f0565b81548110611c1757611c17614196565b5f9182526020808320909101546001600160a01b03168352820192909252604001902055611c46826001614203565b609e5f609d8581548110611c5c57611c5c614196565b5f9182526020808320909101546001600160a01b03168352820192909252604001902055505b80611c8c81614308565b915050611a59565b505b6097545f9060ff16611ca8575f611cbb565b611cb0612d18565b611cbb906001614203565b6001600160a01b0386165f81815260a3602090815260408083203380855290835292819020548151908152918201859052805194955091937f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04929181900390910190a36001600160a01b038581165f81815260a360209081526040808320338085529083528184205494845260a183528184205460a290935292207f00000000000000000000000000000000000000000000000000000000000000009094169363e16bcc32938a93928792611d8f90613543565b6001600160a01b038d165f90815260a3602052604081208d91336001600160a01b039081168252602082019290925260409081015f205490517fffffffff0000000000000000000000000000000000000000000000000000000060e08c901b16815298821660048a01529616602488015260448701949094526064860192909252608485015260a48401521460c482015260e4015f604051808303815f87803b158015611e3a575f80fd5b505af1158015611e4c573d5f803e3d5ffd5b50505050611e61611e5a3390565b3086613560565b60975460ff168015611e745750609b5482115b8015611e9957506099546001600160a01b0386165f908152609e602052604090205411155b15611ea657611ea6613265565b5050610b8c6001606555565b611eba6133e5565b60975460ff16158015611ece575042609854115b611f1a5760405162461bcd60e51b815260206004820152601660248201527f72657761726420616c726561647920737461727465640000000000000000000060448201526064016107cb565b4281118015611f335750611f316201518082614369565b155b8015611f4157506098548114155b611f8d5760405162461bcd60e51b815260206004820152601960248201527f696e76616c6964207265776172642073746172742074696d650000000000000060448201526064016107cb565b609880549082905560408051828152602081018490527f91c38708087fb4ba51bd0e6a106cc1fbaf340479a2e81d18f2341e8c78f97555910160405180910390a15050565b609d546060905f9067ffffffffffffffff811115611ff257611ff2614290565b60405190808252806020026020018201604052801561203e57816020015b60408051606080820183525f8083526020830152918101919091528152602001906001900390816120105790505b5090505f5b609d548110156121e8576040518060600160405280609f5f609d858154811061206e5761206e614196565b5f9182526020808320909101546001600160a01b0390811684528382019490945260409092018120549092168352609d80549390910192609f929190869081106120ba576120ba614196565b905f5260205f20015f9054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020015f20600101548152602001609f5f609d858154811061211357612113614196565b5f9182526020808320909101546001600160a01b0316835282019290925260400190206002018054612144906142bd565b80601f0160208091040260200160405190810160405280929190818152602001828054612170906142bd565b80156121bb5780601f10612192576101008083540402835291602001916121bb565b820191905f5260205f20905b81548152906001019060200180831161219e57829003601f168201915b50505050508152508282815181106121d5576121d5614196565b6020908102919091010152600101612043565b50919050565b609d81815481106121fd575f80fd5b5f918252602090912001546001600160a01b0316905081565b6001600160a01b0381165f90815260a260205260409020606090611171906137cd565b5f54610100900460ff161580801561225757505f54600160ff909116105b806122705750303b15801561227057505f5460ff166001145b6122e25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107cb565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561233e575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b5f86116123b35760405162461bcd60e51b815260206004820152602260248201527f73657175656e6365727353697a65206d7573742067726561746572207468616e60448201527f203000000000000000000000000000000000000000000000000000000000000060648201526084016107cb565b5f85116124025760405162461bcd60e51b815260206004820152601c60248201527f696e76616c696420756e64656c65676174654c6f636b45706f6368730000000060448201526064016107cb565b428411801561241b57506124196201518085614369565b155b6124675760405162461bcd60e51b815260206004820152601960248201527f696e76616c6964207265776172642073746172742074696d650000000000000060448201526064016107cb565b816124b45760405162461bcd60e51b815260206004820152601760248201527f696e76616c696420696e697469616c207374616b65727300000000000000000060448201526064016107cb565b6124bc6137d9565b6124c461385d565b6099869055609a8590556098849055609b8290555f5b609b54811015612640578383828181106124f6576124f6614196565b9050602002810190612508919061437c565b609f5f86868581811061251d5761251d614196565b905060200281019061252f919061437c565b61253d90602081019061401a565b6001600160a01b0316815260208101919091526040015f2061255f828261445d565b905050609d84848381811061257657612576614196565b9050602002810190612588919061437c565b61259690602081019061401a565b8154600180820184555f93845260209093200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556125ea908290614203565b609e5f8686858181106125ff576125ff614196565b9050602002810190612611919061437c565b61261f90602081019061401a565b6001600160a01b0316815260208101919091526040015f20556001016124da565b50604080515f8152602081018890527f98b982a120d9be7d9c68d85a1aed8158d1d52e517175bfb3eb4280692f19b1ed910160405180910390a1604080515f8152602081018690527f91c38708087fb4ba51bd0e6a106cc1fbaf340479a2e81d18f2341e8c78f97555910160405180910390a18015612715575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561280557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127fa919061417b565b6001600160a01b0316145b61289e5760405162461bcd60e51b8152602060048201526044602482018190527f5374616b696e673a2066756e6374696f6e2063616e206f6e6c79206265206361908201527f6c6c65642066726f6d20746865206f74686572207374616b696e6720636f6e7460648201527f7261637400000000000000000000000000000000000000000000000000000000608482015260a4016107cb565b609e5f6128ae602084018461401a565b6001600160a01b03166001600160a01b031681526020019081526020015f20545f0361295b57609d6128e3602083018361401a565b81546001810183555f928352602080842090910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039390931692909217909155609d5491609e916129419085018561401a565b6001600160a01b0316815260208101919091526040015f20555b80609f5f61296c602084018461401a565b6001600160a01b0316815260208101919091526040015f2061298e828261445d565b5061299e9050602082018261401a565b6001600160a01b03167f058ecb29c230cd5df283c89e996187ed521393fe4546cd1b097921c4b2de293d60208301356129da60408501856143b8565b6040516129e99392919061460d565b60405180910390a260975460ff16158015612a085750609954609d5411155b1561184857611848613265565b612a1d6133e5565b612a265f6138e1565b565b612a306133e5565b609854421015612aa75760405162461bcd60e51b8152602060048201526024808201527f63616e2774207374617274206265666f7265207265776172642073746172742060448201527f74696d650000000000000000000000000000000000000000000000000000000060648201526084016107cb565b5f609c5411612af85760405162461bcd60e51b815260206004820152600e60248201527f6e6f6e652063616e64696461746500000000000000000000000000000000000060448201526064016107cb565b609780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091555b609d54811015612cb5575f5b81811015612cac5760a15f609d8381548110612b5157612b51614196565b905f5260205f20015f9054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020015f205460a15f609d8581548110612ba257612ba2614196565b5f9182526020808320909101546001600160a01b031683528201929092526040019020541115612ca4575f609d8281548110612be057612be0614196565b5f91825260209091200154609d80546001600160a01b0390921692509084908110612c0d57612c0d614196565b5f91825260209091200154609d80546001600160a01b039092169184908110612c3857612c38614196565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555080609d8481548110612c7757612c77614196565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550505b600101612b33565b50600101612b27565b505f5b609d54811015612d0f57612ccd816001614203565b609e5f609d8481548110612ce357612ce3614196565b5f9182526020808320909101546001600160a01b03168352820192909252604001902055600101612cb8565b50612a26613265565b5f6098544211612d2757505f90565b6201518060985442612d3991906141f0565b612d439190614660565b905090565b6001600160a01b0381165f90815260a3602090815260408083203384529091528120541515611171565b335f908152609e6020526040902054612dcd5760405162461bcd60e51b815260206004820152601360248201527f6f6e6c79207374616b657220616c6c6f7765640000000000000000000000000060448201526064016107cb565b612dd561343f565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166341302560336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602481018490526044015f604051808303815f87803b158015612e62575f80fd5b505af1158015612e74573d5f803e3d5ffd5b505050506118486001606555565b609f6020525f90815260409020805460018201546002830180546001600160a01b03909316939192612eb3906142bd565b80601f0160208091040260200160405190810160405280929190818152602001828054612edf906142bd565b8015612f2a5780601f10612f0157610100808354040283529160200191612f2a565b820191905f5260205f20905b815481529060010190602001808311612f0d57829003601f168201915b5050505050905083565b612f3c61343f565b5f805b335f90815260a4602052604090205481101561313e57612f5d612d18565b335f90815260a460205260409020805483908110612f7d57612f7d614196565b905f5260205f209060030201600201541161313657335f90815260a460205260409020805482908110612fb257612fb2614196565b905f5260205f2090600302016001015482612fcd9190614203565b335f90815260a46020526040902054909250600110156130b357335f90815260a4602052604090208054613003906001906141f0565b8154811061301357613013614196565b905f5260205f20906003020160a45f6130293390565b6001600160a01b03166001600160a01b031681526020019081526020015f20828154811061305957613059614196565b5f9182526020909120825460039092020180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091178155600180830154908201556002918201549101555b335f90815260a4602052604090208054806130d0576130d0614216565b5f8281526020812060037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019283020180547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600181018290556002015590555b600101612f3f565b505f811161318e5760405162461bcd60e51b815260206004820152601760248201527f6e6f204d6f72706820746f6b656e20746f20636c61696d00000000000000000060448201526064016107cb565b613198338261394a565b60405181815233907fcc3089abc79631b3c0c81414a72e237c08559073a970cf474e36ae965e382fb39060200160405180910390a250612a266001606555565b6131e06133e5565b6001600160a01b03811661325c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107cb565b611848816138e1565b60995460975460ff161561328957609954609c5410156132845750609c545b61329a565b609954609d54101561329a5750609d545b5f8167ffffffffffffffff8111156132b4576132b4614290565b6040519080825280602002602001820160405280156132dd578160200160208202803683370190505b5090505f5b8281101561334a57609d81815481106132fd576132fd614196565b905f5260205f20015f9054906101000a90046001600160a01b031682828151811061332a5761332a614196565b6001600160a01b03909216602092830291909101909101526001016132e2565b506040517f9b8201a40000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639b8201a4906133b0908490600401614035565b5f604051808303815f87803b1580156133c7575f80fd5b505af11580156133d9573d5f803e3d5ffd5b50509151609b55505050565b6033546001600160a01b03163314612a265760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107cb565b6002606554036134915760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016107cb565b6002606555565b6001606555565b5f805b6001600160a01b0384165f90815260a4602052604090205481101561351f576001600160a01b038481165f90815260a460205260409020805491851691839081106134ef576134ef614196565b5f9182526020909120600390910201546001600160a01b031603613517576001915050611171565b6001016134a2565b505f9392505050565b5f61353c836001600160a01b038416613bae565b9392505050565b5f611171825490565b5f61353c836001600160a01b038416613c91565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa1580156135e1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136059190614673565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301528581166024830152604482018590529192507f0000000000000000000000000000000000000000000000000000000000000000909116906323b872dd906064016020604051808303815f875af1158015613697573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136bb919061468a565b506040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa15801561373d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137619190614673565b90505f8311801561377a57508261377883836141f0565b145b6137c65760405162461bcd60e51b815260206004820152601b60248201527f6d6f72706820746f6b656e207472616e73666572206661696c6564000000000060448201526064016107cb565b5050505050565b60605f61353c83613cdd565b5f54610100900460ff166138555760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107cb565b612a26613d36565b5f54610100900460ff166138d95760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107cb565b612a26613dbb565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa1580156139cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139ef9190614673565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303815f875af1158015613a79573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a9d919061468a565b506040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015613b1f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613b439190614673565b90505f83118015613b5c575082613b5a83836141f0565b145b613ba85760405162461bcd60e51b815260206004820152601b60248201527f6d6f72706820746f6b656e207472616e73666572206661696c6564000000000060448201526064016107cb565b50505050565b5f8181526001830160205260408120548015613c88575f613bd06001836141f0565b85549091505f90613be3906001906141f0565b9050818114613c42575f865f018281548110613c0157613c01614196565b905f5260205f200154905080875f018481548110613c2157613c21614196565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080613c5357613c53614216565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050611171565b5f915050611171565b5f818152600183016020526040812054613cd657508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155611171565b505f611171565b6060815f01805480602002602001604051908101604052809291908181526020018280548015613d2a57602002820191905f5260205f20905b815481526020019060010190808311613d16575b50505050509050919050565b5f54610100900460ff16613db25760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107cb565b612a26336138e1565b5f54610100900460ff166134985760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107cb565b5f8083601f840112613e47575f80fd5b50813567ffffffffffffffff811115613e5e575f80fd5b6020830191508360208260051b8501011115613e78575f80fd5b9250929050565b5f8060208385031215613e90575f80fd5b823567ffffffffffffffff811115613ea6575f80fd5b613eb285828601613e37565b90969095509350505050565b5f60208284031215613ece575f80fd5b5035919050565b6001600160a01b0381168114611848575f80fd5b5f8060408385031215613efa575f80fd5b8235613f0581613ed5565b946020939093013593505050565b5f81518084525f5b81811015613f3757602081850181015186830182015201613f1b565b505f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b8381101561400c578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018552815180516001600160a01b0316845287810151888501528601516060878501819052613ff881860183613f13565b968901969450505090860190600101613f9b565b509098975050505050505050565b5f6020828403121561402a575f80fd5b813561353c81613ed5565b602080825282518282018190525f9190848201906040850190845b818110156140755783516001600160a01b031683529284019291840191600101614050565b50909695505050505050565b5f805f805f60808688031215614095575f80fd5b853594506020860135935060408601359250606086013567ffffffffffffffff8111156140c0575f80fd5b6140cc88828901613e37565b969995985093965092949392505050565b5f602082840312156140ed575f80fd5b813567ffffffffffffffff811115614103575f80fd5b82016060818503121561353c575f80fd5b6001600160a01b0384168152826020820152606060408201525f61413b6060830184613f13565b95945050505050565b5f8060408385031215614155575f80fd5b823561416081613ed5565b9150602083013561417081613ed5565b809150509250929050565b5f6020828403121561418b575f80fd5b815161353c81613ed5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b81810381811115611171576111716141c3565b80820180821115611171576111716141c3565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b60208082528181018390525f908460408401835b8681101561428557823561426a81613ed5565b6001600160a01b031682529183019190830190600101614257565b509695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b600181811c908216806142d157607f821691505b6020821081036121e8577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f81614316576143166141c3565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f826143775761437761433c565b500690565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181126143ae575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126143eb575f80fd5b83018035915067ffffffffffffffff821115614405575f80fd5b602001915036819003821315613e78575f80fd5b601f821115610b8c57805f5260205f20601f840160051c8101602085101561443e5750805b601f840160051c820191505b818110156137c6575f815560010161444a565b813561446881613ed5565b6001600160a01b0381167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550600160208084013560018401556002830160408501357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18636030181126144df575f80fd5b8501803567ffffffffffffffff8111156144f7575f80fd5b8036038483011315614507575f80fd5b61451b8161451585546142bd565b85614419565b5f601f82116001811461456d575f831561453757508382018601355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178555614602565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156145b95786850189013582559388019390890190880161459a565b50848210156145f6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88660031b161c198885880101351681555b505060018360011b0185555b505050505050505050565b83815260406020820152816040820152818360608301375f818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b5f8261466e5761466e61433c565b500490565b5f60208284031215614683575f80fd5b5051919050565b5f6020828403121561469a575f80fd5b8151801515811461353c575f80fdfea164736f6c6343000818000a +0x608060405234801561000f575f80fd5b506004361061029d575f3560e01c80636d454d51116101715780639168ae72116100d2578063c64814dd11610088578063e10911b11161006e578063e10911b11461062a578063f0261bc214610632578063f2fde38b1461063b575f80fd5b8063c64814dd146105d9578063d557714114610603575f80fd5b8063927ede2d116100b8578063927ede2d1461058657806396ab994d146105ad578063b5d2e0dc146105ba575f80fd5b80639168ae721461054557806391bd43a414610567575f80fd5b8063831cfb58116101275780638da5cb5b1161010d5780638da5cb5b146104fa5780638e21d5fb1461050b5780638eca493a14610532575f80fd5b8063831cfb58146104b057806384d7d1d4146104d7575f80fd5b8063746c8ae111610157578063746c8ae11461048157806376671808146104895780637b05afb514610491575f80fd5b80636d454d5114610466578063715018a614610479575f80fd5b80633385ccc21161021b57806340b5c837116101d1578063459598a2116101b7578063459598a21461042057806368e76346146104335780636bda1b9914610453575f80fd5b806340b5c8371461040557806343352d6114610418575f80fd5b80633c323a1b116102015780633c323a1b146103915780633cb747bf146103a45780633d9353fe146103de575f80fd5b80633385ccc2146103755780633b80242114610388575f80fd5b8063174e31c4116102705780632cc138be116102565780632cc138be146103435780632e787be31461034c57806330158eea14610355575f80fd5b8063174e31c41461031d57806319fac8fd14610330575f80fd5b80630be67fcc146102a15780630eb573af146102b65780630f3b7059146102c957806312a3e94714610306575b5f80fd5b6102b46102af366004613e8d565b61064e565b005b6102b46102c4366004613ecc565b610b38565b6102dc6102d7366004613ef7565b610c1c565b604080516001600160a01b0390941684526020840192909252908201526060015b60405180910390f35b61030f609a5481565b6040519081526020016102fd565b6102b461032b366004613ef7565b610c64565b6102b461033e366004613ecc565b610dd8565b61030f60985481565b61030f60995481565b610368610363366004613e8d565b610efa565b6040516102fd9190613f82565b6102b4610383366004614028565b611123565b61030f609c5481565b6102b461039f366004613ef7565b611805565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016102fd565b6103c67f000000000000000000000000000000000000000000000000000000000000000081565b6102b4610413366004613ecc565b611e6c565b610368611f8c565b6103c661042e366004613ecc565b6121a8565b610446610441366004614028565b6121d0565b6040516102fd9190614043565b6102b461046136600461408f565b6121f3565b6102b46104743660046140eb565b6126d7565b6102b46129cf565b6102b46129e2565b61030f612cd2565b61030f61049f366004614028565b60a06020525f908152604090205481565b6103c67f000000000000000000000000000000000000000000000000000000000000000081565b6104ea6104e5366004614028565b612d46565b60405190151581526020016102fd565b6033546001600160a01b03166103c6565b6103c67f000000000000000000000000000000000000000000000000000000000000000081565b6102b4610540366004613ecc565b612d70565b610558610553366004614028565b612e80565b6040516102fd93929190614122565b61030f610575366004614028565b60a16020525f908152604090205481565b6103c67f000000000000000000000000000000000000000000000000000000000000000081565b6097546104ea9060ff1681565b61030f6105c8366004614028565b609e6020525f908152604090205481565b61030f6105e7366004614152565b60a360209081525f928352604080842090915290825290205481565b6103c67f000000000000000000000000000000000000000000000000000000000000000081565b6102b4612f32565b61030f609b5481565b6102b4610649366004614028565b6131e6565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561073657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610707573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061072b9190614189565b6001600160a01b0316145b6107d45760405162461bcd60e51b8152602060048201526044602482018190527f5374616b696e673a2066756e6374696f6e2063616e206f6e6c79206265206361908201527f6c6c65642066726f6d20746865206f74686572207374616b696e6720636f6e7460648201527f7261637400000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b5f805b82811015610aeb57609b54609e5f8686858181106107f7576107f76141a4565b905060200201602081019061080c9190614028565b6001600160a01b03166001600160a01b031681526020019081526020015f20541161083657600191505b5f609e5f86868581811061084c5761084c6141a4565b90506020020160208101906108619190614028565b6001600160a01b03166001600160a01b031681526020019081526020015f20541115610ae3575f6001609e5f87878681811061089f5761089f6141a4565b90506020020160208101906108b49190614028565b6001600160a01b03166001600160a01b031681526020019081526020015f20546108de91906141fe565b90505b609d546108f0906001906141fe565b8110156109c257609d610904826001614211565b81548110610914576109146141a4565b5f91825260209091200154609d80546001600160a01b03909216918390811061093f5761093f6141a4565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055506001609e5f609d8481548110610982576109826141a4565b5f9182526020808320909101546001600160a01b03168352820192909252604001812080549091906109b59084906141fe565b90915550506001016108e1565b50609d8054806109d4576109d4614224565b5f8281526020812082017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055909101909155609e90858584818110610a4357610a436141a4565b9050602002016020810190610a589190614028565b6001600160a01b03166001600160a01b031681526020019081526020015f205f90555f60a15f868685818110610a9057610a906141a4565b9050602002016020810190610aa59190614028565b6001600160a01b03166001600160a01b031681526020019081526020015f20541115610ae3576001609c5f828254610add91906141fe565b90915550505b6001016107d7565b507f3511bf213f9290ba907e91e12a43e8471251e1879580ae5509292a3514c23f618383604051610b1d929190614251565b60405180910390a18015610b3357610b33613273565b505050565b610b406133f3565b5f81118015610b5157506099548114155b610bc35760405162461bcd60e51b815260206004820152602260248201527f696e76616c6964206e65772073657175656e63657220736574206d617820736960448201527f7a6500000000000000000000000000000000000000000000000000000000000060648201526084016107cb565b609980549082905560408051828152602081018490527f98b982a120d9be7d9c68d85a1aed8158d1d52e517175bfb3eb4280692f19b1ed910160405180910390a1609b546099541015610c1857610c18613273565b5050565b60a4602052815f5260405f208181548110610c35575f80fd5b5f9182526020909120600390910201805460018201546002909201546001600160a01b03909116935090915083565b610c6c61344d565b6001600160a01b038216610d22576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016635cf20c7b336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602481018490526044015f604051808303815f87803b158015610d07575f80fd5b505af1158015610d19573d5f803e3d5ffd5b50505050610dce565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663996cba6883336040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604481018490526064015f604051808303815f87803b158015610db7575f80fd5b505af1158015610dc9573d5f803e3d5ffd5b505050505b610c186001606555565b335f908152609e6020526040902054610e335760405162461bcd60e51b815260206004820152601360248201527f6f6e6c79207374616b657220616c6c6f7765640000000000000000000000000060448201526064016107cb565b6014811115610e845760405162461bcd60e51b815260206004820152601260248201527f696e76616c696420636f6d6d697373696f6e000000000000000000000000000060448201526064016107cb565b335f90815260a06020526040812082905560975460ff16610ea5575f610eb8565b610ead612cd2565b610eb8906001614211565b604080518481526020810183905291925033917f6e500db30ce535d38852e318f333e9be41a3fec6c65d234ebb06203c896db9a5910160405180910390a25050565b60605f8267ffffffffffffffff811115610f1657610f1661429e565b604051908082528060200260200182016040528015610f6257816020015b60408051606080820183525f808352602083015291810191909152815260200190600190039081610f345790505b5090505f5b83811015611119576040518060600160405280609f5f888886818110610f8f57610f8f6141a4565b9050602002016020810190610fa49190614028565b6001600160a01b03908116825260208083019390935260409091015f908120549091168352910190609f90888886818110610fe157610fe16141a4565b9050602002016020810190610ff69190614028565b6001600160a01b03166001600160a01b031681526020019081526020015f20600101548152602001609f5f888886818110611033576110336141a4565b90506020020160208101906110489190614028565b6001600160a01b03166001600160a01b031681526020019081526020015f206002018054611075906142cb565b80601f01602080910402602001604051908101604052809291908181526020018280546110a1906142cb565b80156110ec5780601f106110c3576101008083540402835291602001916110ec565b820191905f5260205f20905b8154815290600101906020018083116110cf57829003601f168201915b5050505050815250828281518110611106576111066141a4565b6020908102919091010152600101610f67565b5090505b92915050565b61112b61344d565b61113533826134ad565b156111825760405162461bcd60e51b815260206004820152601660248201527f756e64656c65676174696f6e20756e636c61696d65640000000000000000000060448201526064016107cb565b6001600160a01b0381165f90815260a3602090815260408083203384529091529020546111f15760405162461bcd60e51b815260206004820152601660248201527f7374616b696e6720616d6f756e74206973207a65726f0000000000000000000060448201526064016107cb565b6001600160a01b0381165f908152609e60205260408120546097549015919060ff1661121d575f611230565b611225612cd2565b611230906001614211565b6097549091505f9060ff168015611245575082155b61124f578161125c565b609a5461125c9083614211565b604080516060810182526001600160a01b038781168083525f81815260a36020908152858220338084528183528784208054848901908152888a018b815283875260a486528a87208054600180820183559189528789208c5160039092020180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909b16178a558251908a015551600290980197909755908452908252829055925191815260a19092529281208054949550919361131e9084906141fe565b90915550506001600160a01b0385165f90815260a2602052604090206113449033613536565b506001600160a01b0385165f908152609e60205260409020548415801561136d575060975460ff165b801561137a5750609c5481105b156115f1576001600160a01b0386165f908152609e60205260408120546113a3906001906141fe565b90505b6001609c546113b591906141fe565b8110156115ef5760a15f609d83815481106113d2576113d26141a4565b5f9182526020808320909101546001600160a01b031683528201929092526040018120549060a190609d611407856001614211565b81548110611417576114176141a4565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205411156115e7575f609d8281548110611455576114556141a4565b5f918252602090912001546001600160a01b03169050609d611478836001614211565b81548110611488576114886141a4565b5f91825260209091200154609d80546001600160a01b0390921691849081106114b3576114b36141a4565b5f91825260209091200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905580609d611501846001614211565b81548110611511576115116141a4565b5f91825260209091200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905561155c826001614211565b609e5f609d8581548110611572576115726141a4565b5f9182526020808320909101546001600160a01b031683528201929092526040019020556115a1826002614211565b609e5f609d6115b1866001614211565b815481106115c1576115c16141a4565b5f9182526020808320909101546001600160a01b03168352820192909252604001902055505b6001016113a6565b505b8415801561161457506001600160a01b0386165f90815260a16020526040902054155b15611631576001609c5f82825461162b91906141fe565b90915550505b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663ad8e122387336001600160a01b038a165f90815260a1602090815260408083205460a290925290912089919061169190613551565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1681526001600160a01b03958616600482015294909316602485015260448401919091526064830152608482015260a4015f604051808303815f87803b158015611702575f80fd5b505af1158015611714573d5f803e3d5ffd5b5050505061171f3390565b6001600160a01b0316866001600160a01b03167f92039db29d8c0a1aa1433fe109c69488c8c5e51b23c9de7d303ad80c1fef778c8460200151878760405161177a939291909283526020830191909152604082015260600190565b60405180910390a384158015611792575060975460ff165b80156117a05750609b548111155b80156117e65750609b546001600160a01b0387165f908152609e602052604090205411806117e65750609c546001600160a01b0387165f908152609e6020526040902054115b156117f3576117f3613273565b50505050506118026001606555565b50565b6001600160a01b0382165f908152609e6020526040902054829061186b5760405162461bcd60e51b815260206004820152600a60248201527f6e6f74207374616b65720000000000000000000000000000000000000000000060448201526064016107cb565b61187361344d565b5f82116118c25760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964207374616b6520616d6f756e7400000000000000000000000060448201526064016107cb565b6118cc33846134ad565b156119195760405162461bcd60e51b815260206004820152601660248201527f756e64656c65676174696f6e20756e636c61696d65640000000000000000000060448201526064016107cb565b6001600160a01b0383165f90815260a1602052604081208054849290611940908490614211565b90915550506001600160a01b0383165f90815260a36020908152604080832033845290915281208054849290611977908490614211565b90915550506001600160a01b0383165f90815260a26020526040902061199d903361355a565b506001600160a01b0383165f90815260a160205260409020548290036119d5576001609c5f8282546119cf9190614211565b90915550505b6001600160a01b0383165f908152609e602052604090205460975460ff1680156119ff5750600181115b15611c50575f611a106001836141fe565b90505b8015611c4e5760a15f609d611a296001856141fe565b81548110611a3957611a396141a4565b905f5260205f20015f9054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020015f205460a15f609d8481548110611a8a57611a8a6141a4565b5f9182526020808320909101546001600160a01b031683528201929092526040019020541115611c3c575f609d611ac26001846141fe565b81548110611ad257611ad26141a4565b5f91825260209091200154609d80546001600160a01b0390921692509083908110611aff57611aff6141a4565b5f918252602090912001546001600160a01b0316609d611b206001856141fe565b81548110611b3057611b306141a4565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555080609d8381548110611b6f57611b6f6141a4565b5f918252602082200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0393909316929092179091558290609e90609d611bc16001856141fe565b81548110611bd157611bd16141a4565b5f9182526020808320909101546001600160a01b03168352820192909252604001902055611c00826001614211565b609e5f609d8581548110611c1657611c166141a4565b5f9182526020808320909101546001600160a01b03168352820192909252604001902055505b80611c4681614316565b915050611a13565b505b6097545f9060ff16611c62575f611c75565b611c6a612cd2565b611c75906001614211565b6001600160a01b0386165f81815260a3602090815260408083203380855290835292819020548151908152918201859052805194955091937f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04929181900390910190a36001600160a01b038581165f81815260a360209081526040808320338085529083528184205494845260a183528184205460a290935292207f00000000000000000000000000000000000000000000000000000000000000009094169363e16bcc32938a93928792611d4990613551565b6001600160a01b038d165f90815260a3602052604081208d91336001600160a01b039081168252602082019290925260409081015f205490517fffffffff0000000000000000000000000000000000000000000000000000000060e08c901b16815298821660048a01529616602488015260448701949094526064860192909252608485015260a48401521460c482015260e4015f604051808303815f87803b158015611df4575f80fd5b505af1158015611e06573d5f803e3d5ffd5b50505050611e1b611e143390565b308661356e565b60975460ff168015611e2e5750609b5482115b8015611e5357506099546001600160a01b0386165f908152609e602052604090205411155b15611e6057611e60613273565b5050610b336001606555565b611e746133f3565b60975460ff16158015611e88575042609854115b611ed45760405162461bcd60e51b815260206004820152601660248201527f72657761726420616c726561647920737461727465640000000000000000000060448201526064016107cb565b4281118015611eed5750611eeb6201518082614377565b155b8015611efb57506098548114155b611f475760405162461bcd60e51b815260206004820152601960248201527f696e76616c6964207265776172642073746172742074696d650000000000000060448201526064016107cb565b609880549082905560408051828152602081018490527f91c38708087fb4ba51bd0e6a106cc1fbaf340479a2e81d18f2341e8c78f97555910160405180910390a15050565b609d546060905f9067ffffffffffffffff811115611fac57611fac61429e565b604051908082528060200260200182016040528015611ff857816020015b60408051606080820183525f808352602083015291810191909152815260200190600190039081611fca5790505b5090505f5b609d548110156121a2576040518060600160405280609f5f609d8581548110612028576120286141a4565b5f9182526020808320909101546001600160a01b0390811684528382019490945260409092018120549092168352609d80549390910192609f92919086908110612074576120746141a4565b905f5260205f20015f9054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020015f20600101548152602001609f5f609d85815481106120cd576120cd6141a4565b5f9182526020808320909101546001600160a01b03168352820192909252604001902060020180546120fe906142cb565b80601f016020809104026020016040519081016040528092919081815260200182805461212a906142cb565b80156121755780601f1061214c57610100808354040283529160200191612175565b820191905f5260205f20905b81548152906001019060200180831161215857829003601f168201915b505050505081525082828151811061218f5761218f6141a4565b6020908102919091010152600101611ffd565b50919050565b609d81815481106121b7575f80fd5b5f918252602090912001546001600160a01b0316905081565b6001600160a01b0381165f90815260a26020526040902060609061111d906137db565b5f54610100900460ff161580801561221157505f54600160ff909116105b8061222a5750303b15801561222a57505f5460ff166001145b61229c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107cb565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156122f8575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b5f861161236d5760405162461bcd60e51b815260206004820152602260248201527f73657175656e6365727353697a65206d7573742067726561746572207468616e60448201527f203000000000000000000000000000000000000000000000000000000000000060648201526084016107cb565b5f85116123bc5760405162461bcd60e51b815260206004820152601c60248201527f696e76616c696420756e64656c65676174654c6f636b45706f6368730000000060448201526064016107cb565b42841180156123d557506123d36201518085614377565b155b6124215760405162461bcd60e51b815260206004820152601960248201527f696e76616c6964207265776172642073746172742074696d650000000000000060448201526064016107cb565b8161246e5760405162461bcd60e51b815260206004820152601760248201527f696e76616c696420696e697469616c207374616b65727300000000000000000060448201526064016107cb565b6124766137e7565b61247e61386b565b6099869055609a8590556098849055609b8290555f5b609b548110156125fa578383828181106124b0576124b06141a4565b90506020028101906124c2919061438a565b609f5f8686858181106124d7576124d76141a4565b90506020028101906124e9919061438a565b6124f7906020810190614028565b6001600160a01b0316815260208101919091526040015f20612519828261446b565b905050609d848483818110612530576125306141a4565b9050602002810190612542919061438a565b612550906020810190614028565b8154600180820184555f93845260209093200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556125a4908290614211565b609e5f8686858181106125b9576125b96141a4565b90506020028101906125cb919061438a565b6125d9906020810190614028565b6001600160a01b0316815260208101919091526040015f2055600101612494565b50604080515f8152602081018890527f98b982a120d9be7d9c68d85a1aed8158d1d52e517175bfb3eb4280692f19b1ed910160405180910390a1604080515f8152602081018690527f91c38708087fb4ba51bd0e6a106cc1fbaf340479a2e81d18f2341e8c78f97555910160405180910390a180156126cf575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156127bf57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa158015612790573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127b49190614189565b6001600160a01b0316145b6128585760405162461bcd60e51b8152602060048201526044602482018190527f5374616b696e673a2066756e6374696f6e2063616e206f6e6c79206265206361908201527f6c6c65642066726f6d20746865206f74686572207374616b696e6720636f6e7460648201527f7261637400000000000000000000000000000000000000000000000000000000608482015260a4016107cb565b609e5f6128686020840184614028565b6001600160a01b03166001600160a01b031681526020019081526020015f20545f0361291557609d61289d6020830183614028565b81546001810183555f928352602080842090910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039390931692909217909155609d5491609e916128fb90850185614028565b6001600160a01b0316815260208101919091526040015f20555b80609f5f6129266020840184614028565b6001600160a01b0316815260208101919091526040015f20612948828261446b565b5061295890506020820182614028565b6001600160a01b03167f058ecb29c230cd5df283c89e996187ed521393fe4546cd1b097921c4b2de293d602083013561299460408501856143c6565b6040516129a39392919061461b565b60405180910390a260975460ff161580156129c25750609954609d5411155b1561180257611802613273565b6129d76133f3565b6129e05f6138ef565b565b6129ea6133f3565b609854421015612a615760405162461bcd60e51b8152602060048201526024808201527f63616e2774207374617274206265666f7265207265776172642073746172742060448201527f74696d650000000000000000000000000000000000000000000000000000000060648201526084016107cb565b5f609c5411612ab25760405162461bcd60e51b815260206004820152600e60248201527f6e6f6e652063616e64696461746500000000000000000000000000000000000060448201526064016107cb565b609780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091555b609d54811015612c6f575f5b81811015612c665760a15f609d8381548110612b0b57612b0b6141a4565b905f5260205f20015f9054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020015f205460a15f609d8581548110612b5c57612b5c6141a4565b5f9182526020808320909101546001600160a01b031683528201929092526040019020541115612c5e575f609d8281548110612b9a57612b9a6141a4565b5f91825260209091200154609d80546001600160a01b0390921692509084908110612bc757612bc76141a4565b5f91825260209091200154609d80546001600160a01b039092169184908110612bf257612bf26141a4565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555080609d8481548110612c3157612c316141a4565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550505b600101612aed565b50600101612ae1565b505f5b609d54811015612cc957612c87816001614211565b609e5f609d8481548110612c9d57612c9d6141a4565b5f9182526020808320909101546001600160a01b03168352820192909252604001902055600101612c72565b506129e0613273565b5f609854421015612d255760405162461bcd60e51b815260206004820152601960248201527f726577617264206973206e6f742073746172746564207965740000000000000060448201526064016107cb565b6201518060985442612d3791906141fe565b612d41919061466e565b905090565b6001600160a01b0381165f90815260a360209081526040808320338452909152812054151561111d565b335f908152609e6020526040902054612dcb5760405162461bcd60e51b815260206004820152601360248201527f6f6e6c79207374616b657220616c6c6f7765640000000000000000000000000060448201526064016107cb565b612dd361344d565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166341302560336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602481018490526044015f604051808303815f87803b158015612e60575f80fd5b505af1158015612e72573d5f803e3d5ffd5b505050506118026001606555565b609f6020525f90815260409020805460018201546002830180546001600160a01b03909316939192612eb1906142cb565b80601f0160208091040260200160405190810160405280929190818152602001828054612edd906142cb565b8015612f285780601f10612eff57610100808354040283529160200191612f28565b820191905f5260205f20905b815481529060010190602001808311612f0b57829003601f168201915b5050505050905083565b612f3a61344d565b5f805b335f90815260a4602052604090205481101561314c5760975460ff161580612f9b5750612f68612cd2565b335f90815260a460205260409020805483908110612f8857612f886141a4565b905f5260205f2090600302016002015411155b1561314457335f90815260a460205260409020805482908110612fc057612fc06141a4565b905f5260205f2090600302016001015482612fdb9190614211565b335f90815260a46020526040902054909250600110156130c157335f90815260a4602052604090208054613011906001906141fe565b81548110613021576130216141a4565b905f5260205f20906003020160a45f6130373390565b6001600160a01b03166001600160a01b031681526020019081526020015f208281548110613067576130676141a4565b5f9182526020909120825460039092020180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091178155600180830154908201556002918201549101555b335f90815260a4602052604090208054806130de576130de614224565b5f8281526020812060037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019283020180547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600181018290556002015590555b600101612f3d565b505f811161319c5760405162461bcd60e51b815260206004820152601760248201527f6e6f204d6f72706820746f6b656e20746f20636c61696d00000000000000000060448201526064016107cb565b6131a63382613958565b60405181815233907fcc3089abc79631b3c0c81414a72e237c08559073a970cf474e36ae965e382fb39060200160405180910390a2506129e06001606555565b6131ee6133f3565b6001600160a01b03811661326a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107cb565b611802816138ef565b60995460975460ff161561329757609954609c5410156132925750609c545b6132a8565b609954609d5410156132a85750609d545b5f8167ffffffffffffffff8111156132c2576132c261429e565b6040519080825280602002602001820160405280156132eb578160200160208202803683370190505b5090505f5b8281101561335857609d818154811061330b5761330b6141a4565b905f5260205f20015f9054906101000a90046001600160a01b0316828281518110613338576133386141a4565b6001600160a01b03909216602092830291909101909101526001016132f0565b506040517f9b8201a40000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639b8201a4906133be908490600401614043565b5f604051808303815f87803b1580156133d5575f80fd5b505af11580156133e7573d5f803e3d5ffd5b50509151609b55505050565b6033546001600160a01b031633146129e05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107cb565b60026065540361349f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016107cb565b6002606555565b6001606555565b5f805b6001600160a01b0384165f90815260a4602052604090205481101561352d576001600160a01b038481165f90815260a460205260409020805491851691839081106134fd576134fd6141a4565b5f9182526020909120600390910201546001600160a01b03160361352557600191505061111d565b6001016134b0565b505f9392505050565b5f61354a836001600160a01b038416613bbc565b9392505050565b5f61111d825490565b5f61354a836001600160a01b038416613c9f565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa1580156135ef573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136139190614681565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301528581166024830152604482018590529192507f0000000000000000000000000000000000000000000000000000000000000000909116906323b872dd906064016020604051808303815f875af11580156136a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136c99190614698565b506040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa15801561374b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061376f9190614681565b90505f8311801561378857508261378683836141fe565b145b6137d45760405162461bcd60e51b815260206004820152601b60248201527f6d6f72706820746f6b656e207472616e73666572206661696c6564000000000060448201526064016107cb565b5050505050565b60605f61354a83613ceb565b5f54610100900460ff166138635760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107cb565b6129e0613d44565b5f54610100900460ff166138e75760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107cb565b6129e0613dc9565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa1580156139d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139fd9190614681565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303815f875af1158015613a87573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613aab9190614698565b506040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015613b2d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613b519190614681565b90505f83118015613b6a575082613b6883836141fe565b145b613bb65760405162461bcd60e51b815260206004820152601b60248201527f6d6f72706820746f6b656e207472616e73666572206661696c6564000000000060448201526064016107cb565b50505050565b5f8181526001830160205260408120548015613c96575f613bde6001836141fe565b85549091505f90613bf1906001906141fe565b9050818114613c50575f865f018281548110613c0f57613c0f6141a4565b905f5260205f200154905080875f018481548110613c2f57613c2f6141a4565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080613c6157613c61614224565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061111d565b5f91505061111d565b5f818152600183016020526040812054613ce457508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561111d565b505f61111d565b6060815f01805480602002602001604051908101604052809291908181526020018280548015613d3857602002820191905f5260205f20905b815481526020019060010190808311613d24575b50505050509050919050565b5f54610100900460ff16613dc05760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107cb565b6129e0336138ef565b5f54610100900460ff166134a65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107cb565b5f8083601f840112613e55575f80fd5b50813567ffffffffffffffff811115613e6c575f80fd5b6020830191508360208260051b8501011115613e86575f80fd5b9250929050565b5f8060208385031215613e9e575f80fd5b823567ffffffffffffffff811115613eb4575f80fd5b613ec085828601613e45565b90969095509350505050565b5f60208284031215613edc575f80fd5b5035919050565b6001600160a01b0381168114611802575f80fd5b5f8060408385031215613f08575f80fd5b8235613f1381613ee3565b946020939093013593505050565b5f81518084525f5b81811015613f4557602081850181015186830182015201613f29565b505f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b8381101561401a578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018552815180516001600160a01b031684528781015188850152860151606087850181905261400681860183613f21565b968901969450505090860190600101613fa9565b509098975050505050505050565b5f60208284031215614038575f80fd5b813561354a81613ee3565b602080825282518282018190525f9190848201906040850190845b818110156140835783516001600160a01b03168352928401929184019160010161405e565b50909695505050505050565b5f805f805f608086880312156140a3575f80fd5b853594506020860135935060408601359250606086013567ffffffffffffffff8111156140ce575f80fd5b6140da88828901613e45565b969995985093965092949392505050565b5f602082840312156140fb575f80fd5b813567ffffffffffffffff811115614111575f80fd5b82016060818503121561354a575f80fd5b6001600160a01b0384168152826020820152606060408201525f6141496060830184613f21565b95945050505050565b5f8060408385031215614163575f80fd5b823561416e81613ee3565b9150602083013561417e81613ee3565b809150509250929050565b5f60208284031215614199575f80fd5b815161354a81613ee3565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561111d5761111d6141d1565b8082018082111561111d5761111d6141d1565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b60208082528181018390525f908460408401835b8681101561429357823561427881613ee3565b6001600160a01b031682529183019190830190600101614265565b509695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b600181811c908216806142df57607f821691505b6020821081036121a2577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f81614324576143246141d1565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f826143855761438561434a565b500690565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181126143bc575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126143f9575f80fd5b83018035915067ffffffffffffffff821115614413575f80fd5b602001915036819003821315613e86575f80fd5b601f821115610b3357805f5260205f20601f840160051c8101602085101561444c5750805b601f840160051c820191505b818110156137d4575f8155600101614458565b813561447681613ee3565b6001600160a01b0381167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550600160208084013560018401556002830160408501357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18636030181126144ed575f80fd5b8501803567ffffffffffffffff811115614505575f80fd5b8036038483011315614515575f80fd5b6145298161452385546142cb565b85614427565b5f601f82116001811461457b575f831561454557508382018601355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178555614610565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156145c7578685018901358255938801939089019088016145a8565b5084821015614604577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88660031b161c198885880101351681555b505060018360011b0185555b505050505050505050565b83815260406020820152816040820152818360608301375f818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b5f8261467c5761467c61434a565b500490565b5f60208284031215614691575f80fd5b5051919050565b5f602082840312156146a8575f80fd5b8151801515811461354a575f80fdfea164736f6c6343000818000a diff --git a/bindings/bin/l2txfeevault_deployed.hex b/bindings/bin/l2txfeevault_deployed.hex index 78ae9ea6d..b0cca7ede 100644 --- a/bindings/bin/l2txfeevault_deployed.hex +++ b/bindings/bin/l2txfeevault_deployed.hex @@ -1 +1 @@ -0x6080604052600436106100c6575f3560e01c806384411d6511610071578063f2fde38b1161004c578063f2fde38b1461021e578063feec756c1461023d578063ff4f35461461025c575f80fd5b806384411d65146101bf5780638da5cb5b146101d45780639e7adc79146101ff575f80fd5b8063457e1a49116100a1578063457e1a491461015c57806366d003ac1461017f578063715018a6146101ab575f80fd5b80632e1a7d4d146100d15780633cb747bf146100f25780633ccfd60b14610148575f80fd5b366100cd57005b5f80fd5b3480156100dc575f80fd5b506100f06100eb36600461098b565b61027b565b005b3480156100fd575f80fd5b5060025461011e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b348015610153575f80fd5b506100f06104c8565b348015610167575f80fd5b5061017160015481565b60405190815260200161013f565b34801561018a575f80fd5b5060035461011e9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101b6575f80fd5b506100f06104d5565b3480156101ca575f80fd5b5061017160045481565b3480156101df575f80fd5b505f5461011e9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561020a575f80fd5b506100f06102193660046109a2565b610560565b348015610229575f80fd5b506100f06102383660046109a2565b610656565b348015610248575f80fd5b506100f06102573660046109a2565b61075c565b348015610267575f80fd5b506100f061027636600461098b565b610852565b600154811015610338576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f4665655661756c743a207769746864726177616c20616d6f756e74206d75737460448201527f2062652067726561746572207468616e206d696e696d756d207769746864726160648201527f77616c20616d6f756e7400000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b47808211156103c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4665655661756c743a20696e73756666696369656e742062616c616e6365207460448201527f6f20776974686472617700000000000000000000000000000000000000000000606482015260840161032f565b60048054830190556003546040805184815273ffffffffffffffffffffffffffffffffffffffff90921660208301523382820152517fc8a211cc64b6ed1b50595a9fcb1932b6d1e5a6e8ef15b60e5b1f988ea9086bba9181900360600190a1600254600354604080516020810182525f80825291517fb2267a7b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9485169463b2267a7b9488946104969491909216928592906004016109dc565b5f604051808303818588803b1580156104ad575f80fd5b505af11580156104bf573d5f803e3d5ffd5b50505050505050565b476104d28161027b565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161032f565b61055e5f610917565b565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146105e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161032f565b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f1c928c417a10a21c3cddad148c5dba5d710e4b1442d6d8a36de345935ad84612905f90a35050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146106d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161032f565b73ffffffffffffffffffffffffffffffffffffffff8116610753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6e6577206f776e657220697320746865207a65726f2061646472657373000000604482015260640161032f565b6104d281610917565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146107dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161032f565b6003805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f7e1e96961a397c8aa26162fe259cc837afc95e33aad4945ddc61c18dabb7a6ad905f90a35050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146108d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161032f565b600180549082905560408051828152602081018490527f0d3c80219fe57713b9f9c83d1e51426792d0c14d8e330e65b102571816140965910160405180910390a15050565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f6020828403121561099b575f80fd5b5035919050565b5f602082840312156109b2575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146109d5575f80fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff851681525f60208560208401526080604084015284518060808501525f5b81811015610a2b5786810183015185820160a001528201610a0f565b505f60a0828601015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050508260608301529594505050505056fea164736f6c6343000818000a +0x6080604052600436106100c6575f3560e01c806384411d6511610071578063f2fde38b1161004c578063f2fde38b1461021e578063feec756c1461023d578063ff4f35461461025c575f80fd5b806384411d65146101bf5780638da5cb5b146101d45780639e7adc79146101ff575f80fd5b8063457e1a49116100a1578063457e1a491461015c57806366d003ac1461017f578063715018a6146101ab575f80fd5b80632e1a7d4d146100d15780633cb747bf146100f25780633ccfd60b14610148575f80fd5b366100cd57005b5f80fd5b3480156100dc575f80fd5b506100f06100eb366004610a8b565b61027b565b005b3480156100fd575f80fd5b5060025461011e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b348015610153575f80fd5b506100f0610548565b348015610167575f80fd5b5061017160015481565b60405190815260200161013f565b34801561018a575f80fd5b5060035461011e9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101b6575f80fd5b506100f06105d5565b3480156101ca575f80fd5b5061017160045481565b3480156101df575f80fd5b505f5461011e9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561020a575f80fd5b506100f0610219366004610aa2565b610660565b348015610229575f80fd5b506100f0610238366004610aa2565b610756565b348015610248575f80fd5b506100f0610257366004610aa2565b61085c565b348015610267575f80fd5b506100f0610276366004610a8b565b610952565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610300576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064015b60405180910390fd5b6001548110156103b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f4665655661756c743a207769746864726177616c20616d6f756e74206d75737460448201527f2062652067726561746572207468616e206d696e696d756d207769746864726160648201527f77616c20616d6f756e7400000000000000000000000000000000000000000000608482015260a4016102f7565b4780821115610449576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4665655661756c743a20696e73756666696369656e742062616c616e6365207460448201527f6f2077697468647261770000000000000000000000000000000000000000000060648201526084016102f7565b60048054830190556003546040805184815273ffffffffffffffffffffffffffffffffffffffff90921660208301523382820152517fc8a211cc64b6ed1b50595a9fcb1932b6d1e5a6e8ef15b60e5b1f988ea9086bba9181900360600190a1600254600354604080516020810182525f80825291517fb2267a7b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9485169463b2267a7b948894610516949190921692859290600401610adc565b5f604051808303818588803b15801561052d575f80fd5b505af115801561053f573d5f803e3d5ffd5b50505050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146105c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016102f7565b476105d28161027b565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016102f7565b61065e5f610a17565b565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146106e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016102f7565b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f1c928c417a10a21c3cddad148c5dba5d710e4b1442d6d8a36de345935ad84612905f90a35050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146107d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016102f7565b73ffffffffffffffffffffffffffffffffffffffff8116610853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6e6577206f776e657220697320746865207a65726f206164647265737300000060448201526064016102f7565b6105d281610a17565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146108dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016102f7565b6003805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f7e1e96961a397c8aa26162fe259cc837afc95e33aad4945ddc61c18dabb7a6ad905f90a35050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146109d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016102f7565b600180549082905560408051828152602081018490527f0d3c80219fe57713b9f9c83d1e51426792d0c14d8e330e65b102571816140965910160405180910390a15050565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f60208284031215610a9b575f80fd5b5035919050565b5f60208284031215610ab2575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610ad5575f80fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff851681525f60208560208401526080604084015284518060808501525f5b81811015610b2b5786810183015185820160a001528201610b0f565b505f60a0828601015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050508260608301529594505050505056fea164736f6c6343000818000a diff --git a/bindings/bin/morphtoken_deployed.hex b/bindings/bin/morphtoken_deployed.hex index 99734c155..1aeb3674e 100644 --- a/bindings/bin/morphtoken_deployed.hex +++ b/bindings/bin/morphtoken_deployed.hex @@ -1 +1 @@ -0x608060405234801561000f575f80fd5b506004361061018f575f3560e01c8063715018a6116100dd578063a457c2d711610088578063cd4281d011610063578063cd4281d0146103af578063dd62ed3e146103d6578063f2fde38b1461041b575f80fd5b8063a457c2d714610381578063a9059cbb14610394578063c553f7b3146103a7575f80fd5b8063944fa746116100b8578063944fa7461461034757806395d89b4114610366578063a29bfb2c1461036e575f80fd5b8063715018a6146102fa578063807de443146103025780638da5cb5b14610329575f80fd5b8063395093511161013d5780635ea94e6f116101185780635ea94e6f146102aa5780636fe0e395146102b257806370a08231146102c5575f80fd5b806339509351146102365780633d9353fe14610249578063405abb4114610295575f80fd5b806318160ddd1161016d57806318160ddd1461020257806323b872dd14610214578063313ce56714610227575f80fd5b806306fdde0314610193578063095ea7b3146101b15780630cb92c13146101d4575b5f80fd5b61019b61042e565b6040516101a8919061145f565b60405180910390f35b6101c46101bf3660046114f1565b6104be565b60405190151581526020016101a8565b6101e76101e2366004611519565b6104d7565b604080518251815260209283015192810192909252016101a8565b6067545b6040519081526020016101a8565b6101c4610222366004611530565b61052e565b604051601281526020016101a8565b6101c46102443660046114f1565b610551565b6102707f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a8565b6102a86102a3366004611569565b61059c565b005b606c54610206565b6102a86102c036600461165d565b6106f2565b6102066102d33660046116cc565b73ffffffffffffffffffffffffffffffffffffffff165f9081526068602052604090205490565b6102a861092b565b6102707f000000000000000000000000000000000000000000000000000000000000000081565b60335473ffffffffffffffffffffffffffffffffffffffff16610270565b610206610355366004611519565b5f908152606b602052604090205490565b61019b61093e565b6102a861037c366004611519565b61094d565b6101c461038f3660046114f1565b610cc2565b6101c46103a23660046114f1565b610d52565b606a54610206565b6102707f000000000000000000000000000000000000000000000000000000000000000081565b6102066103e43660046116ec565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260696020908152604080832093909416825291909152205490565b6102a86104293660046116cc565b610d5f565b60606065805461043d9061171d565b80601f01602080910402602001604051908101604052809291908181526020018280546104699061171d565b80156104b45780601f1061048b576101008083540402835291602001916104b4565b820191905f5260205f20905b81548152906001019060200180831161049757829003601f168201915b5050505050905090565b5f336104cb818585610dfc565b60019150505b92915050565b604080518082019091525f8082526020820152606a82815481106104fd576104fd61176e565b905f5260205f2090600202016040518060400160405290815f82015481526020016001820154815250509050919050565b5f3361053b858285610f2f565b610546858585610feb565b506001949350505050565b335f81815260696020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104cb90829086906105979087906117c8565b610dfc565b6105a46111a0565b606a80546105b4906001906117db565b815481106105c4576105c461176e565b905f5260205f20906002020160010154811161064d5760405162461bcd60e51b815260206004820152603060248201527f6566666563746976652064617973206166746572206d7573742062652067726560448201527f61746572207468616e206265666f72650000000000000000000000000000000060648201526084015b60405180910390fd5b60408051808201825283815260208101838152606a80546001810182555f91825292517f116fea137db6e131133e7f2bab296045d8f41cc5607279db17b218cab0929a5160029094029384015590517f116fea137db6e131133e7f2bab296045d8f41cc5607279db17b218cab0929a52909201919091559051829184917fceb8faf32dab6cac28ca92d86325e14aa7016715513ad8b353b7de90fb7f02cf9190a35050565b5f54610100900460ff161580801561071057505f54600160ff909116105b806107295750303b15801561072957505f5460ff166001145b61079b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610644565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156107f7575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6107ff611207565b606561080b8682611837565b5060666108188582611837565b50610823338461128b565b6040805180820182528381525f60208201818152606a805460018101825590835292517f116fea137db6e131133e7f2bab296045d8f41cc5607279db17b218cab0929a51600290940293840155517f116fea137db6e131133e7f2bab296045d8f41cc5607279db17b218cab0929a5290920191909155905183907fceb8faf32dab6cac28ca92d86325e14aa7016715513ad8b353b7de90fb7f02cf908390a38015610924575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6109336111a0565b61093c5f611364565b565b60606066805461043d9061171d565b337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16146109d25760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c79207265636f726420636f6e747261637420616c6c6f776564000000006044820152606401610644565b5f620151807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632cc138be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a40573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a649190611953565b610a6e90426117db565b610a78919061196a565b610a839060016117c8565b9050818111610afa5760405162461bcd60e51b815260206004820152602b60248201527f746865207370656369666965642074696d6520686173206e6f7420796574206260448201527f65656e20726561636865640000000000000000000000000000000000000000006064820152608401610644565b606c54821015610b4c5760405162461bcd60e51b815260206004820152601560248201527f616c6c20696e666c6174696f6e73206d696e74656400000000000000000000006044820152606401610644565b606c545b828111610caf575f606a5f81548110610b6b57610b6b61176e565b5f9182526020822060029091020154606a54909250610b8c906001906117db565b90505b8015610bf55782606a8281548110610ba957610ba961176e565b905f5260205f2090600202016001015411610be357606a8181548110610bd157610bd161176e565b905f5260205f2090600202015f015491505b80610bed816119a2565b915050610b8f565b50662386f26fc1000081606754610c0c91906119d6565b610c16919061196a565b5f838152606b60205260409020819055610c51907f00000000000000000000000000000000000000000000000000000000000000009061128b565b817f0d82c0920038b8dc7f633e18585f37092ba957b84876fcf833d6841f69eaa327606b5f8581526020019081526020015f2054604051610c9491815260200190565b60405180910390a25080610ca7816119ed565b915050610b50565b50610cbb8260016117c8565b606c555050565b335f81815260696020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610d455760405162461bcd60e51b815260206004820152601e60248201527f64656372656173656420616c6c6f77616e63652062656c6f77207a65726f00006044820152606401610644565b6105468286868403610dfc565b5f336104cb818585610feb565b610d676111a0565b73ffffffffffffffffffffffffffffffffffffffff8116610df05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610644565b610df981611364565b50565b73ffffffffffffffffffffffffffffffffffffffff8316610e5f5760405162461bcd60e51b815260206004820152601d60248201527f617070726f76652066726f6d20746865207a65726f20616464726573730000006044820152606401610644565b73ffffffffffffffffffffffffffffffffffffffff8216610ec25760405162461bcd60e51b815260206004820152601b60248201527f617070726f766520746f20746865207a65726f206164647265737300000000006044820152606401610644565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526069602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381165f908152606960209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610fe55781811015610fd85760405162461bcd60e51b815260206004820152601660248201527f696e73756666696369656e7420616c6c6f77616e6365000000000000000000006044820152606401610644565b610fe58484848403610dfc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661104e5760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f206164647265737300006044820152606401610644565b73ffffffffffffffffffffffffffffffffffffffff82166110b15760405162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f2061646472657373000000006044820152606401610644565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260686020526040902054818110156111265760405162461bcd60e51b815260206004820152601f60248201527f7472616e7366657220616d6f756e7420657863656564732062616c616e6365006044820152606401610644565b73ffffffffffffffffffffffffffffffffffffffff8085165f8181526068602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111929086815260200190565b60405180910390a350505050565b60335473ffffffffffffffffffffffffffffffffffffffff16331461093c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610644565b5f54610100900460ff166112835760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610644565b61093c6113da565b73ffffffffffffffffffffffffffffffffffffffff82166112ee5760405162461bcd60e51b815260206004820152601860248201527f6d696e7420746f20746865207a65726f206164647265737300000000000000006044820152606401610644565b8060675f8282546112ff91906117c8565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f818152606860209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166114565760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610644565b61093c33611364565b5f602080835283518060208501525f5b8181101561148b5785810183015185820160400152820161146f565b505f6040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146114ec575f80fd5b919050565b5f8060408385031215611502575f80fd5b61150b836114c9565b946020939093013593505050565b5f60208284031215611529575f80fd5b5035919050565b5f805f60608486031215611542575f80fd5b61154b846114c9565b9250611559602085016114c9565b9150604084013590509250925092565b5f806040838503121561157a575f80fd5b50508035926020909101359150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f8301126115c5575f80fd5b813567ffffffffffffffff808211156115e0576115e0611589565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561162657611626611589565b8160405283815286602085880101111561163e575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f805f8060808587031215611670575f80fd5b843567ffffffffffffffff80821115611687575f80fd5b611693888389016115b6565b955060208701359150808211156116a8575f80fd5b506116b5878288016115b6565b949794965050505060408301359260600135919050565b5f602082840312156116dc575f80fd5b6116e5826114c9565b9392505050565b5f80604083850312156116fd575f80fd5b611706836114c9565b9150611714602084016114c9565b90509250929050565b600181811c9082168061173157607f821691505b602082108103611768577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156104d1576104d161179b565b818103818111156104d1576104d161179b565b601f82111561183257805f5260205f20601f840160051c810160208510156118135750805b601f840160051c820191505b81811015610924575f815560010161181f565b505050565b815167ffffffffffffffff81111561185157611851611589565b6118658161185f845461171d565b846117ee565b602080601f8311600181146118b7575f84156118815750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855561194b565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015611903578886015182559484019460019091019084016118e4565b508582101561193f57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f60208284031215611963575f80fd5b5051919050565b5f8261199d577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f816119b0576119b061179b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b80820281158282048414176104d1576104d161179b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611a1d57611a1d61179b565b506001019056fea164736f6c6343000818000a +0x608060405234801561000f575f80fd5b506004361061018f575f3560e01c8063715018a6116100dd578063a457c2d711610088578063cd4281d011610063578063cd4281d0146103af578063dd62ed3e146103d6578063f2fde38b1461041b575f80fd5b8063a457c2d714610381578063a9059cbb14610394578063c553f7b3146103a7575f80fd5b8063944fa746116100b8578063944fa7461461034757806395d89b4114610366578063a29bfb2c1461036e575f80fd5b8063715018a6146102fa578063807de443146103025780638da5cb5b14610329575f80fd5b8063395093511161013d5780636d0c4a26116101185780636d0c4a26146102845780636fe0e395146102b257806370a08231146102c5575f80fd5b806339509351146102105780633d9353fe14610223578063405abb411461026f575f80fd5b806318160ddd1161016d57806318160ddd146101e657806323b872dd146101ee578063313ce56714610201575f80fd5b806306fdde0314610193578063095ea7b3146101b15780630b88a984146101d4575b5f80fd5b61019b61042e565b6040516101a89190611437565b60405180910390f35b6101c46101bf3660046114c9565b6104be565b60405190151581526020016101a8565b606c545b6040519081526020016101a8565b6067546101d8565b6101c46101fc3660046114f1565b6104d7565b604051601281526020016101a8565b6101c461021e3660046114c9565b6104fa565b61024a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a8565b61028261027d36600461152a565b610545565b005b61029761029236600461154a565b61069b565b604080518251815260209283015192810192909252016101a8565b6102826102c0366004611635565b6106f2565b6101d86102d33660046116a4565b73ffffffffffffffffffffffffffffffffffffffff165f9081526068602052604090205490565b61028261092b565b61024a7f000000000000000000000000000000000000000000000000000000000000000081565b60335473ffffffffffffffffffffffffffffffffffffffff1661024a565b6101d861035536600461154a565b5f908152606b602052604090205490565b61019b61093e565b61028261037c36600461154a565b61094d565b6101c461038f3660046114c9565b610c9a565b6101c46103a23660046114c9565b610d2a565b606a546101d8565b61024a7f000000000000000000000000000000000000000000000000000000000000000081565b6101d86103e43660046116c4565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260696020908152604080832093909416825291909152205490565b6102826104293660046116a4565b610d37565b60606065805461043d906116f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610469906116f5565b80156104b45780601f1061048b576101008083540402835291602001916104b4565b820191905f5260205f20905b81548152906001019060200180831161049757829003601f168201915b5050505050905090565b5f336104cb818585610dd4565b60019150505b92915050565b5f336104e4858285610f07565b6104ef858585610fc3565b506001949350505050565b335f81815260696020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104cb9082908690610540908790611773565b610dd4565b61054d611178565b606a805461055d90600190611786565b8154811061056d5761056d611799565b905f5260205f2090600202016001015481116105f65760405162461bcd60e51b815260206004820152603260248201527f6566666563746976652065706f636873206166746572206d757374206265206760448201527f726561746572207468616e206265666f7265000000000000000000000000000060648201526084015b60405180910390fd5b60408051808201825283815260208101838152606a80546001810182555f91825292517f116fea137db6e131133e7f2bab296045d8f41cc5607279db17b218cab0929a5160029094029384015590517f116fea137db6e131133e7f2bab296045d8f41cc5607279db17b218cab0929a52909201919091559051829184917fbe80a5653ecb34691beafb0fb70004d50f9032b798f68a2f73a137c4f98ab3f49190a35050565b604080518082019091525f8082526020820152606a82815481106106c1576106c1611799565b905f5260205f2090600202016040518060400160405290815f82015481526020016001820154815250509050919050565b5f54610100900460ff161580801561071057505f54600160ff909116105b806107295750303b15801561072957505f5460ff166001145b61079b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016105ed565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156107f7575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6107ff6111df565b606561080b868261180f565b506066610818858261180f565b506108233384611263565b6040805180820182528381525f60208201818152606a805460018101825590835292517f116fea137db6e131133e7f2bab296045d8f41cc5607279db17b218cab0929a51600290940293840155517f116fea137db6e131133e7f2bab296045d8f41cc5607279db17b218cab0929a5290920191909155905183907fbe80a5653ecb34691beafb0fb70004d50f9032b798f68a2f73a137c4f98ab3f4908390a38015610924575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b610933611178565b61093c5f61133c565b565b60606066805461043d906116f5565b337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16146109d25760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c79207265636f726420636f6e747261637420616c6c6f7765640000000060448201526064016105ed565b807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663766718086040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a60919061192b565b11610ad35760405162461bcd60e51b815260206004820152602b60248201527f746865207370656369666965642074696d6520686173206e6f7420796574206260448201527f65656e207265616368656400000000000000000000000000000000000000000060648201526084016105ed565b606c54811015610b255760405162461bcd60e51b815260206004820152601560248201527f616c6c20696e666c6174696f6e73206d696e746564000000000000000000000060448201526064016105ed565b606c545b818111610c88575f606a5f81548110610b4457610b44611799565b5f9182526020822060029091020154606a54909250610b6590600190611786565b90505b8015610bce5782606a8281548110610b8257610b82611799565b905f5260205f2090600202016001015411610bbc57606a8181548110610baa57610baa611799565b905f5260205f2090600202015f015491505b80610bc681611942565b915050610b68565b50662386f26fc1000081606754610be59190611976565b610bef919061198d565b5f838152606b60205260409020819055610c2a907f000000000000000000000000000000000000000000000000000000000000000090611263565b817f0d82c0920038b8dc7f633e18585f37092ba957b84876fcf833d6841f69eaa327606b5f8581526020019081526020015f2054604051610c6d91815260200190565b60405180910390a25080610c80816119c5565b915050610b29565b50610c94816001611773565b606c5550565b335f81815260696020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610d1d5760405162461bcd60e51b815260206004820152601e60248201527f64656372656173656420616c6c6f77616e63652062656c6f77207a65726f000060448201526064016105ed565b6104ef8286868403610dd4565b5f336104cb818585610fc3565b610d3f611178565b73ffffffffffffffffffffffffffffffffffffffff8116610dc85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016105ed565b610dd18161133c565b50565b73ffffffffffffffffffffffffffffffffffffffff8316610e375760405162461bcd60e51b815260206004820152601d60248201527f617070726f76652066726f6d20746865207a65726f206164647265737300000060448201526064016105ed565b73ffffffffffffffffffffffffffffffffffffffff8216610e9a5760405162461bcd60e51b815260206004820152601b60248201527f617070726f766520746f20746865207a65726f2061646472657373000000000060448201526064016105ed565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526069602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381165f908152606960209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610fbd5781811015610fb05760405162461bcd60e51b815260206004820152601660248201527f696e73756666696369656e7420616c6c6f77616e63650000000000000000000060448201526064016105ed565b610fbd8484848403610dd4565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166110265760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f2061646472657373000060448201526064016105ed565b73ffffffffffffffffffffffffffffffffffffffff82166110895760405162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f20616464726573730000000060448201526064016105ed565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260686020526040902054818110156110fe5760405162461bcd60e51b815260206004820152601f60248201527f7472616e7366657220616d6f756e7420657863656564732062616c616e63650060448201526064016105ed565b73ffffffffffffffffffffffffffffffffffffffff8085165f8181526068602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061116a9086815260200190565b60405180910390a350505050565b60335473ffffffffffffffffffffffffffffffffffffffff16331461093c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105ed565b5f54610100900460ff1661125b5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016105ed565b61093c6113b2565b73ffffffffffffffffffffffffffffffffffffffff82166112c65760405162461bcd60e51b815260206004820152601860248201527f6d696e7420746f20746865207a65726f2061646472657373000000000000000060448201526064016105ed565b8060675f8282546112d79190611773565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f818152606860209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff1661142e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016105ed565b61093c3361133c565b5f602080835283518060208501525f5b8181101561146357858101830151858201604001528201611447565b505f6040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146114c4575f80fd5b919050565b5f80604083850312156114da575f80fd5b6114e3836114a1565b946020939093013593505050565b5f805f60608486031215611503575f80fd5b61150c846114a1565b925061151a602085016114a1565b9150604084013590509250925092565b5f806040838503121561153b575f80fd5b50508035926020909101359150565b5f6020828403121561155a575f80fd5b5035919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f83011261159d575f80fd5b813567ffffffffffffffff808211156115b8576115b8611561565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156115fe576115fe611561565b81604052838152866020858801011115611616575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f805f8060808587031215611648575f80fd5b843567ffffffffffffffff8082111561165f575f80fd5b61166b8883890161158e565b95506020870135915080821115611680575f80fd5b5061168d8782880161158e565b949794965050505060408301359260600135919050565b5f602082840312156116b4575f80fd5b6116bd826114a1565b9392505050565b5f80604083850312156116d5575f80fd5b6116de836114a1565b91506116ec602084016114a1565b90509250929050565b600181811c9082168061170957607f821691505b602082108103611740577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156104d1576104d1611746565b818103818111156104d1576104d1611746565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b601f82111561180a57805f5260205f20601f840160051c810160208510156117eb5750805b601f840160051c820191505b81811015610924575f81556001016117f7565b505050565b815167ffffffffffffffff81111561182957611829611561565b61183d8161183784546116f5565b846117c6565b602080601f83116001811461188f575f84156118595750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555611923565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156118db578886015182559484019460019091019084016118bc565b508582101561191757878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f6020828403121561193b575f80fd5b5051919050565b5f8161195057611950611746565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b80820281158282048414176104d1576104d1611746565b5f826119c0577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036119f5576119f5611746565b506001019056fea164736f6c6343000818000a diff --git a/bindings/bin/record_deployed.hex b/bindings/bin/record_deployed.hex index 909b0660f..c5b5bd778 100644 --- a/bindings/bin/record_deployed.hex +++ b/bindings/bin/record_deployed.hex @@ -1 +1 @@ -0x608060405234801561000f575f80fd5b506004361061019a575f3560e01c80637828a905116100e8578063a24231e811610093578063cd6dc6871161006e578063cd6dc687146104f0578063d557714114610503578063f2fde38b1461052a578063fe49dbc91461053d575f80fd5b8063a24231e814610405578063a795f40914610495578063cb6293e8146104d0575f80fd5b8063807de443116100c3578063807de443146103995780638da5cb5b146103c05780638e21d5fb146103de575f80fd5b80637828a905146102b757806378f908e1146102de5780637dc0d1d014610379575f80fd5b8063484f8d0f1161014857806364b4abe31161012357806364b4abe31461027c5780636ea0396e1461029c578063715018a6146102af575f80fd5b8063484f8d0f146102405780634c69c00f146102495780634e3ca4061461025c575f80fd5b80632fbf6487116101785780632fbf6487146101d85780633d9353fe146101e157806341ed047f1461022d575f80fd5b80630776c0f71461019e57806310c9873f146101ba5780631511e1b1146101cf575b5f80fd5b6101a7606c5481565b6040519081526020015b60405180910390f35b6101cd6101c8366004612633565b610550565b005b6101a760695481565b6101a7606b5481565b6102087f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b1565b6101cd61023b36600461264a565b610676565b6101a7606a5481565b6101cd6102573660046126e1565b6109b5565b61026f61026a366004612701565b610a67565b6040516101b19190612721565b61028f61028a366004612701565b610bff565b6040516101b191906127a4565b6101cd6102aa366004612824565b610da0565b6101cd611a7d565b6102087f000000000000000000000000000000000000000000000000000000000000000081565b6103376102ec366004612633565b60666020525f9081526040902080546001820154600283015460038401546004850154600590950154939473ffffffffffffffffffffffffffffffffffffffff909316939192909186565b6040805196875273ffffffffffffffffffffffffffffffffffffffff9095166020870152938501929092526060840152608083015260a082015260c0016101b1565b6065546102089073ffffffffffffffffffffffffffffffffffffffff1681565b6102087f000000000000000000000000000000000000000000000000000000000000000081565b60335473ffffffffffffffffffffffffffffffffffffffff16610208565b6102087f000000000000000000000000000000000000000000000000000000000000000081565b610458610413366004612633565b60676020525f908152604090208054600182015460028301546003840154600490940154929373ffffffffffffffffffffffffffffffffffffffff9092169290919085565b6040805195865273ffffffffffffffffffffffffffffffffffffffff9094166020860152928401919091526060830152608082015260a0016101b1565b6104bb6104a3366004612633565b60686020525f90815260409020805460019091015482565b604080519283526020830191909152016101b1565b6104e36104de366004612701565b611a90565b6040516101b191906128bb565b6101cd6104fe3660046129e9565b611d44565b6102087f000000000000000000000000000000000000000000000000000000000000000081565b6101cd6105383660046126e1565b611fd5565b6101cd61054b366004612a11565b612072565b60655473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105d25760405162461bcd60e51b815260206004820152601360248201527f6f6e6c79206f7261636c6520616c6c6f7765640000000000000000000000000060448201526064015b60405180910390fd5b606c54156106225760405162461bcd60e51b815260206004820152600b60248201527f616c72656164792073657400000000000000000000000000000000000000000060448201526064016105c9565b5f81116106715760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964206c617465737420626c6f636b00000000000000000000000060448201526064016105c9565b606c55565b60655473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106f35760405162461bcd60e51b815260206004820152601360248201527f6f6e6c79206f7261636c6520616c6c6f7765640000000000000000000000000060448201526064016105c9565b806107405760405162461bcd60e51b815260206004820152601760248201527f656d707479206261746368207375626d697373696f6e7300000000000000000060448201526064016105c9565b5f5b8181101561096157806069546107589190612a9b565b83838381811061076a5761076a612ab4565b905060c002015f0135146107c05760405162461bcd60e51b815260206004820152600d60248201527f696e76616c696420696e6465780000000000000000000000000000000000000060448201526064016105c9565b6040518060c001604052808484848181106107dd576107dd612ab4565b905060c002015f013581526020018484848181106107fd576107fd612ab4565b905060c00201602001602081019061081591906126e1565b73ffffffffffffffffffffffffffffffffffffffff16815260200184848481811061084257610842612ab4565b905060c0020160400135815260200184848481811061086357610863612ab4565b905060c0020160600135815260200184848481811061088457610884612ab4565b905060c002016080013581526020018484848181106108a5576108a5612ab4565b905060c0020160a0013581525060665f8585858181106108c7576108c7612ab4565b60c002919091013582525060208082019290925260409081015f208351815591830151600180840180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90931692909217909155908301516002830155606083015160038301556080830151600483015560a09092015160059091015501610742565b506069546040518281527f1c517c9850aa84483b0b2434e58bab4c7967f0b1a34d8b18a6ad22436add010e9060200160405180910390a28181905060695f8282546109ac9190612a9b565b90915550505050565b6109bd61237d565b73ffffffffffffffffffffffffffffffffffffffff8116610a205760405162461bcd60e51b815260206004820152601660248201527f696e76616c6964206f7261636c6520616464726573730000000000000000000060448201526064016105c9565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b606082821015610ab95760405162461bcd60e51b815260206004820152600d60248201527f696e76616c696420696e6465780000000000000000000000000000000000000060448201526064016105c9565b610ac38383612ae1565b610ace906001612a9b565b67ffffffffffffffff811115610ae657610ae6612af4565b604051908082528060200260200182016040528015610b5a57816020015b610b476040518060a001604052805f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81525090565b815260200190600190039081610b045790505b509050825b828111610bf8575f81815260676020908152604091829020825160a08101845281548152600182015473ffffffffffffffffffffffffffffffffffffffff16928101929092526002810154928201929092526003820154606082015260049091015460808201528251839083908110610bda57610bda612ab4565b60200260200101819052508080610bf090612b21565b915050610b5f565b5092915050565b606082821015610c515760405162461bcd60e51b815260206004820152600d60248201527f696e76616c696420696e6465780000000000000000000000000000000000000060448201526064016105c9565b610c5b8383612ae1565b610c66906001612a9b565b67ffffffffffffffff811115610c7e57610c7e612af4565b604051908082528060200260200182016040528015610cf857816020015b610ce56040518060c001604052805f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f81525090565b815260200190600190039081610c9c5790505b509050825b828111610bf8575f81815260666020908152604091829020825160c08101845281548152600182015473ffffffffffffffffffffffffffffffffffffffff1692810192909252600281015492820192909252600382015460608201526004820154608082015260059091015460a08201528251839083908110610d8257610d82612ab4565b60200260200101819052508080610d9890612b21565b915050610cfd565b60655473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e1d5760405162461bcd60e51b815260206004820152601360248201527f6f6e6c79206f7261636c6520616c6c6f7765640000000000000000000000000060448201526064016105c9565b80610e6a5760405162461bcd60e51b815260206004820152601360248201527f656d707479207265776172642065706f6368730000000000000000000000000060448201526064016105c9565b5f606c5411610ebb5760405162461bcd60e51b815260206004820152601960248201527f737461727420626c6f636b2073686f756c64206265207365740000000000000060448201526064016105c9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663766718086040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f24573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f489190612b58565b606b54600190610f59908490612a9b565b610f639190612ae1565b10610fb05760405162461bcd60e51b815260206004820152601e60248201527f66757475726520646174612063616e6e6f742062652075706c6f61646564000060448201526064016105c9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a29bfb2c600184849050606b54610fff9190612a9b565b6110099190612ae1565b6040518263ffffffff1660e01b815260040161102791815260200190565b5f604051808303815f87803b15801561103e575f80fd5b505af1158015611050573d5f803e3d5ffd5b505f9250829150505b82811015611a12575f84848381811061107457611074612ab4565b90506020028101906110869190612b6f565b611094906040810190612bab565b905090505f8585848181106110ab576110ab612ab4565b90506020028101906110bd9190612b6f565b606b54903591506110cf908490612a9b565b811461111d5760405162461bcd60e51b815260206004820152601360248201527f696e76616c69642065706f636820696e6465780000000000000000000000000060448201526064016105c9565b8186868581811061113057611130612ab4565b90506020028101906111429190612b6f565b611150906060810190612bab565b905014801561119157508186868581811061116d5761116d612ab4565b905060200281019061117f9190612b6f565b61118d906080810190612bab565b9050145b80156111cf5750818686858181106111ab576111ab612ab4565b90506020028101906111bd9190612b6f565b6111cb9060a0810190612bab565b9050145b61121b5760405162461bcd60e51b815260206004820152601360248201527f696e76616c69642064617461206c656e6774680000000000000000000000000060448201526064016105c9565b85858481811061122d5761122d612ab4565b905060200281019061123f9190612b6f565b61124d906020013585612a9b565b93506040518060c0016040528082815260200187878681811061127257611272612ab4565b90506020028101906112849190612b6f565b60200135815260200187878681811061129f5761129f612ab4565b90506020028101906112b19190612b6f565b6112bf906040810190612bab565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050509082525060200187878681811061130757611307612ab4565b90506020028101906113199190612b6f565b611327906060810190612bab565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050509082525060200187878681811061136f5761136f612ab4565b90506020028101906113819190612b6f565b61138f906080810190612bab565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152505050908252506020018787868181106113d7576113d7612ab4565b90506020028101906113e99190612b6f565b6113f79060a0810190612bab565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201829052509390945250508381526068602090815260409182902084518155848201516001820155918401518051929350611462926002850192919091019061255e565b506060820151805161147e9160038401916020909101906125e6565b506080820151805161149a9160048401916020909101906125e6565b5060a082015180516114b69160058401916020909101906125e6565b50506040517f944fa746000000000000000000000000000000000000000000000000000000008152600481018390525f91507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063944fa74690602401602060405180830381865afa158015611544573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115689190612b58565b90505f805f8567ffffffffffffffff81111561158657611586612af4565b6040519080825280602002602001820160405280156115af578160200160208202803683370190505b5090505f8667ffffffffffffffff8111156115cc576115cc612af4565b6040519080825280602002602001820160405280156115f5578160200160208202803683370190505b5090505f5b878110156118765760148c8c8b81811061161657611616612ab4565b90506020028101906116289190612b6f565b6116369060a0810190612bab565b8381811061164657611646612ab4565b90506020020135111561169b5760405162461bcd60e51b815260206004820152601d60248201527f696e76616c69642073657175656e6365727320636f6d6d697373696f6e00000060448201526064016105c9565b8b8b8a8181106116ad576116ad612ab4565b90506020028101906116bf9190612b6f565b6116cd906080810190612bab565b828181106116dd576116dd612ab4565b90506020020135846116ef9190612a9b565b93508b8b8a81811061170357611703612ab4565b90506020028101906117159190612b6f565b611723906060810190612bab565b8281811061173357611733612ab4565b90506020020135856117459190612a9b565b94505f6305f5e1008d8d8c81811061175f5761175f612ab4565b90506020028101906117719190612b6f565b61177f906080810190612bab565b8481811061178f5761178f612ab4565b90506020020135886117a19190612c16565b6117ab9190612c2d565b905060648d8d8c8181106117c1576117c1612ab4565b90506020028101906117d39190612b6f565b6117e19060a0810190612bab565b848181106117f1576117f1612ab4565b90506020020135826118039190612c16565b61180d9190612c2d565b83838151811061181f5761181f612ab4565b60200260200101818152505082828151811061183d5761183d612ab4565b6020026020010151816118509190612ae1565b84838151811061186257611862612ab4565b6020908102919091010152506001016115fa565b508a8a8981811061188957611889612ab4565b905060200281019061189b9190612b6f565b6020013584146118ed5760405162461bcd60e51b815260206004820152601960248201527f696e76616c69642073657175656e6365727320626c6f636b730000000000000060448201526064016105c9565b6305f5e1008311156119415760405162461bcd60e51b815260206004820152601960248201527f696e76616c69642073657175656e6365727320726174696f730000000000000060448201526064016105c9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663cdd0c50e878d8d8c81811061199057611990612ab4565b90506020028101906119a29190612b6f565b6119b0906040810190612bab565b86866040518663ffffffff1660e01b81526004016119d2959493929190612c65565b5f604051808303815f87803b1580156119e9575f80fd5b505af11580156119fb573d5f803e3d5ffd5b505060019099019850611059975050505050505050565b50606b546040518381527f4aa68efd05426e59a9d43654a55a2a74c3e8840894d6e291f8f83085e3a6d1ea9060200160405180910390a280606c5f828254611a5a9190612a9b565b9091555050606b80548391905f90611a73908490612a9b565b9091555050505050565b611a8561237d565b611a8e5f6123e4565b565b606082821015611ae25760405162461bcd60e51b815260206004820152600d60248201527f696e76616c696420696e6465780000000000000000000000000000000000000060448201526064016105c9565b611aec8383612ae1565b611af7906001612a9b565b67ffffffffffffffff811115611b0f57611b0f612af4565b604051908082528060200260200182016040528015611b7757816020015b611b646040518060c001604052805f81526020015f8152602001606081526020016060815260200160608152602001606081525090565b815260200190600190039081611b2d5790505b509050825b828111610bf8575f81815260686020908152604091829020825160c0810184528154815260018201548184015260028201805485518186028101860187528181529295939493860193830182828015611c0957602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611bde575b5050505050815260200160038201805480602002602001604051908101604052809291908181526020018280548015611c5f57602002820191905f5260205f20905b815481526020019060010190808311611c4b575b5050505050815260200160048201805480602002602001604051908101604052809291908181526020018280548015611cb557602002820191905f5260205f20905b815481526020019060010190808311611ca1575b5050505050815260200160058201805480602002602001604051908101604052809291908181526020018280548015611d0b57602002820191905f5260205f20905b815481526020019060010190808311611cf7575b505050505081525050828281518110611d2657611d26612ab4565b60200260200101819052508080611d3c90612b21565b915050611b7c565b5f54610100900460ff1615808015611d6257505f54600160ff909116105b80611d7b5750303b158015611d7b57505f5460ff166001145b611ded5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016105c9565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015611e49575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b815f03611ebe5760405162461bcd60e51b815260206004820152602360248201527f696e76616c6964206e657874206261746368207375626d697373696f6e20696e60448201527f646578000000000000000000000000000000000000000000000000000000000060648201526084016105c9565b73ffffffffffffffffffffffffffffffffffffffff8316611f215760405162461bcd60e51b815260206004820152601660248201527f696e76616c6964206f7261636c6520616464726573730000000000000000000060448201526064016105c9565b611f2961245a565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851617905560698290558015611fd0575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b611fdd61237d565b73ffffffffffffffffffffffffffffffffffffffff81166120665760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016105c9565b61206f816123e4565b50565b60655473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120ef5760405162461bcd60e51b815260206004820152601360248201527f6f6e6c79206f7261636c6520616c6c6f7765640000000000000000000000000060448201526064016105c9565b8061213c5760405162461bcd60e51b815260206004820152601360248201527f656d70747920726f6c6c75702065706f6368730000000000000000000000000060448201526064016105c9565b5f5b818110156123325780606a546121549190612a9b565b83838381811061216657612166612ab4565b905060a002015f0135146121bc5760405162461bcd60e51b815260206004820152600d60248201527f696e76616c696420696e6465780000000000000000000000000000000000000060448201526064016105c9565b6040518060a001604052808484848181106121d9576121d9612ab4565b905060a002015f013581526020018484848181106121f9576121f9612ab4565b905060a00201602001602081019061221191906126e1565b73ffffffffffffffffffffffffffffffffffffffff16815260200184848481811061223e5761223e612ab4565b905060a0020160400135815260200184848481811061225f5761225f612ab4565b905060a0020160600135815260200184848481811061228057612280612ab4565b905060a002016080013581525060675f8585858181106122a2576122a2612ab4565b60a002919091013582525060208082019290925260409081015f208351815591830151600180840180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90931692909217909155908301516002830155606083015160038301556080909201516004909101550161213e565b50606a546040518281527f0c53377f3eed25c9883c67adabc3f817b4fdcde29f550a6a26c0676ed29929299060200160405180910390a281819050606a5f8282546109ac9190612a9b565b60335473ffffffffffffffffffffffffffffffffffffffff163314611a8e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105c9565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166124d65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016105c9565b611a8e5f54610100900460ff166125555760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016105c9565b611a8e336123e4565b828054828255905f5260205f209081019282156125d6579160200282015b828111156125d657825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90911617825560209092019160019091019061257c565b506125e292915061261f565b5090565b828054828255905f5260205f209081019282156125d6579160200282015b828111156125d6578251825591602001919060010190612604565b5b808211156125e2575f8155600101612620565b5f60208284031215612643575f80fd5b5035919050565b5f806020838503121561265b575f80fd5b823567ffffffffffffffff80821115612672575f80fd5b818501915085601f830112612685575f80fd5b813581811115612693575f80fd5b86602060c0830285010111156126a7575f80fd5b60209290920196919550909350505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146126dc575f80fd5b919050565b5f602082840312156126f1575f80fd5b6126fa826126b9565b9392505050565b5f8060408385031215612712575f80fd5b50508035926020909101359150565b602080825282518282018190525f919060409081850190868401855b82811015612797578151805185528681015173ffffffffffffffffffffffffffffffffffffffff16878601528581015186860152606080820151908601526080908101519085015260a0909301929085019060010161273d565b5091979650505050505050565b602080825282518282018190525f919060409081850190868401855b82811015612797578151805185528681015173ffffffffffffffffffffffffffffffffffffffff16878601528581015186860152606080820151908601526080808201519086015260a0908101519085015260c090930192908501906001016127c0565b5f8060208385031215612835575f80fd5b823567ffffffffffffffff8082111561284c575f80fd5b818501915085601f83011261285f575f80fd5b81358181111561286d575f80fd5b8660208260051b85010111156126a7575f80fd5b5f815180845260208085019450602084015f5b838110156128b057815187529582019590820190600101612894565b509495945050505050565b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b838110156129db578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc001855281518051845287810151888501528681015160c0888601819052815190860181905260e08601918a01905f905b8082101561297457825173ffffffffffffffffffffffffffffffffffffffff168452928b0192918b01916001919091019061293e565b5050506060808301518683038288015261298e8382612881565b92505050608080830151868303828801526129a98382612881565b9250505060a080830151925085820381870152506129c78183612881565b9689019694505050908601906001016128e2565b509098975050505050505050565b5f80604083850312156129fa575f80fd5b612a03836126b9565b946020939093013593505050565b5f8060208385031215612a22575f80fd5b823567ffffffffffffffff80821115612a39575f80fd5b818501915085601f830112612a4c575f80fd5b813581811115612a5a575f80fd5b86602060a0830285010111156126a7575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115612aae57612aae612a6e565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b81810381811115612aae57612aae612a6e565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612b5157612b51612a6e565b5060010190565b5f60208284031215612b68575f80fd5b5051919050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41833603018112612ba1575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612bde575f80fd5b83018035915067ffffffffffffffff821115612bf8575f80fd5b6020019150600581901b3603821315612c0f575f80fd5b9250929050565b8082028115828204841417612aae57612aae612a6e565b5f82612c60577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b858152608060208083018290529082018590525f90869060a08401835b88811015612cbb5773ffffffffffffffffffffffffffffffffffffffff612ca8856126b9565b1682529282019290820190600101612c82565b508481036040860152612cce8188612881565b925050508281036060840152612ce48185612881565b9897505050505050505056fea164736f6c6343000818000a +0x608060405234801561000f575f80fd5b506004361061019a575f3560e01c80637828a905116100e8578063a24231e811610093578063cd6dc6871161006e578063cd6dc687146104f0578063d557714114610503578063f2fde38b1461052a578063fe49dbc91461053d575f80fd5b8063a24231e814610405578063a795f40914610495578063cb6293e8146104d0575f80fd5b8063807de443116100c3578063807de443146103995780638da5cb5b146103c05780638e21d5fb146103de575f80fd5b80637828a905146102b757806378f908e1146102de5780637dc0d1d014610379575f80fd5b8063484f8d0f1161014857806364b4abe31161012357806364b4abe31461027c5780636ea0396e1461029c578063715018a6146102af575f80fd5b8063484f8d0f146102405780634c69c00f146102495780634e3ca4061461025c575f80fd5b80632fbf6487116101785780632fbf6487146101d85780633d9353fe146101e157806341ed047f1461022d575f80fd5b80630776c0f71461019e57806310c9873f146101ba5780631511e1b1146101cf575b5f80fd5b6101a7606c5481565b6040519081526020015b60405180910390f35b6101cd6101c8366004612658565b610550565b005b6101a760695481565b6101a7606b5481565b6102087f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b1565b6101cd61023b36600461266f565b610676565b6101a7606a5481565b6101cd610257366004612706565b6109b5565b61026f61026a366004612726565b610a67565b6040516101b19190612746565b61028f61028a366004612726565b610bff565b6040516101b191906127c9565b6101cd6102aa366004612849565b610da0565b6101cd611aa2565b6102087f000000000000000000000000000000000000000000000000000000000000000081565b6103376102ec366004612658565b60666020525f9081526040902080546001820154600283015460038401546004850154600590950154939473ffffffffffffffffffffffffffffffffffffffff909316939192909186565b6040805196875273ffffffffffffffffffffffffffffffffffffffff9095166020870152938501929092526060840152608083015260a082015260c0016101b1565b6065546102089073ffffffffffffffffffffffffffffffffffffffff1681565b6102087f000000000000000000000000000000000000000000000000000000000000000081565b60335473ffffffffffffffffffffffffffffffffffffffff16610208565b6102087f000000000000000000000000000000000000000000000000000000000000000081565b610458610413366004612658565b60676020525f908152604090208054600182015460028301546003840154600490940154929373ffffffffffffffffffffffffffffffffffffffff9092169290919085565b6040805195865273ffffffffffffffffffffffffffffffffffffffff9094166020860152928401919091526060830152608082015260a0016101b1565b6104bb6104a3366004612658565b60686020525f90815260409020805460019091015482565b604080519283526020830191909152016101b1565b6104e36104de366004612726565b611ab5565b6040516101b191906128e0565b6101cd6104fe366004612a0e565b611d69565b6102087f000000000000000000000000000000000000000000000000000000000000000081565b6101cd610538366004612706565b611ffa565b6101cd61054b366004612a36565b612097565b60655473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105d25760405162461bcd60e51b815260206004820152601360248201527f6f6e6c79206f7261636c6520616c6c6f7765640000000000000000000000000060448201526064015b60405180910390fd5b606c54156106225760405162461bcd60e51b815260206004820152600b60248201527f616c72656164792073657400000000000000000000000000000000000000000060448201526064016105c9565b5f81116106715760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964206c617465737420626c6f636b00000000000000000000000060448201526064016105c9565b606c55565b60655473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106f35760405162461bcd60e51b815260206004820152601360248201527f6f6e6c79206f7261636c6520616c6c6f7765640000000000000000000000000060448201526064016105c9565b806107405760405162461bcd60e51b815260206004820152601760248201527f656d707479206261746368207375626d697373696f6e7300000000000000000060448201526064016105c9565b5f5b8181101561096157806069546107589190612ac0565b83838381811061076a5761076a612ad9565b905060c002015f0135146107c05760405162461bcd60e51b815260206004820152600d60248201527f696e76616c696420696e6465780000000000000000000000000000000000000060448201526064016105c9565b6040518060c001604052808484848181106107dd576107dd612ad9565b905060c002015f013581526020018484848181106107fd576107fd612ad9565b905060c0020160200160208101906108159190612706565b73ffffffffffffffffffffffffffffffffffffffff16815260200184848481811061084257610842612ad9565b905060c0020160400135815260200184848481811061086357610863612ad9565b905060c0020160600135815260200184848481811061088457610884612ad9565b905060c002016080013581526020018484848181106108a5576108a5612ad9565b905060c0020160a0013581525060665f8585858181106108c7576108c7612ad9565b60c002919091013582525060208082019290925260409081015f208351815591830151600180840180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90931692909217909155908301516002830155606083015160038301556080830151600483015560a09092015160059091015501610742565b506069546040518281527f1c517c9850aa84483b0b2434e58bab4c7967f0b1a34d8b18a6ad22436add010e9060200160405180910390a28181905060695f8282546109ac9190612ac0565b90915550505050565b6109bd6123a2565b73ffffffffffffffffffffffffffffffffffffffff8116610a205760405162461bcd60e51b815260206004820152601660248201527f696e76616c6964206f7261636c6520616464726573730000000000000000000060448201526064016105c9565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b606082821015610ab95760405162461bcd60e51b815260206004820152600d60248201527f696e76616c696420696e6465780000000000000000000000000000000000000060448201526064016105c9565b610ac38383612b06565b610ace906001612ac0565b67ffffffffffffffff811115610ae657610ae6612b19565b604051908082528060200260200182016040528015610b5a57816020015b610b476040518060a001604052805f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81525090565b815260200190600190039081610b045790505b509050825b828111610bf8575f81815260676020908152604091829020825160a08101845281548152600182015473ffffffffffffffffffffffffffffffffffffffff16928101929092526002810154928201929092526003820154606082015260049091015460808201528251839083908110610bda57610bda612ad9565b60200260200101819052508080610bf090612b46565b915050610b5f565b5092915050565b606082821015610c515760405162461bcd60e51b815260206004820152600d60248201527f696e76616c696420696e6465780000000000000000000000000000000000000060448201526064016105c9565b610c5b8383612b06565b610c66906001612ac0565b67ffffffffffffffff811115610c7e57610c7e612b19565b604051908082528060200260200182016040528015610cf857816020015b610ce56040518060c001604052805f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f81525090565b815260200190600190039081610c9c5790505b509050825b828111610bf8575f81815260666020908152604091829020825160c08101845281548152600182015473ffffffffffffffffffffffffffffffffffffffff1692810192909252600281015492820192909252600382015460608201526004820154608082015260059091015460a08201528251839083908110610d8257610d82612ad9565b60200260200101819052508080610d9890612b46565b915050610cfd565b60655473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e1d5760405162461bcd60e51b815260206004820152601360248201527f6f6e6c79206f7261636c6520616c6c6f7765640000000000000000000000000060448201526064016105c9565b80610e6a5760405162461bcd60e51b815260206004820152601360248201527f656d707479207265776172642065706f6368730000000000000000000000000060448201526064016105c9565b5f606c5411610ebb5760405162461bcd60e51b815260206004820152601960248201527f737461727420626c6f636b2073686f756c64206265207365740000000000000060448201526064016105c9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663766718086040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f24573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f489190612b7d565b606b54600190610f59908490612ac0565b610f639190612b06565b10610fd55760405162461bcd60e51b8152602060048201526024808201527f756e66696e69736865642065706f6368732063616e6e6f742062652075706c6f60448201527f616465640000000000000000000000000000000000000000000000000000000060648201526084016105c9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a29bfb2c600184849050606b546110249190612ac0565b61102e9190612b06565b6040518263ffffffff1660e01b815260040161104c91815260200190565b5f604051808303815f87803b158015611063575f80fd5b505af1158015611075573d5f803e3d5ffd5b505f9250829150505b82811015611a37575f84848381811061109957611099612ad9565b90506020028101906110ab9190612b94565b6110b9906040810190612bd0565b905090505f8585848181106110d0576110d0612ad9565b90506020028101906110e29190612b94565b606b54903591506110f4908490612ac0565b81146111425760405162461bcd60e51b815260206004820152601360248201527f696e76616c69642065706f636820696e6465780000000000000000000000000060448201526064016105c9565b8186868581811061115557611155612ad9565b90506020028101906111679190612b94565b611175906060810190612bd0565b90501480156111b657508186868581811061119257611192612ad9565b90506020028101906111a49190612b94565b6111b2906080810190612bd0565b9050145b80156111f45750818686858181106111d0576111d0612ad9565b90506020028101906111e29190612b94565b6111f09060a0810190612bd0565b9050145b6112405760405162461bcd60e51b815260206004820152601360248201527f696e76616c69642064617461206c656e6774680000000000000000000000000060448201526064016105c9565b85858481811061125257611252612ad9565b90506020028101906112649190612b94565b611272906020013585612ac0565b93506040518060c0016040528082815260200187878681811061129757611297612ad9565b90506020028101906112a99190612b94565b6020013581526020018787868181106112c4576112c4612ad9565b90506020028101906112d69190612b94565b6112e4906040810190612bd0565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050509082525060200187878681811061132c5761132c612ad9565b905060200281019061133e9190612b94565b61134c906060810190612bd0565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050509082525060200187878681811061139457611394612ad9565b90506020028101906113a69190612b94565b6113b4906080810190612bd0565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152505050908252506020018787868181106113fc576113fc612ad9565b905060200281019061140e9190612b94565b61141c9060a0810190612bd0565b808060200260200160405190810160405280939291908181526020018383602002808284375f92018290525093909452505083815260686020908152604091829020845181558482015160018201559184015180519293506114879260028501929190910190612583565b50606082015180516114a391600384019160209091019061260b565b50608082015180516114bf91600484019160209091019061260b565b5060a082015180516114db91600584019160209091019061260b565b50506040517f944fa746000000000000000000000000000000000000000000000000000000008152600481018390525f91507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063944fa74690602401602060405180830381865afa158015611569573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061158d9190612b7d565b90505f805f8567ffffffffffffffff8111156115ab576115ab612b19565b6040519080825280602002602001820160405280156115d4578160200160208202803683370190505b5090505f8667ffffffffffffffff8111156115f1576115f1612b19565b60405190808252806020026020018201604052801561161a578160200160208202803683370190505b5090505f5b8781101561189b5760148c8c8b81811061163b5761163b612ad9565b905060200281019061164d9190612b94565b61165b9060a0810190612bd0565b8381811061166b5761166b612ad9565b9050602002013511156116c05760405162461bcd60e51b815260206004820152601d60248201527f696e76616c69642073657175656e6365727320636f6d6d697373696f6e00000060448201526064016105c9565b8b8b8a8181106116d2576116d2612ad9565b90506020028101906116e49190612b94565b6116f2906080810190612bd0565b8281811061170257611702612ad9565b90506020020135846117149190612ac0565b93508b8b8a81811061172857611728612ad9565b905060200281019061173a9190612b94565b611748906060810190612bd0565b8281811061175857611758612ad9565b905060200201358561176a9190612ac0565b94505f6305f5e1008d8d8c81811061178457611784612ad9565b90506020028101906117969190612b94565b6117a4906080810190612bd0565b848181106117b4576117b4612ad9565b90506020020135886117c69190612c3b565b6117d09190612c52565b905060648d8d8c8181106117e6576117e6612ad9565b90506020028101906117f89190612b94565b6118069060a0810190612bd0565b8481811061181657611816612ad9565b90506020020135826118289190612c3b565b6118329190612c52565b83838151811061184457611844612ad9565b60200260200101818152505082828151811061186257611862612ad9565b6020026020010151816118759190612b06565b84838151811061188757611887612ad9565b60209081029190910101525060010161161f565b508a8a898181106118ae576118ae612ad9565b90506020028101906118c09190612b94565b6020013584146119125760405162461bcd60e51b815260206004820152601960248201527f696e76616c69642073657175656e6365727320626c6f636b730000000000000060448201526064016105c9565b6305f5e1008311156119665760405162461bcd60e51b815260206004820152601960248201527f696e76616c69642073657175656e6365727320726174696f730000000000000060448201526064016105c9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663cdd0c50e878d8d8c8181106119b5576119b5612ad9565b90506020028101906119c79190612b94565b6119d5906040810190612bd0565b86866040518663ffffffff1660e01b81526004016119f7959493929190612c8a565b5f604051808303815f87803b158015611a0e575f80fd5b505af1158015611a20573d5f803e3d5ffd5b50506001909901985061107e975050505050505050565b50606b546040518381527f4aa68efd05426e59a9d43654a55a2a74c3e8840894d6e291f8f83085e3a6d1ea9060200160405180910390a280606c5f828254611a7f9190612ac0565b9091555050606b80548391905f90611a98908490612ac0565b9091555050505050565b611aaa6123a2565b611ab35f612409565b565b606082821015611b075760405162461bcd60e51b815260206004820152600d60248201527f696e76616c696420696e6465780000000000000000000000000000000000000060448201526064016105c9565b611b118383612b06565b611b1c906001612ac0565b67ffffffffffffffff811115611b3457611b34612b19565b604051908082528060200260200182016040528015611b9c57816020015b611b896040518060c001604052805f81526020015f8152602001606081526020016060815260200160608152602001606081525090565b815260200190600190039081611b525790505b509050825b828111610bf8575f81815260686020908152604091829020825160c0810184528154815260018201548184015260028201805485518186028101860187528181529295939493860193830182828015611c2e57602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611c03575b5050505050815260200160038201805480602002602001604051908101604052809291908181526020018280548015611c8457602002820191905f5260205f20905b815481526020019060010190808311611c70575b5050505050815260200160048201805480602002602001604051908101604052809291908181526020018280548015611cda57602002820191905f5260205f20905b815481526020019060010190808311611cc6575b5050505050815260200160058201805480602002602001604051908101604052809291908181526020018280548015611d3057602002820191905f5260205f20905b815481526020019060010190808311611d1c575b505050505081525050828281518110611d4b57611d4b612ad9565b60200260200101819052508080611d6190612b46565b915050611ba1565b5f54610100900460ff1615808015611d8757505f54600160ff909116105b80611da05750303b158015611da057505f5460ff166001145b611e125760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016105c9565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015611e6e575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b815f03611ee35760405162461bcd60e51b815260206004820152602360248201527f696e76616c6964206e657874206261746368207375626d697373696f6e20696e60448201527f646578000000000000000000000000000000000000000000000000000000000060648201526084016105c9565b73ffffffffffffffffffffffffffffffffffffffff8316611f465760405162461bcd60e51b815260206004820152601660248201527f696e76616c6964206f7261636c6520616464726573730000000000000000000060448201526064016105c9565b611f4e61247f565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851617905560698290558015611ff5575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6120026123a2565b73ffffffffffffffffffffffffffffffffffffffff811661208b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016105c9565b61209481612409565b50565b60655473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121145760405162461bcd60e51b815260206004820152601360248201527f6f6e6c79206f7261636c6520616c6c6f7765640000000000000000000000000060448201526064016105c9565b806121615760405162461bcd60e51b815260206004820152601360248201527f656d70747920726f6c6c75702065706f6368730000000000000000000000000060448201526064016105c9565b5f5b818110156123575780606a546121799190612ac0565b83838381811061218b5761218b612ad9565b905060a002015f0135146121e15760405162461bcd60e51b815260206004820152600d60248201527f696e76616c696420696e6465780000000000000000000000000000000000000060448201526064016105c9565b6040518060a001604052808484848181106121fe576121fe612ad9565b905060a002015f0135815260200184848481811061221e5761221e612ad9565b905060a0020160200160208101906122369190612706565b73ffffffffffffffffffffffffffffffffffffffff16815260200184848481811061226357612263612ad9565b905060a0020160400135815260200184848481811061228457612284612ad9565b905060a002016060013581526020018484848181106122a5576122a5612ad9565b905060a002016080013581525060675f8585858181106122c7576122c7612ad9565b60a002919091013582525060208082019290925260409081015f208351815591830151600180840180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909316929092179091559083015160028301556060830151600383015560809092015160049091015501612163565b50606a546040518281527f0c53377f3eed25c9883c67adabc3f817b4fdcde29f550a6a26c0676ed29929299060200160405180910390a281819050606a5f8282546109ac9190612ac0565b60335473ffffffffffffffffffffffffffffffffffffffff163314611ab35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105c9565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166124fb5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016105c9565b611ab35f54610100900460ff1661257a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016105c9565b611ab333612409565b828054828255905f5260205f209081019282156125fb579160200282015b828111156125fb57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9091161782556020909201916001909101906125a1565b50612607929150612644565b5090565b828054828255905f5260205f209081019282156125fb579160200282015b828111156125fb578251825591602001919060010190612629565b5b80821115612607575f8155600101612645565b5f60208284031215612668575f80fd5b5035919050565b5f8060208385031215612680575f80fd5b823567ffffffffffffffff80821115612697575f80fd5b818501915085601f8301126126aa575f80fd5b8135818111156126b8575f80fd5b86602060c0830285010111156126cc575f80fd5b60209290920196919550909350505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114612701575f80fd5b919050565b5f60208284031215612716575f80fd5b61271f826126de565b9392505050565b5f8060408385031215612737575f80fd5b50508035926020909101359150565b602080825282518282018190525f919060409081850190868401855b828110156127bc578151805185528681015173ffffffffffffffffffffffffffffffffffffffff16878601528581015186860152606080820151908601526080908101519085015260a09093019290850190600101612762565b5091979650505050505050565b602080825282518282018190525f919060409081850190868401855b828110156127bc578151805185528681015173ffffffffffffffffffffffffffffffffffffffff16878601528581015186860152606080820151908601526080808201519086015260a0908101519085015260c090930192908501906001016127e5565b5f806020838503121561285a575f80fd5b823567ffffffffffffffff80821115612871575f80fd5b818501915085601f830112612884575f80fd5b813581811115612892575f80fd5b8660208260051b85010111156126cc575f80fd5b5f815180845260208085019450602084015f5b838110156128d5578151875295820195908201906001016128b9565b509495945050505050565b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b83811015612a00578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc001855281518051845287810151888501528681015160c0888601819052815190860181905260e08601918a01905f905b8082101561299957825173ffffffffffffffffffffffffffffffffffffffff168452928b0192918b019160019190910190612963565b505050606080830151868303828801526129b383826128a6565b92505050608080830151868303828801526129ce83826128a6565b9250505060a080830151925085820381870152506129ec81836128a6565b968901969450505090860190600101612907565b509098975050505050505050565b5f8060408385031215612a1f575f80fd5b612a28836126de565b946020939093013593505050565b5f8060208385031215612a47575f80fd5b823567ffffffffffffffff80821115612a5e575f80fd5b818501915085601f830112612a71575f80fd5b813581811115612a7f575f80fd5b86602060a0830285010111156126cc575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115612ad357612ad3612a93565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b81810381811115612ad357612ad3612a93565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612b7657612b76612a93565b5060010190565b5f60208284031215612b8d575f80fd5b5051919050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41833603018112612bc6575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612c03575f80fd5b83018035915067ffffffffffffffff821115612c1d575f80fd5b6020019150600581901b3603821315612c34575f80fd5b9250929050565b8082028115828204841417612ad357612ad3612a93565b5f82612c85577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b858152608060208083018290529082018590525f90869060a08401835b88811015612ce05773ffffffffffffffffffffffffffffffffffffffff612ccd856126de565b1682529282019290820190600101612ca7565b508481036040860152612cf381886128a6565b925050508281036060840152612d0981856128a6565b9897505050505050505056fea164736f6c6343000818000a diff --git a/bindings/bin/rollup_deployed.hex b/bindings/bin/rollup_deployed.hex index f9409d1de..508e6435f 100644 --- a/bindings/bin/rollup_deployed.hex +++ b/bindings/bin/rollup_deployed.hex @@ -1 +1 @@ -0x6080604052600436106102e5575f3560e01c8063715018a611610186578063abc8d68d116100dc578063ddd8a3dc11610087578063e3fff1dd11610062578063e3fff1dd1461096e578063ef6602ba1461098d578063f2fde38b146109a2575f80fd5b8063ddd8a3dc14610911578063de8b303514610930578063e33491a71461094f575f80fd5b8063caf62533116100b7578063caf625331461086d578063ce5db8d6146108dd578063d279c191146108f2575f80fd5b8063abc8d68d1461080e578063b31a77d314610839578063bedb86fb1461084e575f80fd5b80638da5cb5b1161013c57806397fc007c1161011757806397fc007c146107ac578063a415d8dc146107cb578063a479265d146107f9575f80fd5b80638da5cb5b146106ae5780638f1d3776146106cb578063910129d41461077b575f80fd5b80637c41b6ac1161016c5780637c41b6ac1461066f57806388b1ea09146106825780638d644bb71461069b575f80fd5b8063715018a61461063c578063728cdbca14610650575f80fd5b80632571098d1161023b578063404fa7b1116101f15780635ef7a94a116101cc5780635ef7a94a1461059e5780635f77cf1d146105d15780636c578c1d1461061d575f80fd5b8063404fa7b11461053a57806357e0af6c146105685780635c975abb14610587575f80fd5b806336622a301161022157806336622a30146104dd5780633b70c18a146104fc5780633fdeecb21461051b575f80fd5b80632571098d1461047b5780632b7ac3f3146104a6575f80fd5b8063121dcd501161029b5780631e228302116102765780631e2283021461041257806321e2f9e0146104315780632362f03e14610450575f80fd5b8063121dcd50146103b857806318463fb0146103cd57806318af3b2b146103e2575f80fd5b80630ceb6780116102cb5780630ceb67801461035657806310d4458314610377578063116a1f4214610396575f80fd5b806304d77215146102f0578063059def6114610333575f80fd5b366102ec57005b5f80fd5b3480156102fb575f80fd5b5061031e61030a366004614860565b60a46020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561033e575f80fd5b50610348609d5481565b60405190815260200161032a565b348015610361575f80fd5b5061037561037036600461488b565b6109c1565b005b348015610382575f80fd5b506103756103913660046148eb565b610a93565b3480156103a1575f80fd5b5061031e6103b0366004614860565b609d54101590565b3480156103c3575f80fd5b50610348609e5481565b3480156103d8575f80fd5b5061034860a85481565b3480156103ed575f80fd5b5061031e6103fc366004614860565b5f90815260a16020526040902060030154421090565b34801561041d575f80fd5b5061037561042c366004614860565b610dd2565b34801561043c575f80fd5b5061031e61044b366004614860565b610e7d565b34801561045b575f80fd5b5061034861046a366004614860565b5f90815260a1602052604090205490565b348015610486575f80fd5b50610348610495366004614860565b60a06020525f908152604090205481565b3480156104b1575f80fd5b50609c546104c5906001600160a01b031681565b6040516001600160a01b03909116815260200161032a565b3480156104e8575f80fd5b506103756104f736600461494f565b610eae565b348015610507575f80fd5b50609b546104c5906001600160a01b031681565b348015610526575f80fd5b506103756105353660046148eb565b611122565b348015610545575f80fd5b50610559610554366004614860565b6117d7565b60405161032a93929190614a17565b348015610573575f80fd5b50610375610582366004614860565b61187f565b348015610592575f80fd5b5060655460ff1661031e565b3480156105a9575f80fd5b506105bd6105b8366004614860565b611922565b60405161032a989796959493929190614a3e565b3480156105dc575f80fd5b506106047f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff909116815260200161032a565b348015610628575f80fd5b5061037561063736600461488b565b6119ec565b348015610647575f80fd5b50610375611aa9565b34801561065b575f80fd5b5061037561066a366004614a8a565b611abc565b61037561067d366004614aeb565b611dff565b34801561068d575f80fd5b5060a75461031e9060ff1681565b6103756106a9366004614b58565b6128a0565b3480156106b9575f80fd5b506033546001600160a01b03166104c5565b3480156106d6575f80fd5b506107376106e5366004614860565b60a56020525f9081526040902080546001820154600283015460039093015467ffffffffffffffff831693680100000000000000009093046001600160a01b0316929060ff8082169161010090041686565b6040805167ffffffffffffffff90971687526001600160a01b03909516602087015293850192909252606084015215156080830152151560a082015260c00161032a565b348015610786575f80fd5b5061031e610795366004614860565b5f90815260a5602052604090206003015460ff1690565b3480156107b7575f80fd5b506103756107c636600461488b565b612e0c565b3480156107d6575f80fd5b5061031e6107e536600461488b565b609f6020525f908152604090205460ff1681565b348015610804575f80fd5b5061034860995481565b348015610819575f80fd5b5061034861082836600461488b565b60a66020525f908152604090205481565b348015610844575f80fd5b5061034860a95481565b348015610859575f80fd5b50610375610868366004614b7e565b612eef565b348015610878575f80fd5b506108b5610887366004614860565b60a16020525f9081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a00161032a565b3480156108e8575f80fd5b5061034860985481565b3480156108fd575f80fd5b5061037561090c36600461488b565b613000565b34801561091c575f80fd5b506097546104c5906001600160a01b031681565b34801561093b575f80fd5b5061031e61094a366004614860565b61307c565b34801561095a575f80fd5b50610375610969366004614860565b6130c6565b348015610979575f80fd5b50610375610988366004614860565b613737565b348015610998575f80fd5b50610348609a5481565b3480156109ad575f80fd5b506103756109bc36600461488b565b6137da565b6109c9613867565b6001600160a01b0381165f908152609f602052604090205460ff1615610a365760405162461bcd60e51b815260206004820152601f60248201527f6163636f756e7420697320616c72656164792061206368616c6c656e6765720060448201526064015b60405180910390fd5b6001600160a01b0381165f818152609f6020908152604091829020805460ff1916600190811790915591519182527f7feb653c7b1f0d23daeed494225b3f28851cdc8973fcc653866d9b6e205fc00991015b60405180910390a250565b610a9b613867565b5f8111610aea5760405162461bcd60e51b815260206004820152601560248201527f636f756e74206d757374206265206e6f6e7a65726f00000000000000000000006044820152606401610a2d565b5f80610af685856138c1565b915091505f610b09836001015160c01c90565b5f81815260a160205260409020549091508214610b685760405162461bcd60e51b815260206004820152601460248201527f696e636f727265637420626174636820686173680000000000000000000000006044820152606401610a2d565b5f60a181610b768785614bc6565b81526020019081526020015f205f015414610bf85760405162461bcd60e51b8152602060048201526024808201527f726576657274696e67206d7573742073746172742066726f6d2074686520656e60448201527f64696e67000000000000000000000000000000000000000000000000000000006064820152608401610a2d565b609d548111610c6f5760405162461bcd60e51b815260206004820152602160248201527f63616e206f6e6c792072657665727420756e46696e616c697a6564206261746360448201527f68000000000000000000000000000000000000000000000000000000000000006064820152608401610a2d565b610c7a600182614bd9565b609e555b8315610dca575f81815260a1602052604081205560a95415801590610ca4575060a95481145b15610d80575f81815260a56020526040902060030154610100900460ff16610d12575f81815260a560209081526040808320600181015490546801000000000000000090046001600160a01b0316845260a69092528220805491929091610d0c908490614bc6565b90915550505b5f81815260a56020526040812080547fffffffff00000000000000000000000000000000000000000000000000000000168155600181018290556002810182905560030180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016905560a9555b604051829082907ecae2739091badfd91c373f0a16cede691e0cd25bb80cff77dd5caeb4710146905f90a36001015f81815260a160205260409020545f1990940193915081610c7e575b505050505050565b610dda613867565b5f81118015610deb5750609a548114155b610e375760405162461bcd60e51b815260206004820152601b60248201527f696e76616c6964206e6577206d61784e756d5478496e4368756e6b00000000006044820152606401610a2d565b609a80549082905560408051828152602081018490527f6d0f49971e462a2f78a25906f145cb29cd5e7bd01ebf681ac8f58cb814e5877a91015b60405180910390a15050565b5f81815260a1602052604081206002015415801590610ea857505f82815260a1602052604090205415155b92915050565b60a95415610efe5760405162461bcd60e51b815260206004820152600b60248201527f6e656564207265766572740000000000000000000000000000000000000000006044820152606401610a2d565b610f066138dc565b610f198567ffffffffffffffff1661307c565b610f655760405162461bcd60e51b815260206004820152601260248201527f626174636820696e206368616c6c656e676500000000000000000000000000006044820152606401610a2d565b67ffffffffffffffff85165f90815260a5602052604090206003810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010017905560a7805460ff191690556099546002909101544291610fc991614bc6565b116110ce5767ffffffffffffffff85165f90815260a560209081526040808320600301805460ff1916600117905560a3909152902060020180546110c991879161101290614bec565b80601f016020809104026020016040519081016040528092919081815260200182805461103e90614bec565b80156110895780601f1061106057610100808354040283529160200191611089565b820191905f5260205f20905b81548152906001019060200180831161106c57829003601f168201915b50505050506040518060400160405280600781526020017f54696d656f75740000000000000000000000000000000000000000000000000081525061392f565b61111b565b6110db8585858585613ab7565b61111b85336040518060400160405280600d81526020017f50726f6f66207375636365737300000000000000000000000000000000000000815250613e28565b5050505050565b61112a613867565b806111775760405162461bcd60e51b815260206004820152600f60248201527f7a65726f20737461746520726f6f7400000000000000000000000000000000006044820152606401610a2d565b5f805260a06020527fb84a74ec6ef4d0e83b6006dfaa014ab4026f9f3b97d186e604d29998a4e808ea54156111ee5760405162461bcd60e51b815260206004820152601660248201527f67656e6573697320626174636820696d706f72746564000000000000000000006044820152606401610a2d565b5f806111fa85856138c1565b915091505f61120a836019015190565b90505f611218845160f81c90565b90505f611229856011015160c01c90565b600986015160c01c600187015160c01c875160f81c010101905080156112915760405162461bcd60e51b815260206004820152601760248201527f6e6f7420616c6c206669656c647320617265207a65726f0000000000000000006044820152606401610a2d565b505f61129e856019015190565b036112eb5760405162461bcd60e51b815260206004820152600e60248201527f7a65726f206461746120686173680000000000000000000000000000000000006044820152606401610a2d565b5f6112f7856059015190565b146113445760405162461bcd60e51b815260206004820152601960248201527f6e6f6e7a65726f20706172656e742062617463682068617368000000000000006044820152606401610a2d565b7f010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c444014611370856039015190565b146113bd5760405162461bcd60e51b815260206004820152601660248201527f696e76616c69642076657273696f6e65642068617368000000000000000000006044820152606401610a2d565b6040805160a0808201835285825260208083018581524284860181815260608087019283525f608080890182815282805260a1885298517f32ae1b88a7d4f92d7e214b63c8ea04cd13e2faaa60c50f499f2254336d98f8825594517f32ae1b88a7d4f92d7e214b63c8ea04cd13e2faaa60c50f499f2254336d98f8835591517f32ae1b88a7d4f92d7e214b63c8ea04cd13e2faaa60c50f499f2254336d98f8845591517f32ae1b88a7d4f92d7e214b63c8ea04cd13e2faaa60c50f499f2254336d98f8855594517f32ae1b88a7d4f92d7e214b63c8ea04cd13e2faaa60c50f499f2254336d98f886558551610100810187527f010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c44401481528084018981528188018781529282018d815293820187815295820187815260c083018881528951808b01909a5260028a527f30780000000000000000000000000000000000000000000000000000000000008a88015260e08401998a5297805260a290955281517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342a90815590517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342b5591517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342c5591517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342d5592517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342e5590517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342f5591517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b34305591519091907f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b3431906116669082614cae565b5050604080516060810182525f808252602080830182815284518086018652600281527f30780000000000000000000000000000000000000000000000000000000000008184015294840194855291805260a3905281517f69b4e8f94ad9e612080e13aad01219472d8c2c7ae7aa6cdf175400ddc8c4ed3d90815590517f69b4e8f94ad9e612080e13aad01219472d8c2c7ae7aa6cdf175400ddc8c4ed3e5591519092507f69b4e8f94ad9e612080e13aad01219472d8c2c7ae7aa6cdf175400ddc8c4ed3f906117369082614cae565b50505f80805260a06020527fb84a74ec6ef4d0e83b6006dfaa014ab4026f9f3b97d186e604d29998a4e808ea8790556040518592507f2c32d4ae151744d0bf0b9464a3e897a1d17ed2f1af71f7c9a75f12ce0d28238f908290a3604080518681525f60208201819052859290917f26ba82f907317eedc97d0cbef23de76a43dd6edb563bdb6e9407645b950a7a2d910160405180910390a350505050505050565b60a36020525f9081526040902080546001820154600283018054929391926117fe90614bec565b80601f016020809104026020016040519081016040528092919081815260200182805461182a90614bec565b80156118755780601f1061184c57610100808354040283529160200191611875565b820191905f5260205f20905b81548152906001019060200180831161185857829003601f168201915b5050505050905083565b611887613867565b5f8111801561189857506099548114155b6118e45760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964206e65772070726f6f662077696e646f7700000000000000006044820152606401610a2d565b609980549082905560408051828152602081018490527f1e3a2094feb4b696dd3d7caea38ad2f41dbdcac3fa3943c7a693aff8a64b0a619101610e71565b60a2602052805f5260405f205f91509050805f01549080600101549080600201549080600301549080600401549080600501549080600601549080600701805461196b90614bec565b80601f016020809104026020016040519081016040528092919081815260200182805461199790614bec565b80156119e25780601f106119b9576101008083540402835291602001916119e2565b820191905f5260205f20905b8154815290600101906020018083116119c557829003601f168201915b5050505050905088565b6119f4613867565b6001600160a01b0381165f908152609f602052604090205460ff16611a5b5760405162461bcd60e51b815260206004820152601b60248201527f6163636f756e74206973206e6f742061206368616c6c656e67657200000000006044820152606401610a2d565b6001600160a01b0381165f818152609f60209081526040808320805460ff19169055519182527f7feb653c7b1f0d23daeed494225b3f28851cdc8973fcc653866d9b6e205fc0099101610a88565b611ab1613867565b611aba5f613eca565b565b5f54610100900460ff1615808015611ada57505f54600160ff909116105b80611af35750303b158015611af357505f5460ff166001145b611b655760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610a2d565b5f805460ff191660011790558015611ba3575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6001600160a01b0386161580611bc057506001600160a01b038516155b15611bf7576040517fecc6fdf000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038716611c4d5760405162461bcd60e51b815260206004820152601b60248201527f696e76616c6964206c31207374616b696e6720636f6e747261637400000000006044820152606401610a2d565b611c55613f33565b611c5d613fb7565b609780546001600160a01b03808a167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255609b8054898416908316179055609c80549288169290911682179055609a859055609884905560998390556040515f907f728af3d16a5760405e27a082c98ab272e9f0a1d02f0085d41532a26093aedd96908290a3604080515f8152602081018690527f6d0f49971e462a2f78a25906f145cb29cd5e7bd01ebf681ac8f58cb814e5877a910160405180910390a1604080515f8152602081018590527fa577f4223f91f74e2dad65bbb8c30807587ae95d0d34288057bb3ec0d398a437910160405180910390a1604080515f8152602081018490527f1e3a2094feb4b696dd3d7caea38ad2f41dbdcac3fa3943c7a693aff8a64b0a61910160405180910390a18015611df6575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6097546001600160a01b0316636f1e8533336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015611e6b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e8f9190614d6a565b611edb5760405162461bcd60e51b815260206004820152601360248201527f6f6e6c79207374616b657220616c6c6f776564000000000000000000000000006044820152606401610a2d565b60a95415611f2b5760405162461bcd60e51b815260206004820152600b60248201527f6e656564207265766572740000000000000000000000000000000000000000006044820152606401610a2d565b611f336138dc565b611f406020830183614d85565b60ff1615611f905760405162461bcd60e51b815260206004820152600f60248201527f696e76616c69642076657273696f6e00000000000000000000000000000000006044820152606401610a2d565b5f611f9e6040840184614da5565b91505080611fee5760405162461bcd60e51b815260206004820152600e60248201527f626174636820697320656d7074790000000000000000000000000000000000006044820152606401610a2d565b608083013561203f5760405162461bcd60e51b815260206004820152601b60248201527f70726576696f757320737461746520726f6f74206973207a65726f00000000006044820152606401610a2d565b60a08301356120905760405162461bcd60e51b815260206004820152601660248201527f6e657720737461746520726f6f74206973207a65726f000000000000000000006044820152606401610a2d565b5f806120a76120a26020870187614e09565b6138c1565b915091505f6120ba836001015160c01c90565b5f81815260a1602052604090205490915082146121195760405162461bcd60e51b815260206004820152601b60248201527f696e636f727265637420706172656e74206261746368206861736800000000006044820152606401610a2d565b5f60a181612128846001614bc6565b81526020019081526020015f205f0154146121855760405162461bcd60e51b815260206004820152601760248201527f626174636820616c726561647920636f6d6d69747465640000000000000000006044820152606401610a2d565b609e5481146121d65760405162461bcd60e51b815260206004820152601560248201527f696e636f727265637420626174636820696e64657800000000000000000000006044820152606401610a2d565b5f81815260a260205260409020600301546080870135146122395760405162461bcd60e51b815260206004820152601d60248201527f696e636f72726563742070726576696f757320737461746520726f6f740000006044820152606401610a2d565b5f612248846011015160c01c90565b604080516020880281019091529091505f805b87811015612309575f6122f08461227560408e018e614da5565b8581811061228557612285614e6a565b90506020028101906122979190614e09565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505085888f80606001906122eb9190614e09565b61403b565b948501946020949094019392909201915060010161225b565b5061231760608a018a614e09565b905061010060ff830104602002146123715760405162461bcd60e51b815260206004820152601360248201527f77726f6e67206269746d6170206c656e677468000000000000000000000000006044820152606401610a2d565b602087810280840320604051975060019590950194906123a1908890612399908d018d614d85565b60ff166141fb565b60c085811b600189015282811b600989015284901b601188015260198701819052605987018690526123df876123da60608d018d614e09565b614202565b5f8049156123ee575f49612410565b7f010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c4440145b6039890181905290506040518060a001604052806124498a8e80606001906124389190614e09565b61244491506079614bc6565b902090565b815260209081019061245d908e018e614d85565b60ff168152602001428152602001609854426124799190614bc6565b81526020016124f361248e60408f018f614da5565b61249960018f614bd9565b8181106124a8576124a8614e6a565b90506020028101906124ba9190614e09565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061420e92505050565b81525060a15f8881526020019081526020015f205f820151815f0155602082015181600101556040820151816002015560608201518160030155608082015181600401559050506040518061010001604052808281526020018381526020018c6080013581526020018c60a0013581526020018c60c0013581526020018481526020018681526020018c806060019061258c9190614e09565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525093909452505088815260a2602090815260409182902084518155908401516001820155908301516002820155606083015160038201556080830151600482015560a0830151600582015560c0830151600682015560e083015190915060078201906126269082614cae565b50506040805160018082528183019092525f9250906020808301908036833701905050905033815f8151811061265e5761265e614e6a565b60200260200101906001600160a01b031690816001600160a01b03168152505060405180606001604052806126905f90565b81526020018c80602001906126a59190614e09565b6040516126b3929190614e97565b60405180910390208152602001826040516020016126d19190614ee9565b60408051601f1981840301815291815291525f89815260a3602090815290829020835181559083015160018201559082015160028201906127129082614cae565b505050609e8790555f87905260a36020526097546001600160a01b031663c0af545b61273e8d80614e09565b81019061274b9190614fc4565b6127648e806020019061275e9190614e09565b5f61425b565b60a35f8c81526020019081526020015f205f01548f80604001906127889190614e09565b6040518663ffffffff1660e01b81526004016127a8959493929190615027565b602060405180830381865afa1580156127c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127e79190614d6a565b6128595760405162461bcd60e51b815260206004820152602160248201527f746865207369676e617475726520766572696669636174696f6e206661696c6560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152608401610a2d565b5f87815260a16020526040808220549051909189917f2c32d4ae151744d0bf0b9464a3e897a1d17ed2f1af71f7c9a75f12ce0d28238f9190a3505050505050505050505050565b335f908152609f602052604090205460ff166128fe5760405162461bcd60e51b815260206004820152601960248201527f63616c6c6572206368616c6c656e67657220616c6c6f776564000000000000006044820152606401610a2d565b60a9541561294e5760405162461bcd60e51b815260206004820152600b60248201527f6e656564207265766572740000000000000000000000000000000000000000006044820152606401610a2d565b6129566138dc565b60a75460ff16156129a95760405162461bcd60e51b815260206004820152601460248201527f616c726561647920696e206368616c6c656e67650000000000000000000000006044820152606401610a2d565b8067ffffffffffffffff16609d5410612a045760405162461bcd60e51b815260206004820152601760248201527f626174636820616c72656164792066696e616c697a65640000000000000000006044820152606401610a2d565b67ffffffffffffffff81165f90815260a160205260408120549003612a6b5760405162461bcd60e51b815260206004820152600f60248201527f6261746368206e6f7420657869737400000000000000000000000000000000006044820152606401610a2d565b67ffffffffffffffff81165f90815260a560205260409020546801000000000000000090046001600160a01b031615612ae65760405162461bcd60e51b815260206004820152601860248201527f626174636820616c7265616479206368616c6c656e67656400000000000000006044820152606401610a2d565b67ffffffffffffffff81165f90815260a160205260409020600301544210612b765760405162461bcd60e51b815260206004820152603360248201527f63616e6e6f74206368616c6c656e6765206261746368206f757473696465207460448201527f6865206368616c6c656e67652077696e646f77000000000000000000000000006064820152608401610a2d565b60975f9054906101000a90046001600160a01b03166001600160a01b0316634d64903a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bc6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bea9190615072565b341015612c395760405162461bcd60e51b815260206004820152601260248201527f696e73756666696369656e742076616c756500000000000000000000000000006044820152606401610a2d565b67ffffffffffffffff81811660a88190556040805160c0810182528281523360208083018281523484860190815242606086019081525f6080870181815260a0880182815299825260a5909552969096209451855492516001600160a01b031668010000000000000000027fffffffff00000000000000000000000000000000000000000000000000000000909316981697909717178355945160018301559151600282015592516003909301805492511515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff941515949094167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000909316929092179290921790556001600160a01b03168167ffffffffffffffff167f3a6ea19df25b49e7624e313ce7c1ab23984238e93727260db56a81735b1b997634604051612d8b91815260200190565b60405180910390a35f609d546001612da39190614bc6565b90505b609e548111612dfb578167ffffffffffffffff168114612de9576099545f82815260a1602052604081206003018054909190612de3908490614bc6565b90915550505b80612df381615089565b915050612da6565b505060a7805460ff19166001179055565b612e14613867565b6001600160a01b03811615801590612e3a5750609c546001600160a01b03828116911614155b612e865760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964206e65772076657269666965720000000000000000000000006044820152606401610a2d565b609c80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f728af3d16a5760405e27a082c98ab272e9f0a1d02f0085d41532a26093aedd96905f90a35050565b612ef7613867565b8015612ff557612f056142af565b60a75460ff168015612f30575060a8545f90815260a56020526040902060030154610100900460ff16155b15612f845760a8545f90815260a560209081526040808320600181015490546801000000000000000090046001600160a01b0316845260a69092528220805491929091612f7e908490614bc6565b90915550505b60a8545f90815260a56020526040812080547fffffffff0000000000000000000000000000000000000000000000000000000016815560018101829055600281019190915560030180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016905550565b612ffd614309565b50565b335f90815260a660205260408120549081900361305f5760405162461bcd60e51b815260206004820152601c60248201527f696e76616c69642062617463684368616c6c656e6765526577617264000000006044820152606401610a2d565b335f90815260a660205260408120556130788282614342565b5050565b5f81815260a560205260408120546801000000000000000090046001600160a01b031615801590610ea85750505f90815260a56020526040902060030154610100900460ff161590565b60a954156131165760405162461bcd60e51b815260206004820152600b60248201527f6e656564207265766572740000000000000000000000000000000000000000006044820152606401610a2d565b61311e6138dc565b61312781610e7d565b6131735760405162461bcd60e51b815260206004820152600f60248201527f6261746368206e6f7420657869737400000000000000000000000000000000006044820152606401610a2d565b61317c8161307c565b156131c95760405162461bcd60e51b815260206004820152601260248201527f626174636820696e206368616c6c656e676500000000000000000000000000006044820152606401610a2d565b5f81815260a5602052604090206003015460ff161561322a5760405162461bcd60e51b815260206004820152601660248201527f62617463682073686f756c6420626520726576657274000000000000000000006044820152606401610a2d565b5f81815260a1602052604090206003015442101561328a5760405162461bcd60e51b815260206004820152601960248201527f626174636820696e206368616c6c656e67652077696e646f77000000000000006044820152606401610a2d565b5f81815260a260205260408120600201549060a0906132aa600185614bd9565b81526020019081526020015f2054146133055760405162461bcd60e51b815260206004820152601d60248201527f696e636f72726563742070726576696f757320737461746520726f6f740000006044820152606401610a2d565b5f81815260a06020526040902054156133605760405162461bcd60e51b815260206004820152601660248201527f626174636820616c7265616479207665726966696564000000000000000000006044820152606401610a2d565b80609d54600101146133b45760405162461bcd60e51b815260206004820152601560248201527f696e636f727265637420626174636820696e64657800000000000000000000006044820152606401610a2d565b609d8190555f81815260a2602081815260408084206004810154855260a48352818520805460ff19166001179055858552600381015460a0845291909420555260050154801561358457609b545f83815260a26020526040812060070180546001600160a01b039093169261342890614bec565b80601f016020809104026020016040519081016040528092919081815260200182805461345490614bec565b801561349f5780601f106134765761010080835404028352916020019161349f565b820191905f5260205f20905b81548152906001019060200180831161348257829003601f168201915b5050505f87815260a260209081526040822060060154949550850193879003925090505b8581101561357e576101008187038111156134dd57508086035b6101008204602081028501516040517f55f613ce0000000000000000000000000000000000000000000000000000000081526004810186905260248101849052604481018290529091906001600160a01b038916906355f613ce906064015f604051808303815f87803b158015613552575f80fd5b505af1158015613564573d5f803e3d5ffd5b5050505061010085019450505050610100810190506134c3565b50505050505b60a15f613592600185614bd9565b815260208101919091526040015f90812081815560018082018390556002820183905560038201839055600490910182905560a291906135d29085614bd9565b815260208101919091526040015f9081208181556001810182905560028101829055600381018290556004810182905560058101829055600681018290559061361e6007830182614816565b5060a390505f61362f600185614bd9565b815260208101919091526040015f90812081815560018101829055906136586002830182614816565b5060a590505f613669600185614bd9565b815260208082019290925260409081015f90812080547fffffffff000000000000000000000000000000000000000000000000000000001681556001810182905560028101829055600390810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016905585825260a184528282205460a2855291839020908101546004909101548351918252938101939093529184917f26ba82f907317eedc97d0cbef23de76a43dd6edb563bdb6e9407645b950a7a2d910160405180910390a35050565b61373f613867565b5f8111801561375057506098548114155b61379c5760405162461bcd60e51b815260206004820152601b60248201527f696e76616c6964206e65772066696e616c697a6520706572696f6400000000006044820152606401610a2d565b609880549082905560408051828152602081018490527fa577f4223f91f74e2dad65bbb8c30807587ae95d0d34288057bb3ec0d398a4379101610e71565b6137e2613867565b6001600160a01b03811661385e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610a2d565b612ffd81613eca565b6033546001600160a01b03163314611aba5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a2d565b5f805f6138ce85856143ec565b812090969095509350505050565b60655460ff1615611aba5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610a2d565b67ffffffffffffffff831660a98190555f90815260a5602090815260408220546097548551680100000000000000009092046001600160a01b039081169493911691638b8c24c19161398791880181019088016150a1565b6040518263ffffffff1660e01b81526004016139a39190614ee9565b6020604051808303815f875af11580156139bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139e39190615072565b67ffffffffffffffff86165f90815260a56020526040902060010154909150613a0d908290614bc6565b67ffffffffffffffff86165f90815260a560209081526040808320546801000000000000000090046001600160a01b0316835260a690915281208054909190613a57908490614bc6565b9091555050604051613a6a908490615136565b604051908190038120906001600160a01b0384169067ffffffffffffffff8816907f1e66d5dca70bf28588ef2f5cb3c299e65e2e7bdef2767823d3ae47a9caff95c6905f90a45050505050565b82613b045760405162461bcd60e51b815260206004820152601960248201527f496e76616c6964206167677265676174696f6e2070726f6f66000000000000006044820152606401610a2d565b60a08114613b545760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964204b5a4720646174612070726f6f66000000000000000000006044820152606401610a2d565b67ffffffffffffffff85165f90815260a2602090815260408083205490518392600a92613b879290918891889101615151565b60408051601f1981840301815290829052613ba191615136565b5f60405180830381855afa9150503d805f8114613bd9576040519150601f19603f3d011682016040523d82523d5f602084013e613bde565b606091505b509150915081613c565760405162461bcd60e51b815260206004820152602a60248201527f6661696c656420746f2063616c6c20706f696e74206576616c756174696f6e2060448201527f707265636f6d70696c65000000000000000000000000000000000000000000006064820152608401610a2d565b5f81806020019051810190613c6b919061516a565b9150507f73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff000000018114613cdd5760405162461bcd60e51b815260206004820152601c60248201527f707265636f6d70696c6520756e6578706563746564206f7574707574000000006044820152606401610a2d565b50505067ffffffffffffffff85165f90815260a260205260408082206002810154600382015460048301546001909301547f00000000000000000000000000000000000000000000000000000000000000009492939192613d409087898b61518c565b67ffffffffffffffff8d165f90815260a26020908152604091829020549151613d71999897969594939291016151b3565b60408051601f198184030181528282528051602091820120609c5467ffffffffffffffff8b165f90815260a190935292909120600101547f2c09a8480000000000000000000000000000000000000000000000000000000084529093506001600160a01b0390911691632c09a84891613df4918a908a908a90889060040161520f565b5f6040518083038186803b158015613e0a575f80fd5b505afa158015613e1c573d5f803e3d5ffd5b50505050505050505050565b67ffffffffffffffff83165f90815260a560209081526040808320600101546001600160a01b038616845260a69092528220805491928392613e6b908490614bc6565b9091555050604051613e7e908390615136565b604051908190038120906001600160a01b0385169067ffffffffffffffff8716907f1e66d5dca70bf28588ef2f5cb3c299e65e2e7bdef2767823d3ae47a9caff95c6905f90a450505050565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16613faf5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a2d565b611aba6144c3565b5f54610100900460ff166140335760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a2d565b611aba61454b565b60405185515f916020880191819060218a0190859061405b9086906145d0565b90505f805b828110156140ca57603c8102870160018101518652602101517fffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000166020860152603a850194505f6140b5856038015160f01c90565b603c9590950194929092019150600101614060565b506020028301604052600185019150825b811561417e575f6140f084603a015160f01c90565b905061410085828e8e8e8e614665565b945080614111856038015160f01c90565b101561415f5760405162461bcd60e51b815260206004820152601d60248201527f6e756d20747873206c657373207468616e206e756d204c31206d7367730000006044820152606401610a2d565b9a8b019a998a01999690960195603c92909201915f19909101906140db565b609a54602061418d8387614bd9565b614197919061524a565b11156141e55760405162461bcd60e51b815260206004820152601960248201527f746f6f206d616e792074787320696e206f6e65206368756e6b000000000000006044820152606401610a2d565b50505081900390208852505b9695505050505050565b8082535050565b80826079850137505050565b5f805f6020840190506001810191505f6142298286516145d0565b90505f5b614238600183614bd9565b81101561424e57603c939093019260010161422d565b505f6141f1845160c01c90565b60605f8080808061426e888a018a615282565b955095509550955095505081871061428c5794506142a89350505050565b8387106142a05782955050505050506142a8565b509293505050505b9392505050565b6142b76138dc565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586142ec3390565b6040516001600160a01b03909116815260200160405180910390a1565b6143116147c4565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336142ec565b8015613078575f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114614391576040519150601f19603f3d011682016040523d82523d5f602084013e614396565b606091505b50509050806143e75760405162461bcd60e51b815260206004820152601b60248201527f526f6c6c75703a20455448207472616e73666572206661696c656400000000006044820152606401610a2d565b505050565b5f81607981101561443f5760405162461bcd60e51b815260206004820152601d60248201527f626174636820686561646572206c656e67746820746f6f20736d616c6c0000006044820152606401610a2d565b6040519150808483378082016040525f61445d836009015160c01c90565b905061010060ff82010460200260790182146144bb5760405162461bcd60e51b815260206004820152601360248201527f77726f6e67206269746d6170206c656e677468000000000000000000000000006044820152606401610a2d565b509250929050565b5f54610100900460ff1661453f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a2d565b6065805460ff19169055565b5f54610100900460ff166145c75760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a2d565b611aba33613eca565b5f6145dc835160f81c90565b9050805f03614617576040517f7c62f08c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b614622603c8261531f565b61462d906001614bc6565b8214610ea8576040517fb8f4bbc000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f855f036146745750856141f1565b609b546001600160a01b03165f80805b8981101561475a5760ff89169150600889901c8115806146a2575082155b156146b1578060200288013593505b600184841c165f03614749576040517fae453cd5000000000000000000000000000000000000000000000000000000008152600481018a90525f906001600160a01b0387169063ae453cd590602401602060405180830381865afa15801561471b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061473f9190615072565b8d52506020909b019a5b506001988901989788019701614684565b505060ff5f1988011681811c600116156147b65760405162461bcd60e51b815260206004820152601b60248201527f63616e6e6f7420736b6970206c617374204c31206d65737361676500000000006044820152606401610a2d565b509798975050505050505050565b60655460ff16611aba5760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610a2d565b50805461482290614bec565b5f825580601f10614831575050565b601f0160209004905f5260205f2090810190612ffd91905b8082111561485c575f8155600101614849565b5090565b5f60208284031215614870575f80fd5b5035919050565b6001600160a01b0381168114612ffd575f80fd5b5f6020828403121561489b575f80fd5b81356142a881614877565b5f8083601f8401126148b6575f80fd5b50813567ffffffffffffffff8111156148cd575f80fd5b6020830191508360208285010111156148e4575f80fd5b9250929050565b5f805f604084860312156148fd575f80fd5b833567ffffffffffffffff811115614913575f80fd5b61491f868287016148a6565b909790965060209590950135949350505050565b803567ffffffffffffffff8116811461494a575f80fd5b919050565b5f805f805f60608688031215614963575f80fd5b61496c86614933565b9450602086013567ffffffffffffffff80821115614988575f80fd5b61499489838a016148a6565b909650945060408801359150808211156149ac575f80fd5b506149b9888289016148a6565b969995985093965092949392505050565b5f5b838110156149e45781810151838201526020016149cc565b50505f910152565b5f8151808452614a038160208601602086016149ca565b601f01601f19169290920160200192915050565b838152826020820152606060408201525f614a3560608301846149ec565b95945050505050565b5f6101008a83528960208401528860408401528760608401528660808401528560a08401528460c08401528060e0840152614a7b818401856149ec565b9b9a5050505050505050505050565b5f805f805f8060c08789031215614a9f575f80fd5b8635614aaa81614877565b95506020870135614aba81614877565b94506040870135614aca81614877565b959894975094956060810135955060808101359460a0909101359350915050565b5f8060408385031215614afc575f80fd5b823567ffffffffffffffff80821115614b13575f80fd5b9084019060e08287031215614b26575f80fd5b90925060208401359080821115614b3b575f80fd5b50830160608186031215614b4d575f80fd5b809150509250929050565b5f60208284031215614b68575f80fd5b6142a882614933565b8015158114612ffd575f80fd5b5f60208284031215614b8e575f80fd5b81356142a881614b71565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610ea857610ea8614b99565b81810381811115610ea857610ea8614b99565b600181811c90821680614c0057607f821691505b602082108103614c37577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b601f8211156143e757805f5260205f20601f840160051c81016020851015614c8f5750805b601f840160051c820191505b8181101561111b575f8155600101614c9b565b815167ffffffffffffffff811115614cc857614cc8614c3d565b614cdc81614cd68454614bec565b84614c6a565b602080601f831160018114614d0f575f8415614cf85750858301515b5f19600386901b1c1916600185901b178555610dca565b5f85815260208120601f198616915b82811015614d3d57888601518255948401946001909101908401614d1e565b5085821015614d5a57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f60208284031215614d7a575f80fd5b81516142a881614b71565b5f60208284031215614d95575f80fd5b813560ff811681146142a8575f80fd5b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614dd8575f80fd5b83018035915067ffffffffffffffff821115614df2575f80fd5b6020019150600581901b36038213156148e4575f80fd5b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614e3c575f80fd5b83018035915067ffffffffffffffff821115614e56575f80fd5b6020019150368190038213156148e4575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b818382375f9101908152919050565b5f815180845260208085019450602084015f5b83811015614ede5781516001600160a01b031687529582019590820190600101614eb9565b509495945050505050565b602081525f6142a86020830184614ea6565b604051601f8201601f1916810167ffffffffffffffff81118282101715614f2457614f24614c3d565b604052919050565b5f67ffffffffffffffff821115614f4557614f45614c3d565b5060051b60200190565b5f82601f830112614f5e575f80fd5b81356020614f73614f6e83614f2c565b614efb565b8083825260208201915060208460051b870101935086841115614f94575f80fd5b602086015b84811015614fb9578035614fac81614877565b8352918301918301614f99565b509695505050505050565b5f60208284031215614fd4575f80fd5b813567ffffffffffffffff811115614fea575f80fd5b614ff684828501614f4f565b949350505050565b81835281816020850137505f602082840101525f6020601f19601f840116840101905092915050565b608081525f6150396080830188614ea6565b828103602084015261504b8188614ea6565b90508560408401528281036060840152615066818587614ffe565b98975050505050505050565b5f60208284031215615082575f80fd5b5051919050565b5f5f19820361509a5761509a614b99565b5060010190565b5f60208083850312156150b2575f80fd5b825167ffffffffffffffff8111156150c8575f80fd5b8301601f810185136150d8575f80fd5b80516150e6614f6e82614f2c565b81815260059190911b82018301908381019087831115615104575f80fd5b928401925b8284101561512b57835161511c81614877565b82529284019290840190615109565b979650505050505050565b5f82516151478184602087016149ca565b9190910192915050565b838152818360208301375f910160200190815292915050565b5f806040838503121561517b575f80fd5b505080516020909101519092909150565b5f808585111561519a575f80fd5b838611156151a6575f80fd5b5050820193919092039150565b7fffffffffffffffff0000000000000000000000000000000000000000000000008960c01b16815287600882015286602882015285604882015284606882015282846088830137608892019182015260a8019695505050505050565b85815267ffffffffffffffff85166020820152608060408201525f615238608083018587614ffe565b90508260608301529695505050505050565b5f8261527d577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f805f805f8060c08789031215615297575f80fd5b86359550602087013567ffffffffffffffff808211156152b5575f80fd5b6152c18a838b01614f4f565b96506040890135955060608901359150808211156152dd575f80fd5b6152e98a838b01614f4f565b94506080890135935060a0890135915080821115615305575f80fd5b5061531289828a01614f4f565b9150509295509295509295565b8082028115828204841417610ea857610ea8614b9956fea164736f6c6343000818000a +0x6080604052600436106102e5575f3560e01c8063715018a611610186578063abc8d68d116100dc578063ddd8a3dc11610087578063e3fff1dd11610062578063e3fff1dd1461096e578063ef6602ba1461098d578063f2fde38b146109a2575f80fd5b8063ddd8a3dc14610911578063de8b303514610930578063e33491a71461094f575f80fd5b8063caf62533116100b7578063caf625331461086d578063ce5db8d6146108dd578063d279c191146108f2575f80fd5b8063abc8d68d1461080e578063b31a77d314610839578063bedb86fb1461084e575f80fd5b80638da5cb5b1161013c57806397fc007c1161011757806397fc007c146107ac578063a415d8dc146107cb578063a479265d146107f9575f80fd5b80638da5cb5b146106ae5780638f1d3776146106cb578063910129d41461077b575f80fd5b80637c41b6ac1161016c5780637c41b6ac1461066f57806388b1ea09146106825780638d644bb71461069b575f80fd5b8063715018a61461063c578063728cdbca14610650575f80fd5b80632571098d1161023b578063404fa7b1116101f15780635ef7a94a116101cc5780635ef7a94a1461059e5780635f77cf1d146105d15780636c578c1d1461061d575f80fd5b8063404fa7b11461053a57806357e0af6c146105685780635c975abb14610587575f80fd5b806336622a301161022157806336622a30146104dd5780633b70c18a146104fc5780633fdeecb21461051b575f80fd5b80632571098d1461047b5780632b7ac3f3146104a6575f80fd5b8063121dcd501161029b5780631e228302116102765780631e2283021461041257806321e2f9e0146104315780632362f03e14610450575f80fd5b8063121dcd50146103b857806318463fb0146103cd57806318af3b2b146103e2575f80fd5b80630ceb6780116102cb5780630ceb67801461035657806310d4458314610377578063116a1f4214610396575f80fd5b806304d77215146102f0578063059def6114610333575f80fd5b366102ec57005b5f80fd5b3480156102fb575f80fd5b5061031e61030a36600461484d565b60a46020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561033e575f80fd5b50610348609d5481565b60405190815260200161032a565b348015610361575f80fd5b50610375610370366004614878565b6109c1565b005b348015610382575f80fd5b506103756103913660046148d8565b610a93565b3480156103a1575f80fd5b5061031e6103b036600461484d565b609d54101590565b3480156103c3575f80fd5b50610348609e5481565b3480156103d8575f80fd5b5061034860a85481565b3480156103ed575f80fd5b5061031e6103fc36600461484d565b5f90815260a16020526040902060030154421090565b34801561041d575f80fd5b5061037561042c36600461484d565b610ddd565b34801561043c575f80fd5b5061031e61044b36600461484d565b610e88565b34801561045b575f80fd5b5061034861046a36600461484d565b5f90815260a1602052604090205490565b348015610486575f80fd5b5061034861049536600461484d565b60a06020525f908152604090205481565b3480156104b1575f80fd5b50609c546104c5906001600160a01b031681565b6040516001600160a01b03909116815260200161032a565b3480156104e8575f80fd5b506103756104f736600461493c565b610eb9565b348015610507575f80fd5b50609b546104c5906001600160a01b031681565b348015610526575f80fd5b506103756105353660046148d8565b61112d565b348015610545575f80fd5b5061055961055436600461484d565b6117e2565b60405161032a93929190614a04565b348015610573575f80fd5b5061037561058236600461484d565b61188a565b348015610592575f80fd5b5060655460ff1661031e565b3480156105a9575f80fd5b506105bd6105b836600461484d565b61192d565b60405161032a989796959493929190614a2b565b3480156105dc575f80fd5b506106047f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff909116815260200161032a565b348015610628575f80fd5b50610375610637366004614878565b6119f7565b348015610647575f80fd5b50610375611ab4565b34801561065b575f80fd5b5061037561066a366004614a77565b611ac7565b61037561067d366004614ad8565b611e0a565b34801561068d575f80fd5b5060a75461031e9060ff1681565b6103756106a9366004614b45565b6128ab565b3480156106b9575f80fd5b506033546001600160a01b03166104c5565b3480156106d6575f80fd5b506107376106e536600461484d565b60a56020525f9081526040902080546001820154600283015460039093015467ffffffffffffffff831693680100000000000000009093046001600160a01b0316929060ff8082169161010090041686565b6040805167ffffffffffffffff90971687526001600160a01b03909516602087015293850192909252606084015215156080830152151560a082015260c00161032a565b348015610786575f80fd5b5061031e61079536600461484d565b5f90815260a5602052604090206003015460ff1690565b3480156107b7575f80fd5b506103756107c6366004614878565b612e17565b3480156107d6575f80fd5b5061031e6107e5366004614878565b609f6020525f908152604090205460ff1681565b348015610804575f80fd5b5061034860995481565b348015610819575f80fd5b50610348610828366004614878565b60a66020525f908152604090205481565b348015610844575f80fd5b5061034860a95481565b348015610859575f80fd5b50610375610868366004614b6b565b612efa565b348015610878575f80fd5b506108b561088736600461484d565b60a16020525f9081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a00161032a565b3480156108e8575f80fd5b5061034860985481565b3480156108fd575f80fd5b5061037561090c366004614878565b612fed565b34801561091c575f80fd5b506097546104c5906001600160a01b031681565b34801561093b575f80fd5b5061031e61094a36600461484d565b613069565b34801561095a575f80fd5b5061037561096936600461484d565b6130b3565b348015610979575f80fd5b5061037561098836600461484d565b613724565b348015610998575f80fd5b50610348609a5481565b3480156109ad575f80fd5b506103756109bc366004614878565b6137c7565b6109c9613854565b6001600160a01b0381165f908152609f602052604090205460ff1615610a365760405162461bcd60e51b815260206004820152601f60248201527f6163636f756e7420697320616c72656164792061206368616c6c656e6765720060448201526064015b60405180910390fd5b6001600160a01b0381165f818152609f6020908152604091829020805460ff1916600190811790915591519182527f7feb653c7b1f0d23daeed494225b3f28851cdc8973fcc653866d9b6e205fc00991015b60405180910390a250565b610a9b613854565b5f8111610aea5760405162461bcd60e51b815260206004820152601560248201527f636f756e74206d757374206265206e6f6e7a65726f00000000000000000000006044820152606401610a2d565b5f80610af685856138ae565b915091505f610b09836001015160c01c90565b5f81815260a160205260409020549091508214610b685760405162461bcd60e51b815260206004820152601460248201527f696e636f727265637420626174636820686173680000000000000000000000006044820152606401610a2d565b5f60a181610b768785614bb3565b81526020019081526020015f205f015414610bf85760405162461bcd60e51b8152602060048201526024808201527f726576657274696e67206d7573742073746172742066726f6d2074686520656e60448201527f64696e67000000000000000000000000000000000000000000000000000000006064820152608401610a2d565b609d548111610c6f5760405162461bcd60e51b815260206004820152602160248201527f63616e206f6e6c792072657665727420756e46696e616c697a6564206261746360448201527f68000000000000000000000000000000000000000000000000000000000000006064820152608401610a2d565b610c7a600182614bc6565b609e555b8315610dd557604051829082907ecae2739091badfd91c373f0a16cede691e0cd25bb80cff77dd5caeb4710146905f90a35f81815260a16020908152604080832083905560a5909152902060030154610100900460ff16610d2f575f81815260a560209081526040808320600181015490546801000000000000000090046001600160a01b0316845260a69092528220805491929091610d1f908490614bb3565b909155505060a7805460ff191690555b5f81815260a56020526040812080547fffffffff0000000000000000000000000000000000000000000000000000000016815560018101829055600281019190915560030180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016905560a95415801590610dac575060a95481145b15610db6575f60a9555b6001015f81815260a160205260409020545f1990940193915081610c7e575b505050505050565b610de5613854565b5f81118015610df65750609a548114155b610e425760405162461bcd60e51b815260206004820152601b60248201527f696e76616c6964206e6577206d61784e756d5478496e4368756e6b00000000006044820152606401610a2d565b609a80549082905560408051828152602081018490527f6d0f49971e462a2f78a25906f145cb29cd5e7bd01ebf681ac8f58cb814e5877a91015b60405180910390a15050565b5f81815260a1602052604081206002015415801590610eb357505f82815260a1602052604090205415155b92915050565b60a95415610f095760405162461bcd60e51b815260206004820152600b60248201527f6e656564207265766572740000000000000000000000000000000000000000006044820152606401610a2d565b610f116138c9565b610f248567ffffffffffffffff16613069565b610f705760405162461bcd60e51b815260206004820152601260248201527f626174636820696e206368616c6c656e676500000000000000000000000000006044820152606401610a2d565b67ffffffffffffffff85165f90815260a5602052604090206003810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010017905560a7805460ff191690556099546002909101544291610fd491614bb3565b116110d95767ffffffffffffffff85165f90815260a560209081526040808320600301805460ff1916600117905560a3909152902060020180546110d491879161101d90614bd9565b80601f016020809104026020016040519081016040528092919081815260200182805461104990614bd9565b80156110945780601f1061106b57610100808354040283529160200191611094565b820191905f5260205f20905b81548152906001019060200180831161107757829003601f168201915b50505050506040518060400160405280600781526020017f54696d656f75740000000000000000000000000000000000000000000000000081525061391c565b611126565b6110e68585858585613aa4565b61112685336040518060400160405280600d81526020017f50726f6f66207375636365737300000000000000000000000000000000000000815250613e15565b5050505050565b611135613854565b806111825760405162461bcd60e51b815260206004820152600f60248201527f7a65726f20737461746520726f6f7400000000000000000000000000000000006044820152606401610a2d565b5f805260a06020527fb84a74ec6ef4d0e83b6006dfaa014ab4026f9f3b97d186e604d29998a4e808ea54156111f95760405162461bcd60e51b815260206004820152601660248201527f67656e6573697320626174636820696d706f72746564000000000000000000006044820152606401610a2d565b5f8061120585856138ae565b915091505f611215836019015190565b90505f611223845160f81c90565b90505f611234856011015160c01c90565b600986015160c01c600187015160c01c875160f81c0101019050801561129c5760405162461bcd60e51b815260206004820152601760248201527f6e6f7420616c6c206669656c647320617265207a65726f0000000000000000006044820152606401610a2d565b505f6112a9856019015190565b036112f65760405162461bcd60e51b815260206004820152600e60248201527f7a65726f206461746120686173680000000000000000000000000000000000006044820152606401610a2d565b5f611302856059015190565b1461134f5760405162461bcd60e51b815260206004820152601960248201527f6e6f6e7a65726f20706172656e742062617463682068617368000000000000006044820152606401610a2d565b7f010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c44401461137b856039015190565b146113c85760405162461bcd60e51b815260206004820152601660248201527f696e76616c69642076657273696f6e65642068617368000000000000000000006044820152606401610a2d565b6040805160a0808201835285825260208083018581524284860181815260608087019283525f608080890182815282805260a1885298517f32ae1b88a7d4f92d7e214b63c8ea04cd13e2faaa60c50f499f2254336d98f8825594517f32ae1b88a7d4f92d7e214b63c8ea04cd13e2faaa60c50f499f2254336d98f8835591517f32ae1b88a7d4f92d7e214b63c8ea04cd13e2faaa60c50f499f2254336d98f8845591517f32ae1b88a7d4f92d7e214b63c8ea04cd13e2faaa60c50f499f2254336d98f8855594517f32ae1b88a7d4f92d7e214b63c8ea04cd13e2faaa60c50f499f2254336d98f886558551610100810187527f010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c44401481528084018981528188018781529282018d815293820187815295820187815260c083018881528951808b01909a5260028a527f30780000000000000000000000000000000000000000000000000000000000008a88015260e08401998a5297805260a290955281517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342a90815590517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342b5591517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342c5591517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342d5592517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342e5590517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342f5591517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b34305591519091907f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b3431906116719082614c9b565b5050604080516060810182525f808252602080830182815284518086018652600281527f30780000000000000000000000000000000000000000000000000000000000008184015294840194855291805260a3905281517f69b4e8f94ad9e612080e13aad01219472d8c2c7ae7aa6cdf175400ddc8c4ed3d90815590517f69b4e8f94ad9e612080e13aad01219472d8c2c7ae7aa6cdf175400ddc8c4ed3e5591519092507f69b4e8f94ad9e612080e13aad01219472d8c2c7ae7aa6cdf175400ddc8c4ed3f906117419082614c9b565b50505f80805260a06020527fb84a74ec6ef4d0e83b6006dfaa014ab4026f9f3b97d186e604d29998a4e808ea8790556040518592507f2c32d4ae151744d0bf0b9464a3e897a1d17ed2f1af71f7c9a75f12ce0d28238f908290a3604080518681525f60208201819052859290917f26ba82f907317eedc97d0cbef23de76a43dd6edb563bdb6e9407645b950a7a2d910160405180910390a350505050505050565b60a36020525f90815260409020805460018201546002830180549293919261180990614bd9565b80601f016020809104026020016040519081016040528092919081815260200182805461183590614bd9565b80156118805780601f1061185757610100808354040283529160200191611880565b820191905f5260205f20905b81548152906001019060200180831161186357829003601f168201915b5050505050905083565b611892613854565b5f811180156118a357506099548114155b6118ef5760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964206e65772070726f6f662077696e646f7700000000000000006044820152606401610a2d565b609980549082905560408051828152602081018490527f1e3a2094feb4b696dd3d7caea38ad2f41dbdcac3fa3943c7a693aff8a64b0a619101610e7c565b60a2602052805f5260405f205f91509050805f01549080600101549080600201549080600301549080600401549080600501549080600601549080600701805461197690614bd9565b80601f01602080910402602001604051908101604052809291908181526020018280546119a290614bd9565b80156119ed5780601f106119c4576101008083540402835291602001916119ed565b820191905f5260205f20905b8154815290600101906020018083116119d057829003601f168201915b5050505050905088565b6119ff613854565b6001600160a01b0381165f908152609f602052604090205460ff16611a665760405162461bcd60e51b815260206004820152601b60248201527f6163636f756e74206973206e6f742061206368616c6c656e67657200000000006044820152606401610a2d565b6001600160a01b0381165f818152609f60209081526040808320805460ff19169055519182527f7feb653c7b1f0d23daeed494225b3f28851cdc8973fcc653866d9b6e205fc0099101610a88565b611abc613854565b611ac55f613eb7565b565b5f54610100900460ff1615808015611ae557505f54600160ff909116105b80611afe5750303b158015611afe57505f5460ff166001145b611b705760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610a2d565b5f805460ff191660011790558015611bae575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6001600160a01b0386161580611bcb57506001600160a01b038516155b15611c02576040517fecc6fdf000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038716611c585760405162461bcd60e51b815260206004820152601b60248201527f696e76616c6964206c31207374616b696e6720636f6e747261637400000000006044820152606401610a2d565b611c60613f20565b611c68613fa4565b609780546001600160a01b03808a167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255609b8054898416908316179055609c80549288169290911682179055609a859055609884905560998390556040515f907f728af3d16a5760405e27a082c98ab272e9f0a1d02f0085d41532a26093aedd96908290a3604080515f8152602081018690527f6d0f49971e462a2f78a25906f145cb29cd5e7bd01ebf681ac8f58cb814e5877a910160405180910390a1604080515f8152602081018590527fa577f4223f91f74e2dad65bbb8c30807587ae95d0d34288057bb3ec0d398a437910160405180910390a1604080515f8152602081018490527f1e3a2094feb4b696dd3d7caea38ad2f41dbdcac3fa3943c7a693aff8a64b0a61910160405180910390a18015611e01575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6097546001600160a01b0316636f1e8533336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015611e76573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e9a9190614d57565b611ee65760405162461bcd60e51b815260206004820152601360248201527f6f6e6c79207374616b657220616c6c6f776564000000000000000000000000006044820152606401610a2d565b60a95415611f365760405162461bcd60e51b815260206004820152600b60248201527f6e656564207265766572740000000000000000000000000000000000000000006044820152606401610a2d565b611f3e6138c9565b611f4b6020830183614d72565b60ff1615611f9b5760405162461bcd60e51b815260206004820152600f60248201527f696e76616c69642076657273696f6e00000000000000000000000000000000006044820152606401610a2d565b5f611fa96040840184614d92565b91505080611ff95760405162461bcd60e51b815260206004820152600e60248201527f626174636820697320656d7074790000000000000000000000000000000000006044820152606401610a2d565b608083013561204a5760405162461bcd60e51b815260206004820152601b60248201527f70726576696f757320737461746520726f6f74206973207a65726f00000000006044820152606401610a2d565b60a083013561209b5760405162461bcd60e51b815260206004820152601660248201527f6e657720737461746520726f6f74206973207a65726f000000000000000000006044820152606401610a2d565b5f806120b26120ad6020870187614df6565b6138ae565b915091505f6120c5836001015160c01c90565b5f81815260a1602052604090205490915082146121245760405162461bcd60e51b815260206004820152601b60248201527f696e636f727265637420706172656e74206261746368206861736800000000006044820152606401610a2d565b5f60a181612133846001614bb3565b81526020019081526020015f205f0154146121905760405162461bcd60e51b815260206004820152601760248201527f626174636820616c726561647920636f6d6d69747465640000000000000000006044820152606401610a2d565b609e5481146121e15760405162461bcd60e51b815260206004820152601560248201527f696e636f727265637420626174636820696e64657800000000000000000000006044820152606401610a2d565b5f81815260a260205260409020600301546080870135146122445760405162461bcd60e51b815260206004820152601d60248201527f696e636f72726563742070726576696f757320737461746520726f6f740000006044820152606401610a2d565b5f612253846011015160c01c90565b604080516020880281019091529091505f805b87811015612314575f6122fb8461228060408e018e614d92565b8581811061229057612290614e57565b90506020028101906122a29190614df6565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505085888f80606001906122f69190614df6565b614028565b9485019460209490940193929092019150600101612266565b5061232260608a018a614df6565b905061010060ff8301046020021461237c5760405162461bcd60e51b815260206004820152601360248201527f77726f6e67206269746d6170206c656e677468000000000000000000000000006044820152606401610a2d565b602087810280840320604051975060019590950194906123ac9088906123a4908d018d614d72565b60ff166141e8565b60c085811b600189015282811b600989015284901b601188015260198701819052605987018690526123ea876123e560608d018d614df6565b6141ef565b5f8049156123f9575f4961241b565b7f010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c4440145b6039890181905290506040518060a001604052806124548a8e80606001906124439190614df6565b61244f91506079614bb3565b902090565b8152602090810190612468908e018e614d72565b60ff168152602001428152602001609854426124849190614bb3565b81526020016124fe61249960408f018f614d92565b6124a460018f614bc6565b8181106124b3576124b3614e57565b90506020028101906124c59190614df6565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506141fb92505050565b81525060a15f8881526020019081526020015f205f820151815f0155602082015181600101556040820151816002015560608201518160030155608082015181600401559050506040518061010001604052808281526020018381526020018c6080013581526020018c60a0013581526020018c60c0013581526020018481526020018681526020018c80606001906125979190614df6565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525093909452505088815260a2602090815260409182902084518155908401516001820155908301516002820155606083015160038201556080830151600482015560a0830151600582015560c0830151600682015560e083015190915060078201906126319082614c9b565b50506040805160018082528183019092525f9250906020808301908036833701905050905033815f8151811061266957612669614e57565b60200260200101906001600160a01b031690816001600160a01b031681525050604051806060016040528061269b5f90565b81526020018c80602001906126b09190614df6565b6040516126be929190614e84565b60405180910390208152602001826040516020016126dc9190614ed6565b60408051601f1981840301815291815291525f89815260a36020908152908290208351815590830151600182015590820151600282019061271d9082614c9b565b505050609e8790555f87905260a36020526097546001600160a01b031663c0af545b6127498d80614df6565b8101906127569190614fb1565b61276f8e80602001906127699190614df6565b5f614248565b60a35f8c81526020019081526020015f205f01548f80604001906127939190614df6565b6040518663ffffffff1660e01b81526004016127b3959493929190615014565b602060405180830381865afa1580156127ce573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127f29190614d57565b6128645760405162461bcd60e51b815260206004820152602160248201527f746865207369676e617475726520766572696669636174696f6e206661696c6560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152608401610a2d565b5f87815260a16020526040808220549051909189917f2c32d4ae151744d0bf0b9464a3e897a1d17ed2f1af71f7c9a75f12ce0d28238f9190a3505050505050505050505050565b335f908152609f602052604090205460ff166129095760405162461bcd60e51b815260206004820152601960248201527f63616c6c6572206368616c6c656e67657220616c6c6f776564000000000000006044820152606401610a2d565b60a954156129595760405162461bcd60e51b815260206004820152600b60248201527f6e656564207265766572740000000000000000000000000000000000000000006044820152606401610a2d565b6129616138c9565b60a75460ff16156129b45760405162461bcd60e51b815260206004820152601460248201527f616c726561647920696e206368616c6c656e67650000000000000000000000006044820152606401610a2d565b8067ffffffffffffffff16609d5410612a0f5760405162461bcd60e51b815260206004820152601760248201527f626174636820616c72656164792066696e616c697a65640000000000000000006044820152606401610a2d565b67ffffffffffffffff81165f90815260a160205260408120549003612a765760405162461bcd60e51b815260206004820152600f60248201527f6261746368206e6f7420657869737400000000000000000000000000000000006044820152606401610a2d565b67ffffffffffffffff81165f90815260a560205260409020546801000000000000000090046001600160a01b031615612af15760405162461bcd60e51b815260206004820152601860248201527f626174636820616c7265616479206368616c6c656e67656400000000000000006044820152606401610a2d565b67ffffffffffffffff81165f90815260a160205260409020600301544210612b815760405162461bcd60e51b815260206004820152603360248201527f63616e6e6f74206368616c6c656e6765206261746368206f757473696465207460448201527f6865206368616c6c656e67652077696e646f77000000000000000000000000006064820152608401610a2d565b60975f9054906101000a90046001600160a01b03166001600160a01b0316634d64903a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bd1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bf5919061505f565b341015612c445760405162461bcd60e51b815260206004820152601260248201527f696e73756666696369656e742076616c756500000000000000000000000000006044820152606401610a2d565b67ffffffffffffffff81811660a88190556040805160c0810182528281523360208083018281523484860190815242606086019081525f6080870181815260a0880182815299825260a5909552969096209451855492516001600160a01b031668010000000000000000027fffffffff00000000000000000000000000000000000000000000000000000000909316981697909717178355945160018301559151600282015592516003909301805492511515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff941515949094167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000909316929092179290921790556001600160a01b03168167ffffffffffffffff167f3a6ea19df25b49e7624e313ce7c1ab23984238e93727260db56a81735b1b997634604051612d9691815260200190565b60405180910390a35f609d546001612dae9190614bb3565b90505b609e548111612e06578167ffffffffffffffff168114612df4576099545f82815260a1602052604081206003018054909190612dee908490614bb3565b90915550505b80612dfe81615076565b915050612db1565b505060a7805460ff19166001179055565b612e1f613854565b6001600160a01b03811615801590612e455750609c546001600160a01b03828116911614155b612e915760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964206e65772076657269666965720000000000000000000000006044820152606401610a2d565b609c80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f728af3d16a5760405e27a082c98ab272e9f0a1d02f0085d41532a26093aedd96905f90a35050565b612f02613854565b8015612fe557612f1061429c565b60a75460ff1615612fe25760a8545f90815260a560209081526040808320600181015490546801000000000000000090046001600160a01b0316845260a69092528220805491929091612f64908490614bb3565b909155505060a8545f90815260a56020526040812080547fffffffff0000000000000000000000000000000000000000000000000000000016815560018101829055600281019190915560030180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016905560a7805460ff191690555b50565b612fe26142f6565b335f90815260a660205260408120549081900361304c5760405162461bcd60e51b815260206004820152601c60248201527f696e76616c69642062617463684368616c6c656e6765526577617264000000006044820152606401610a2d565b335f90815260a66020526040812055613065828261432f565b5050565b5f81815260a560205260408120546801000000000000000090046001600160a01b031615801590610eb35750505f90815260a56020526040902060030154610100900460ff161590565b60a954156131035760405162461bcd60e51b815260206004820152600b60248201527f6e656564207265766572740000000000000000000000000000000000000000006044820152606401610a2d565b61310b6138c9565b61311481610e88565b6131605760405162461bcd60e51b815260206004820152600f60248201527f6261746368206e6f7420657869737400000000000000000000000000000000006044820152606401610a2d565b61316981613069565b156131b65760405162461bcd60e51b815260206004820152601260248201527f626174636820696e206368616c6c656e676500000000000000000000000000006044820152606401610a2d565b5f81815260a5602052604090206003015460ff16156132175760405162461bcd60e51b815260206004820152601660248201527f62617463682073686f756c6420626520726576657274000000000000000000006044820152606401610a2d565b5f81815260a160205260409020600301544210156132775760405162461bcd60e51b815260206004820152601960248201527f626174636820696e206368616c6c656e67652077696e646f77000000000000006044820152606401610a2d565b5f81815260a260205260408120600201549060a090613297600185614bc6565b81526020019081526020015f2054146132f25760405162461bcd60e51b815260206004820152601d60248201527f696e636f72726563742070726576696f757320737461746520726f6f740000006044820152606401610a2d565b5f81815260a060205260409020541561334d5760405162461bcd60e51b815260206004820152601660248201527f626174636820616c7265616479207665726966696564000000000000000000006044820152606401610a2d565b80609d54600101146133a15760405162461bcd60e51b815260206004820152601560248201527f696e636f727265637420626174636820696e64657800000000000000000000006044820152606401610a2d565b609d8190555f81815260a2602081815260408084206004810154855260a48352818520805460ff19166001179055858552600381015460a0845291909420555260050154801561357157609b545f83815260a26020526040812060070180546001600160a01b039093169261341590614bd9565b80601f016020809104026020016040519081016040528092919081815260200182805461344190614bd9565b801561348c5780601f106134635761010080835404028352916020019161348c565b820191905f5260205f20905b81548152906001019060200180831161346f57829003601f168201915b5050505f87815260a260209081526040822060060154949550850193879003925090505b8581101561356b576101008187038111156134ca57508086035b6101008204602081028501516040517f55f613ce0000000000000000000000000000000000000000000000000000000081526004810186905260248101849052604481018290529091906001600160a01b038916906355f613ce906064015f604051808303815f87803b15801561353f575f80fd5b505af1158015613551573d5f803e3d5ffd5b5050505061010085019450505050610100810190506134b0565b50505050505b60a15f61357f600185614bc6565b815260208101919091526040015f90812081815560018082018390556002820183905560038201839055600490910182905560a291906135bf9085614bc6565b815260208101919091526040015f9081208181556001810182905560028101829055600381018290556004810182905560058101829055600681018290559061360b6007830182614803565b5060a390505f61361c600185614bc6565b815260208101919091526040015f90812081815560018101829055906136456002830182614803565b5060a590505f613656600185614bc6565b815260208082019290925260409081015f90812080547fffffffff000000000000000000000000000000000000000000000000000000001681556001810182905560028101829055600390810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016905585825260a184528282205460a2855291839020908101546004909101548351918252938101939093529184917f26ba82f907317eedc97d0cbef23de76a43dd6edb563bdb6e9407645b950a7a2d910160405180910390a35050565b61372c613854565b5f8111801561373d57506098548114155b6137895760405162461bcd60e51b815260206004820152601b60248201527f696e76616c6964206e65772066696e616c697a6520706572696f6400000000006044820152606401610a2d565b609880549082905560408051828152602081018490527fa577f4223f91f74e2dad65bbb8c30807587ae95d0d34288057bb3ec0d398a4379101610e7c565b6137cf613854565b6001600160a01b03811661384b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610a2d565b612fe281613eb7565b6033546001600160a01b03163314611ac55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a2d565b5f805f6138bb85856143d9565b812090969095509350505050565b60655460ff1615611ac55760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610a2d565b67ffffffffffffffff831660a98190555f90815260a5602090815260408220546097548551680100000000000000009092046001600160a01b039081169493911691638b8c24c191613974918801810190880161508e565b6040518263ffffffff1660e01b81526004016139909190614ed6565b6020604051808303815f875af11580156139ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139d0919061505f565b67ffffffffffffffff86165f90815260a560205260409020600101549091506139fa908290614bb3565b67ffffffffffffffff86165f90815260a560209081526040808320546801000000000000000090046001600160a01b0316835260a690915281208054909190613a44908490614bb3565b9091555050604051613a57908490615123565b604051908190038120906001600160a01b0384169067ffffffffffffffff8816907f1e66d5dca70bf28588ef2f5cb3c299e65e2e7bdef2767823d3ae47a9caff95c6905f90a45050505050565b82613af15760405162461bcd60e51b815260206004820152601960248201527f496e76616c6964206167677265676174696f6e2070726f6f66000000000000006044820152606401610a2d565b60a08114613b415760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964204b5a4720646174612070726f6f66000000000000000000006044820152606401610a2d565b67ffffffffffffffff85165f90815260a2602090815260408083205490518392600a92613b74929091889188910161513e565b60408051601f1981840301815290829052613b8e91615123565b5f60405180830381855afa9150503d805f8114613bc6576040519150601f19603f3d011682016040523d82523d5f602084013e613bcb565b606091505b509150915081613c435760405162461bcd60e51b815260206004820152602a60248201527f6661696c656420746f2063616c6c20706f696e74206576616c756174696f6e2060448201527f707265636f6d70696c65000000000000000000000000000000000000000000006064820152608401610a2d565b5f81806020019051810190613c589190615157565b9150507f73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff000000018114613cca5760405162461bcd60e51b815260206004820152601c60248201527f707265636f6d70696c6520756e6578706563746564206f7574707574000000006044820152606401610a2d565b50505067ffffffffffffffff85165f90815260a260205260408082206002810154600382015460048301546001909301547f00000000000000000000000000000000000000000000000000000000000000009492939192613d2d9087898b615179565b67ffffffffffffffff8d165f90815260a26020908152604091829020549151613d5e999897969594939291016151a0565b60408051601f198184030181528282528051602091820120609c5467ffffffffffffffff8b165f90815260a190935292909120600101547f2c09a8480000000000000000000000000000000000000000000000000000000084529093506001600160a01b0390911691632c09a84891613de1918a908a908a9088906004016151fc565b5f6040518083038186803b158015613df7575f80fd5b505afa158015613e09573d5f803e3d5ffd5b50505050505050505050565b67ffffffffffffffff83165f90815260a560209081526040808320600101546001600160a01b038616845260a69092528220805491928392613e58908490614bb3565b9091555050604051613e6b908390615123565b604051908190038120906001600160a01b0385169067ffffffffffffffff8716907f1e66d5dca70bf28588ef2f5cb3c299e65e2e7bdef2767823d3ae47a9caff95c6905f90a450505050565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16613f9c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a2d565b611ac56144b0565b5f54610100900460ff166140205760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a2d565b611ac5614538565b60405185515f916020880191819060218a019085906140489086906145bd565b90505f805b828110156140b757603c8102870160018101518652602101517fffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000166020860152603a850194505f6140a2856038015160f01c90565b603c959095019492909201915060010161404d565b506020028301604052600185019150825b811561416b575f6140dd84603a015160f01c90565b90506140ed85828e8e8e8e614652565b9450806140fe856038015160f01c90565b101561414c5760405162461bcd60e51b815260206004820152601d60248201527f6e756d20747873206c657373207468616e206e756d204c31206d7367730000006044820152606401610a2d565b9a8b019a998a01999690960195603c92909201915f19909101906140c8565b609a54602061417a8387614bc6565b6141849190615237565b11156141d25760405162461bcd60e51b815260206004820152601960248201527f746f6f206d616e792074787320696e206f6e65206368756e6b000000000000006044820152606401610a2d565b50505081900390208852505b9695505050505050565b8082535050565b80826079850137505050565b5f805f6020840190506001810191505f6142168286516145bd565b90505f5b614225600183614bc6565b81101561423b57603c939093019260010161421a565b505f6141de845160c01c90565b60605f8080808061425b888a018a61526f565b95509550955095509550508187106142795794506142959350505050565b83871061428d578295505050505050614295565b509293505050505b9392505050565b6142a46138c9565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586142d93390565b6040516001600160a01b03909116815260200160405180910390a1565b6142fe6147b1565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336142d9565b8015613065575f826001600160a01b0316826040515f6040518083038185875af1925050503d805f811461437e576040519150601f19603f3d011682016040523d82523d5f602084013e614383565b606091505b50509050806143d45760405162461bcd60e51b815260206004820152601b60248201527f526f6c6c75703a20455448207472616e73666572206661696c656400000000006044820152606401610a2d565b505050565b5f81607981101561442c5760405162461bcd60e51b815260206004820152601d60248201527f626174636820686561646572206c656e67746820746f6f20736d616c6c0000006044820152606401610a2d565b6040519150808483378082016040525f61444a836009015160c01c90565b905061010060ff82010460200260790182146144a85760405162461bcd60e51b815260206004820152601360248201527f77726f6e67206269746d6170206c656e677468000000000000000000000000006044820152606401610a2d565b509250929050565b5f54610100900460ff1661452c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a2d565b6065805460ff19169055565b5f54610100900460ff166145b45760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a2d565b611ac533613eb7565b5f6145c9835160f81c90565b9050805f03614604576040517f7c62f08c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61460f603c8261530c565b61461a906001614bb3565b8214610eb3576040517fb8f4bbc000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f855f036146615750856141de565b609b546001600160a01b03165f80805b898110156147475760ff89169150600889901c81158061468f575082155b1561469e578060200288013593505b600184841c165f03614736576040517fae453cd5000000000000000000000000000000000000000000000000000000008152600481018a90525f906001600160a01b0387169063ae453cd590602401602060405180830381865afa158015614708573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061472c919061505f565b8d52506020909b019a5b506001988901989788019701614671565b505060ff5f1988011681811c600116156147a35760405162461bcd60e51b815260206004820152601b60248201527f63616e6e6f7420736b6970206c617374204c31206d65737361676500000000006044820152606401610a2d565b509798975050505050505050565b60655460ff16611ac55760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610a2d565b50805461480f90614bd9565b5f825580601f1061481e575050565b601f0160209004905f5260205f2090810190612fe291905b80821115614849575f8155600101614836565b5090565b5f6020828403121561485d575f80fd5b5035919050565b6001600160a01b0381168114612fe2575f80fd5b5f60208284031215614888575f80fd5b813561429581614864565b5f8083601f8401126148a3575f80fd5b50813567ffffffffffffffff8111156148ba575f80fd5b6020830191508360208285010111156148d1575f80fd5b9250929050565b5f805f604084860312156148ea575f80fd5b833567ffffffffffffffff811115614900575f80fd5b61490c86828701614893565b909790965060209590950135949350505050565b803567ffffffffffffffff81168114614937575f80fd5b919050565b5f805f805f60608688031215614950575f80fd5b61495986614920565b9450602086013567ffffffffffffffff80821115614975575f80fd5b61498189838a01614893565b90965094506040880135915080821115614999575f80fd5b506149a688828901614893565b969995985093965092949392505050565b5f5b838110156149d15781810151838201526020016149b9565b50505f910152565b5f81518084526149f08160208601602086016149b7565b601f01601f19169290920160200192915050565b838152826020820152606060408201525f614a2260608301846149d9565b95945050505050565b5f6101008a83528960208401528860408401528760608401528660808401528560a08401528460c08401528060e0840152614a68818401856149d9565b9b9a5050505050505050505050565b5f805f805f8060c08789031215614a8c575f80fd5b8635614a9781614864565b95506020870135614aa781614864565b94506040870135614ab781614864565b959894975094956060810135955060808101359460a0909101359350915050565b5f8060408385031215614ae9575f80fd5b823567ffffffffffffffff80821115614b00575f80fd5b9084019060e08287031215614b13575f80fd5b90925060208401359080821115614b28575f80fd5b50830160608186031215614b3a575f80fd5b809150509250929050565b5f60208284031215614b55575f80fd5b61429582614920565b8015158114612fe2575f80fd5b5f60208284031215614b7b575f80fd5b813561429581614b5e565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610eb357610eb3614b86565b81810381811115610eb357610eb3614b86565b600181811c90821680614bed57607f821691505b602082108103614c24577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b601f8211156143d457805f5260205f20601f840160051c81016020851015614c7c5750805b601f840160051c820191505b81811015611126575f8155600101614c88565b815167ffffffffffffffff811115614cb557614cb5614c2a565b614cc981614cc38454614bd9565b84614c57565b602080601f831160018114614cfc575f8415614ce55750858301515b5f19600386901b1c1916600185901b178555610dd5565b5f85815260208120601f198616915b82811015614d2a57888601518255948401946001909101908401614d0b565b5085821015614d4757878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f60208284031215614d67575f80fd5b815161429581614b5e565b5f60208284031215614d82575f80fd5b813560ff81168114614295575f80fd5b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614dc5575f80fd5b83018035915067ffffffffffffffff821115614ddf575f80fd5b6020019150600581901b36038213156148d1575f80fd5b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614e29575f80fd5b83018035915067ffffffffffffffff821115614e43575f80fd5b6020019150368190038213156148d1575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b818382375f9101908152919050565b5f815180845260208085019450602084015f5b83811015614ecb5781516001600160a01b031687529582019590820190600101614ea6565b509495945050505050565b602081525f6142956020830184614e93565b604051601f8201601f1916810167ffffffffffffffff81118282101715614f1157614f11614c2a565b604052919050565b5f67ffffffffffffffff821115614f3257614f32614c2a565b5060051b60200190565b5f82601f830112614f4b575f80fd5b81356020614f60614f5b83614f19565b614ee8565b8083825260208201915060208460051b870101935086841115614f81575f80fd5b602086015b84811015614fa6578035614f9981614864565b8352918301918301614f86565b509695505050505050565b5f60208284031215614fc1575f80fd5b813567ffffffffffffffff811115614fd7575f80fd5b614fe384828501614f3c565b949350505050565b81835281816020850137505f602082840101525f6020601f19601f840116840101905092915050565b608081525f6150266080830188614e93565b82810360208401526150388188614e93565b90508560408401528281036060840152615053818587614feb565b98975050505050505050565b5f6020828403121561506f575f80fd5b5051919050565b5f5f19820361508757615087614b86565b5060010190565b5f602080838503121561509f575f80fd5b825167ffffffffffffffff8111156150b5575f80fd5b8301601f810185136150c5575f80fd5b80516150d3614f5b82614f19565b81815260059190911b820183019083810190878311156150f1575f80fd5b928401925b8284101561511857835161510981614864565b825292840192908401906150f6565b979650505050505050565b5f82516151348184602087016149b7565b9190910192915050565b838152818360208301375f910160200190815292915050565b5f8060408385031215615168575f80fd5b505080516020909101519092909150565b5f8085851115615187575f80fd5b83861115615193575f80fd5b5050820193919092039150565b7fffffffffffffffff0000000000000000000000000000000000000000000000008960c01b16815287600882015286602882015285604882015284606882015282846088830137608892019182015260a8019695505050505050565b85815267ffffffffffffffff85166020820152608060408201525f615225608083018587614feb565b90508260608301529695505050505050565b5f8261526a577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f805f805f8060c08789031215615284575f80fd5b86359550602087013567ffffffffffffffff808211156152a2575f80fd5b6152ae8a838b01614f3c565b96506040890135955060608901359150808211156152ca575f80fd5b6152d68a838b01614f3c565b94506080890135935060a08901359150808211156152f2575f80fd5b506152ff89828a01614f3c565b9150509295509295509295565b8082028115828204841417610eb357610eb3614b8656fea164736f6c6343000818000a diff --git a/bindings/bindings/distribute.go b/bindings/bindings/distribute.go index 5a51624b8..4e680d063 100644 --- a/bindings/bindings/distribute.go +++ b/bindings/bindings/distribute.go @@ -30,8 +30,8 @@ var ( // DistributeMetaData contains all meta data concerning the Distribute contract. var DistributeMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"upToEpoch\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"CommissionClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"upToEpoch\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardClaimed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"L2_STAKING_CONTRACT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MORPH_TOKEN_CONTRACT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RECORD_CONTRACT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"targetEpochIndex\",\"type\":\"uint256\"}],\"name\":\"claim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"targetEpochIndex\",\"type\":\"uint256\"}],\"name\":\"claimAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"targetEpochIndex\",\"type\":\"uint256\"}],\"name\":\"claimCommission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"effectiveEpoch\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainsNumber\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"newDelegation\",\"type\":\"bool\"}],\"name\":\"notifyDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"effectiveEpoch\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainsNumber\",\"type\":\"uint256\"}],\"name\":\"notifyUndelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"queryUnclaimed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"}],\"name\":\"unclaimedCommission\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"epochIndex\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epochIndex\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"sequencers\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"delegatorRewards\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"commissions\",\"type\":\"uint256[]\"}],\"name\":\"updateEpochReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60e060405234801561000f575f80fd5b5073530000000000000000000000000000000000001060805273530000000000000000000000000000000000001260a05273530000000000000000000000000000000000000560c05260805160a05160c0516120dc6100c15f395f81816101ec0152610d1401525f818161015b01528181610271015281816104a9015281816109b201528181610ac60152610f4b01525f8181610226015281816111550152818161120201526112a901526120dc5ff3fe608060405234801561000f575f80fd5b50600436106100f0575f3560e01c80639889be5111610093578063cdd0c50e11610063578063cdd0c50e1461020e578063d557714114610221578063e16bcc3214610248578063f2fde38b1461025b575f80fd5b80639889be51146101ae578063996cba68146101c1578063ad8e1223146101d4578063cd4281d0146101e7575f80fd5b80637ac3339a116100ce5780637ac3339a14610124578063807de443146101565780638129fc1c146101955780638da5cb5b1461019d575f80fd5b806341302560146100f45780635cf20c7b14610109578063715018a61461011c575b5f80fd5b610107610102366004611ce8565b61026e565b005b610107610117366004611ce8565b6104a6565b610107610675565b610143610132366004611d10565b60676020525f908152604090205481565b6040519081526020015b60405180910390f35b61017d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161014d565b610107610688565b6033546001600160a01b031661017d565b6101436101bc366004611d29565b6107fa565b6101076101cf366004611d5a565b6109af565b6101076101e2366004611d93565b610ac3565b61017d7f000000000000000000000000000000000000000000000000000000000000000081565b61010761021c366004611e24565b610d11565b61017d7f000000000000000000000000000000000000000000000000000000000000000081565b610107610256366004611ecd565b610f48565b610107610269366004611d10565b61108e565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146102eb5760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206c32207374616b696e6720636f6e747261637420616c6c6f77656460448201526064015b60405180910390fd5b6065545f0361033c5760405162461bcd60e51b815260206004820152600c60248201527f6e6f74206d696e7420796574000000000000000000000000000000000000000060448201526064016102e2565b8080158061034b575060655482115b1561036257600160655461035f9190611f63565b90505b6001600160a01b0383165f908152606760205260409020548110156103c95760405162461bcd60e51b815260206004820152601660248201527f616c6c20636f6d6d697373696f6e20636c61696d65640000000000000000000060448201526064016102e2565b6001600160a01b0383165f908152606760205260408120545b82811161042d576001600160a01b0385165f9081526066602090815260408083208484529091529020600101546104199083611f76565b91508061042581611f89565b9150506103e2565b50801561043e5761043e848261111b565b610449826001611f76565b6001600160a01b0385165f8181526067602090815260409182902093909355805185815292830184905290917fe4760bd616775d8b0ae78f9b8bfa4b453fdde769d10a0559ba473157ce9011d4910160405180910390a250505050565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161461051e5760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206c32207374616b696e6720636f6e747261637420616c6c6f77656460448201526064016102e2565b6065545f0361056f5760405162461bcd60e51b815260206004820152600c60248201527f6e6f74206d696e7420796574000000000000000000000000000000000000000060448201526064016102e2565b8080158061057e575060655482115b156105955760016065546105929190611f63565b90505b5f805b6001600160a01b0385165f9081526068602052604090206105b890611379565b81101561065e576001600160a01b0385165f9081526068602052604081206105e09083611388565b6001600160a01b0387165f908152606860205260409020909150610604908261139a565b801561063857506001600160a01b038087165f90815260686020908152604080832093851683526003909301905220548410155b15610655576106488187876113bb565b6106529084611f76565b92505b50600101610598565b50801561066f5761066f848261111b565b50505050565b61067d611956565b6106865f6119b0565b565b5f54610100900460ff16158080156106a657505f54600160ff909116105b806106bf5750303b1580156106bf57505f5460ff166001145b6107315760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016102e2565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561078d575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610795611a19565b80156107f7575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6001600160a01b038082165f9081526068602090815260408083209386168352600390930190529081205481908190805b6065548110156109a5576001600160a01b038088165f9081526066602090815260408083208584528252808320938a1683526006909301905220541561089f576001600160a01b038088165f9081526066602090815260408083208584528252808320938a16835260069093019052205492505b6001600160a01b0387165f908152606660209081526040808320848452909152902060020154156108f3576001600160a01b0387165f90815260666020908152604080832084845290915290206002015493505b6001600160a01b0387165f9081526066602090815260408083208484529091529020548490610923908590611fc0565b61092d9190611fd7565b6109379086611f76565b6001600160a01b038088165f908152606860209081526040808320938c16835260029093019052205490955060ff16801561099957506001600160a01b038087165f908152606860209081526040808320938b16835260049093019052205481145b6109a55760010161082b565b5050505092915050565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610a275760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206c32207374616b696e6720636f6e747261637420616c6c6f77656460448201526064016102e2565b6065545f03610a785760405162461bcd60e51b815260206004820152600c60248201527f6e6f74206d696e7420796574000000000000000000000000000000000000000060448201526064016102e2565b80801580610a87575060655482115b15610a9e576001606554610a9b9190611f63565b90505b5f610aaa8585846113bb565b90508015610abc57610abc848261111b565b5050505050565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610b3b5760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206c32207374616b696e6720636f6e747261637420616c6c6f77656460448201526064016102e2565b6001600160a01b0385165f908152606660209081526040808320868452909152902060028101839055600301819055821580610b9e57506001600160a01b038085165f908152606860209081526040808320938916835260039093019052205483145b15610c83576001600160a01b0385165f9081526066602090815260408083208684529091529020610bd29060040185611a9d565b506001600160a01b038086165f90815260666020908152604080832087845282528083209388168352600690930181528282208290556068905220610c179086611a9d565b506001600160a01b038481165f908152606860209081526040808320938916835260028401825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556003840182528083208390556004909301905290812055610abc565b6001600160a01b038085165f9081526068602090815260408083209389168352600290930190522080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155610ce19084611f63565b6001600160a01b038086165f908152606860209081526040808320938a1683526004909301905220555050505050565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610d895760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c79207265636f726420636f6e747261637420616c6c6f7765640000000060448201526064016102e2565b60658054905f610d9883611f89565b9190505550866001606554610dad9190611f63565b14610dfa5760405162461bcd60e51b815260206004820152601360248201527f696e76616c69642065706f636820696e6465780000000000000000000000000060448201526064016102e2565b8285148015610e0857508085145b610e545760405162461bcd60e51b815260206004820152601360248201527f696e76616c69642064617461206c656e6774680000000000000000000000000060448201526064016102e2565b5f5b85811015610f3e57848482818110610e7057610e7061200f565b9050602002013560665f898985818110610e8c57610e8c61200f565b9050602002016020810190610ea19190611d10565b6001600160a01b0316815260208082019290925260409081015f9081208c8252909252902055828282818110610ed957610ed961200f565b9050602002013560665f898985818110610ef557610ef561200f565b9050602002016020810190610f0a9190611d10565b6001600160a01b0316815260208082019290925260409081015f9081208c8252909252902060019081019190915501610e56565b5050505050505050565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610fc05760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206c32207374616b696e6720636f6e747261637420616c6c6f77656460448201526064016102e2565b6001600160a01b0387165f90815260666020908152604080832088845290915290206002810184905560038101839055610ffd9060040187611ab1565b506001600160a01b038088165f9081526066602090815260408083208984528252808320938a16835260069093019052208490558015611085576001600160a01b0386165f9081526068602052604090206110589088611ab1565b506001600160a01b038087165f908152606860209081526040808320938b16835260039093019052208590555b50505050505050565b611096611956565b6001600160a01b0381166111125760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016102e2565b6107f7816119b0565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa15801561119c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111c0919061203c565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303815f875af115801561124a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061126e9190612053565b506040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa1580156112f0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611314919061203c565b90505f8311801561132d57508261132b8383611f63565b145b61066f5760405162461bcd60e51b815260206004820152601b60248201527f6d6f72706820746f6b656e207472616e73666572206661696c6564000000000060448201526064016102e2565b5f611382825490565b92915050565b5f6113938383611ac5565b9392505050565b6001600160a01b0381165f9081526001830160205260408120541515611393565b6001600160a01b0382165f9081526068602052604081206113dc908561139a565b6114285760405162461bcd60e51b815260206004820152601360248201527f6e6f2072656d61696e696e67207265776172640000000000000000000000000060448201526064016102e2565b6001600160a01b038084165f90815260686020908152604080832093881683526003909301905220548210156114a05760405162461bcd60e51b815260206004820152601260248201527f616c6c2072657761726420636c61696d6564000000000000000000000000000060448201526064016102e2565b6001600160a01b038084165f90815260686020908152604080832093881683526003909301905220545b8281116118f8576001600160a01b038086165f9081526066602090815260408083208584528083528184206002810154958a16855260068101845291842054938690529091525461151b9190611fc0565b6115259190611fd7565b61152f9083611f76565b6001600160a01b0386165f90815260666020526040812091935061157891869161155a856001611f76565b81526020019081526020015f2060040161139a90919063ffffffff16565b611704576001600160a01b0385165f9081526066602052604081206115c3918691906115a5856001611f76565b81526020019081526020015f20600401611ab190919063ffffffff16565b506001600160a01b038086165f818152606660208181526040808420878552808352818520968b1685526006909601825283205493835252909190611609846001611f76565b815260208082019290925260409081015f9081206001600160a01b03808a168352600690910184528282209490945592881683526066909152812090611650836001611f76565b81526020019081526020015f20600201545f03611704576001600160a01b0385165f81815260666020818152604080842086855280835290842060020154948452919052906116a0846001611f76565b815260208082019290925260409081015f908120600201939093556001600160a01b03881680845260668084528285208686528085529285206003015491855290925290916116f0846001611f76565b815260208101919091526040015f20600301555b6001600160a01b0385165f90815260666020908152604080832084845290915281206003018054916117358361206e565b90915550506001600160a01b0385165f90815260666020908152604080832084845290915281206003015490036117b9576001600160a01b0385165f908152606660209081526040808320848452909152812081815560018101829055600281018290556003810182905590600482018181816117b28282611c9f565b5050505050505b6001600160a01b038085165f908152606860209081526040808320938916835260029093019052205460ff16801561181857506001600160a01b038085165f908152606860209081526040808320938916835260049093019052205481145b156118aa576001600160a01b0384165f90815260686020526040902061183e9086611a9d565b506001600160a01b038481165f908152606860209081526040808320938916835260028401825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905560038401825280832083905560049093019052908120556118f8565b6001600160a01b038085165f9081526068602090815260408083209389168352600390930190529081208054916118e083611f89565b919050555080806118f090611f89565b9150506114ca565b50836001600160a01b0316836001600160a01b03167f7a84a08b02c91f3c62d572853f966fc799bbd121e8ad7833a4494ab8dcfcb4048484604051611947929190918252602082015260400190565b60405180910390a39392505050565b6033546001600160a01b031633146106865760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102e2565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16611a955760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016102e2565b610686611aeb565b5f611393836001600160a01b038416611b70565b5f611393836001600160a01b038416611c53565b5f825f018281548110611ada57611ada61200f565b905f5260205f200154905092915050565b5f54610100900460ff16611b675760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016102e2565b610686336119b0565b5f8181526001830160205260408120548015611c4a575f611b92600183611f63565b85549091505f90611ba590600190611f63565b9050818114611c04575f865f018281548110611bc357611bc361200f565b905f5260205f200154905080875f018481548110611be357611be361200f565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080611c1557611c156120a2565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050611382565b5f915050611382565b5f818152600183016020526040812054611c9857508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155611382565b505f611382565b5080545f8255905f5260205f20908101906107f791905b80821115611cc9575f8155600101611cb6565b5090565b80356001600160a01b0381168114611ce3575f80fd5b919050565b5f8060408385031215611cf9575f80fd5b611d0283611ccd565b946020939093013593505050565b5f60208284031215611d20575f80fd5b61139382611ccd565b5f8060408385031215611d3a575f80fd5b611d4383611ccd565b9150611d5160208401611ccd565b90509250929050565b5f805f60608486031215611d6c575f80fd5b611d7584611ccd565b9250611d8360208501611ccd565b9150604084013590509250925092565b5f805f805f60a08688031215611da7575f80fd5b611db086611ccd565b9450611dbe60208701611ccd565b94979496505050506040830135926060810135926080909101359150565b5f8083601f840112611dec575f80fd5b50813567ffffffffffffffff811115611e03575f80fd5b6020830191508360208260051b8501011115611e1d575f80fd5b9250929050565b5f805f805f805f6080888a031215611e3a575f80fd5b87359650602088013567ffffffffffffffff80821115611e58575f80fd5b611e648b838c01611ddc565b909850965060408a0135915080821115611e7c575f80fd5b611e888b838c01611ddc565b909650945060608a0135915080821115611ea0575f80fd5b50611ead8a828b01611ddc565b989b979a50959850939692959293505050565b80151581146107f7575f80fd5b5f805f805f805f60e0888a031215611ee3575f80fd5b611eec88611ccd565b9650611efa60208901611ccd565b955060408801359450606088013593506080880135925060a0880135915060c0880135611f2681611ec0565b8091505092959891949750929550565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561138257611382611f36565b8082018082111561138257611382611f36565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611fb957611fb9611f36565b5060010190565b808202811582820484141761138257611382611f36565b5f8261200a577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6020828403121561204c575f80fd5b5051919050565b5f60208284031215612063575f80fd5b815161139381611ec0565b5f8161207c5761207c611f36565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea164736f6c6343000818000a", + ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"upToEpoch\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"CommissionClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"upToEpoch\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"RewardClaimed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"L2_STAKING_CONTRACT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MORPH_TOKEN_CONTRACT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RECORD_CONTRACT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"targetEpochIndex\",\"type\":\"uint256\"}],\"name\":\"claim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"targetEpochIndex\",\"type\":\"uint256\"}],\"name\":\"claimAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"targetEpochIndex\",\"type\":\"uint256\"}],\"name\":\"claimCommission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"}],\"name\":\"nextEpochToClaimCommission\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"epochIndex\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"effectiveEpoch\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainsNumber\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"newDelegation\",\"type\":\"bool\"}],\"name\":\"notifyDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"effectiveEpoch\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainsNumber\",\"type\":\"uint256\"}],\"name\":\"notifyUndelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"queryUnclaimed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epochIndex\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"sequencers\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"delegatorRewards\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"commissions\",\"type\":\"uint256[]\"}],\"name\":\"updateEpochReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x60e060405234801561000f575f80fd5b5073530000000000000000000000000000000000001360805273530000000000000000000000000000000000001560a05273530000000000000000000000000000000000001260c05260805160a05160c0516122116100c15f395f81816101cd0152610dcb01525f8181610129015281816102710152818161054001528181610a5901528181610b7d015261100201525f81816102260152818161120c015281816112b9015261136001526122115ff3fe608060405234801561000f575f80fd5b50600436106100f0575f3560e01c8063996cba6811610093578063ce293aaf11610063578063ce293aaf14610202578063d557714114610221578063e16bcc3214610248578063f2fde38b1461025b575f80fd5b8063996cba68146101a2578063ad8e1223146101b5578063cd4281d0146101c8578063cdd0c50e146101ef575f80fd5b8063807de443116100ce578063807de443146101245780638129fc1c146101685780638da5cb5b146101705780639889be5114610181575f80fd5b806341302560146100f45780635cf20c7b14610109578063715018a61461011c575b5f80fd5b610107610102366004611e1d565b61026e565b005b610107610117366004611e1d565b61053d565b61010761071c565b61014b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61010761072f565b6033546001600160a01b031661014b565b61019461018f366004611e45565b6108a1565b60405190815260200161015f565b6101076101b0366004611e76565b610a56565b6101076101c3366004611eaf565b610b7a565b61014b7f000000000000000000000000000000000000000000000000000000000000000081565b6101076101fd366004611f40565b610dc8565b610194610210366004611fdc565b60676020525f908152604090205481565b61014b7f000000000000000000000000000000000000000000000000000000000000000081565b610107610256366004612002565b610fff565b610107610269366004611fdc565b611145565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146102eb5760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206c32207374616b696e6720636f6e747261637420616c6c6f77656460448201526064015b60405180910390fd5b6065545f0361033c5760405162461bcd60e51b815260206004820152600e60248201527f6e6f74206d696e7465642079657400000000000000000000000000000000000060448201526064016102e2565b5f811580610357575060016065546103549190612098565b82115b6103615781610370565b60016065546103709190612098565b6001600160a01b0384165f908152606760205260409020549091508110156103da5760405162461bcd60e51b815260206004820152601660248201527f616c6c20636f6d6d697373696f6e20636c61696d65640000000000000000000060448201526064016102e2565b6001600160a01b0383165f908152606760205260408120545b8281116104c4576001600160a01b0385165f90815260666020908152604080832084845290915290206001015461042a90836120ab565b6001600160a01b0386165f90815260666020908152604080832085845290915281206001810182905560030154919350036104b2576001600160a01b0385165f908152606660209081526040808320848452909152812081815560018101829055600281018290556003810182905590600482018181816104ab8282611dd4565b5050505050505b806104bc816120be565b9150506103f3565b5080156104d5576104d584826111d2565b6104e08260016120ab565b6001600160a01b0385165f8181526067602090815260409182902093909355805185815292830184905290917fe4760bd616775d8b0ae78f9b8bfa4b453fdde769d10a0559ba473157ce9011d4910160405180910390a250505050565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146105b55760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206c32207374616b696e6720636f6e747261637420616c6c6f77656460448201526064016102e2565b6065545f036106065760405162461bcd60e51b815260206004820152600e60248201527f6e6f74206d696e7465642079657400000000000000000000000000000000000060448201526064016102e2565b5f8115806106215750600160655461061e9190612098565b82115b61062b578161063a565b600160655461063a9190612098565b90505f805b6001600160a01b0385165f90815260686020526040902061065f90611430565b811015610705576001600160a01b0385165f908152606860205260408120610687908361143f565b6001600160a01b0387165f9081526068602052604090209091506106ab9082611451565b80156106df57506001600160a01b038087165f90815260686020908152604080832093851683526003909301905220548410155b156106fc576106ef818786611472565b6106f990846120ab565b92505b5060010161063f565b5080156107165761071684826111d2565b50505050565b610724611a8b565b61072d5f611ae5565b565b5f54610100900460ff161580801561074d57505f54600160ff909116105b806107665750303b15801561076657505f5460ff166001145b6107d85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016102e2565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610834575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61083c611b4e565b801561089e575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6001600160a01b038082165f9081526068602090815260408083209386168352600390930190529081205481908190805b606554811015610a4c576001600160a01b038088165f9081526066602090815260408083208584528252808320938a16835260069093019052205415610946576001600160a01b038088165f9081526066602090815260408083208584528252808320938a16835260069093019052205492505b6001600160a01b0387165f9081526066602090815260408083208484529091529020600201541561099a576001600160a01b0387165f90815260666020908152604080832084845290915290206002015493505b6001600160a01b0387165f90815260666020908152604080832084845290915290205484906109ca9085906120f5565b6109d4919061210c565b6109de90866120ab565b6001600160a01b038088165f908152606860209081526040808320938c16835260029093019052205490955060ff168015610a4057506001600160a01b038087165f908152606860209081526040808320938b16835260049093019052205481145b610a4c576001016108d2565b5050505092915050565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610ace5760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206c32207374616b696e6720636f6e747261637420616c6c6f77656460448201526064016102e2565b6065545f03610b1f5760405162461bcd60e51b815260206004820152600e60248201527f6e6f74206d696e7465642079657400000000000000000000000000000000000060448201526064016102e2565b5f811580610b3a57506001606554610b379190612098565b82115b610b445781610b53565b6001606554610b539190612098565b90505f610b61858584611472565b90508015610b7357610b7384826111d2565b5050505050565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610bf25760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206c32207374616b696e6720636f6e747261637420616c6c6f77656460448201526064016102e2565b6001600160a01b0385165f908152606660209081526040808320868452909152902060028101839055600301819055821580610c5557506001600160a01b038085165f908152606860209081526040808320938916835260039093019052205483145b15610d3a576001600160a01b0385165f9081526066602090815260408083208684529091529020610c899060040185611bd2565b506001600160a01b038086165f90815260666020908152604080832087845282528083209388168352600690930181528282208290556068905220610cce9086611bd2565b506001600160a01b038481165f908152606860209081526040808320938916835260028401825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556003840182528083208390556004909301905290812055610b73565b6001600160a01b038085165f9081526068602090815260408083209389168352600290930190522080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155610d989084612098565b6001600160a01b038086165f908152606860209081526040808320938a1683526004909301905220555050505050565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610e405760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c79207265636f726420636f6e747261637420616c6c6f7765640000000060448201526064016102e2565b60658054905f610e4f836120be565b9190505550866001606554610e649190612098565b14610eb15760405162461bcd60e51b815260206004820152601360248201527f696e76616c69642065706f636820696e6465780000000000000000000000000060448201526064016102e2565b8285148015610ebf57508085145b610f0b5760405162461bcd60e51b815260206004820152601360248201527f696e76616c69642064617461206c656e6774680000000000000000000000000060448201526064016102e2565b5f5b85811015610ff557848482818110610f2757610f27612144565b9050602002013560665f898985818110610f4357610f43612144565b9050602002016020810190610f589190611fdc565b6001600160a01b0316815260208082019290925260409081015f9081208c8252909252902055828282818110610f9057610f90612144565b9050602002013560665f898985818110610fac57610fac612144565b9050602002016020810190610fc19190611fdc565b6001600160a01b0316815260208082019290925260409081015f9081208c8252909252902060019081019190915501610f0d565b5050505050505050565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146110775760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206c32207374616b696e6720636f6e747261637420616c6c6f77656460448201526064016102e2565b6001600160a01b0387165f908152606660209081526040808320888452909152902060028101849055600381018390556110b49060040187611be6565b506001600160a01b038088165f9081526066602090815260408083208984528252808320938a1683526006909301905220849055801561113c576001600160a01b0386165f90815260686020526040902061110f9088611be6565b506001600160a01b038087165f908152606860209081526040808320938b16835260039093019052208590555b50505050505050565b61114d611a8b565b6001600160a01b0381166111c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016102e2565b61089e81611ae5565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015611253573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112779190612171565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303815f875af1158015611301573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113259190612188565b506040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa1580156113a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113cb9190612171565b90505f831180156113e45750826113e28383612098565b145b6107165760405162461bcd60e51b815260206004820152601b60248201527f6d6f72706820746f6b656e207472616e73666572206661696c6564000000000060448201526064016102e2565b5f611439825490565b92915050565b5f61144a8383611bfa565b9392505050565b6001600160a01b0381165f908152600183016020526040812054151561144a565b6001600160a01b0382165f9081526068602052604081206114939085611451565b6114df5760405162461bcd60e51b815260206004820152601360248201527f6e6f2072656d61696e696e67207265776172640000000000000000000000000060448201526064016102e2565b6001600160a01b038084165f90815260686020908152604080832093881683526003909301905220548210156115575760405162461bcd60e51b815260206004820152601260248201527f616c6c2072657761726420636c61696d6564000000000000000000000000000060448201526064016102e2565b6001600160a01b038084165f90815260686020908152604080832093881683526003909301905220545b828111611a0e576001600160a01b038086165f9081526066602090815260408083208584528083528184206002810154958a1685526006810184529184205493869052909152546115d291906120f5565b6115dc919061210c565b6115e690836120ab565b6001600160a01b038086165f908152606860209081526040808320938a16835260029093019052205490925060ff16158061164957506001600160a01b038085165f90815260686020908152604080832093891683526004909301905220548114155b15611827576001600160a01b0385165f908152606660205260408120611695918691906116778560016120ab565b81526020019081526020015f2060040161145190919063ffffffff16565b611750576001600160a01b0385165f9081526066602052604081206116e0918691906116c28560016120ab565b81526020019081526020015f20600401611be690919063ffffffff16565b506001600160a01b038086165f818152606660208181526040808420878552808352818520968b16855260069096018252832054938352529091906117268460016120ab565b815260208082019290925260409081015f9081206001600160a01b03891682526006019092529020555b6001600160a01b0385165f908152606660205260408120906117738360016120ab565b81526020019081526020015f20600201545f03611827576001600160a01b0385165f81815260666020818152604080842086855280835290842060020154948452919052906117c38460016120ab565b815260208082019290925260409081015f908120600201939093556001600160a01b03881680845260668084528285208686528085529285206003015491855290925290916118138460016120ab565b815260208101919091526040015f20600301555b6001600160a01b0385165f9081526066602090815260408083208484529091528120600301805491611858836121a3565b90915550506001600160a01b0385165f9081526066602090815260408083208484529091529020600301541580156118b357506001600160a01b0385165f908152606660209081526040808320848452909152902060010154155b1561190b576001600160a01b0385165f908152606660209081526040808320848452909152812081815560018101829055600281018290556003810182905590600482018181816119048282611dd4565b5050505050505b6001600160a01b038085165f908152606860209081526040808320938916835260029093019052205460ff16801561196a57506001600160a01b038085165f908152606860209081526040808320938916835260049093019052205481145b156119fc576001600160a01b0384165f9081526068602052604090206119909086611bd2565b506001600160a01b038481165f908152606860209081526040808320938916835260028401825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556003840182528083208390556004909301905290812055611a0e565b80611a06816120be565b915050611581565b50611a1a8260016120ab565b6001600160a01b038481165f818152606860209081526040808320948a168084526003909501825291829020949094558051868152938401859052919290917f7a84a08b02c91f3c62d572853f966fc799bbd121e8ad7833a4494ab8dcfcb404910160405180910390a39392505050565b6033546001600160a01b0316331461072d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102e2565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16611bca5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016102e2565b61072d611c20565b5f61144a836001600160a01b038416611ca5565b5f61144a836001600160a01b038416611d88565b5f825f018281548110611c0f57611c0f612144565b905f5260205f200154905092915050565b5f54610100900460ff16611c9c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016102e2565b61072d33611ae5565b5f8181526001830160205260408120548015611d7f575f611cc7600183612098565b85549091505f90611cda90600190612098565b9050818114611d39575f865f018281548110611cf857611cf8612144565b905f5260205f200154905080875f018481548110611d1857611d18612144565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080611d4a57611d4a6121d7565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050611439565b5f915050611439565b5f818152600183016020526040812054611dcd57508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155611439565b505f611439565b5080545f8255905f5260205f209081019061089e91905b80821115611dfe575f8155600101611deb565b5090565b80356001600160a01b0381168114611e18575f80fd5b919050565b5f8060408385031215611e2e575f80fd5b611e3783611e02565b946020939093013593505050565b5f8060408385031215611e56575f80fd5b611e5f83611e02565b9150611e6d60208401611e02565b90509250929050565b5f805f60608486031215611e88575f80fd5b611e9184611e02565b9250611e9f60208501611e02565b9150604084013590509250925092565b5f805f805f60a08688031215611ec3575f80fd5b611ecc86611e02565b9450611eda60208701611e02565b94979496505050506040830135926060810135926080909101359150565b5f8083601f840112611f08575f80fd5b50813567ffffffffffffffff811115611f1f575f80fd5b6020830191508360208260051b8501011115611f39575f80fd5b9250929050565b5f805f805f805f6080888a031215611f56575f80fd5b87359650602088013567ffffffffffffffff80821115611f74575f80fd5b611f808b838c01611ef8565b909850965060408a0135915080821115611f98575f80fd5b611fa48b838c01611ef8565b909650945060608a0135915080821115611fbc575f80fd5b50611fc98a828b01611ef8565b989b979a50959850939692959293505050565b5f60208284031215611fec575f80fd5b61144a82611e02565b801515811461089e575f80fd5b5f805f805f805f60e0888a031215612018575f80fd5b61202188611e02565b965061202f60208901611e02565b955060408801359450606088013593506080880135925060a0880135915060c088013561205b81611ff5565b8091505092959891949750929550565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156114395761143961206b565b808201808211156114395761143961206b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036120ee576120ee61206b565b5060010190565b80820281158282048414176114395761143961206b565b5f8261213f577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215612181575f80fd5b5051919050565b5f60208284031215612198575f80fd5b815161144a81611ff5565b5f816121b1576121b161206b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea164736f6c6343000818000a", } // DistributeABI is the input ABI used to generate the binding from. @@ -294,6 +294,37 @@ func (_Distribute *DistributeCallerSession) RECORDCONTRACT() (common.Address, er return _Distribute.Contract.RECORDCONTRACT(&_Distribute.CallOpts) } +// NextEpochToClaimCommission is a free data retrieval call binding the contract method 0xce293aaf. +// +// Solidity: function nextEpochToClaimCommission(address delegatee) view returns(uint256 epochIndex) +func (_Distribute *DistributeCaller) NextEpochToClaimCommission(opts *bind.CallOpts, delegatee common.Address) (*big.Int, error) { + var out []interface{} + err := _Distribute.contract.Call(opts, &out, "nextEpochToClaimCommission", delegatee) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// NextEpochToClaimCommission is a free data retrieval call binding the contract method 0xce293aaf. +// +// Solidity: function nextEpochToClaimCommission(address delegatee) view returns(uint256 epochIndex) +func (_Distribute *DistributeSession) NextEpochToClaimCommission(delegatee common.Address) (*big.Int, error) { + return _Distribute.Contract.NextEpochToClaimCommission(&_Distribute.CallOpts, delegatee) +} + +// NextEpochToClaimCommission is a free data retrieval call binding the contract method 0xce293aaf. +// +// Solidity: function nextEpochToClaimCommission(address delegatee) view returns(uint256 epochIndex) +func (_Distribute *DistributeCallerSession) NextEpochToClaimCommission(delegatee common.Address) (*big.Int, error) { + return _Distribute.Contract.NextEpochToClaimCommission(&_Distribute.CallOpts, delegatee) +} + // Owner is a free data retrieval call binding the contract method 0x8da5cb5b. // // Solidity: function owner() view returns(address) @@ -356,37 +387,6 @@ func (_Distribute *DistributeCallerSession) QueryUnclaimed(delegatee common.Addr return _Distribute.Contract.QueryUnclaimed(&_Distribute.CallOpts, delegatee, delegator) } -// UnclaimedCommission is a free data retrieval call binding the contract method 0x7ac3339a. -// -// Solidity: function unclaimedCommission(address delegatee) view returns(uint256 epochIndex) -func (_Distribute *DistributeCaller) UnclaimedCommission(opts *bind.CallOpts, delegatee common.Address) (*big.Int, error) { - var out []interface{} - err := _Distribute.contract.Call(opts, &out, "unclaimedCommission", delegatee) - - if err != nil { - return *new(*big.Int), err - } - - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) - - return out0, err - -} - -// UnclaimedCommission is a free data retrieval call binding the contract method 0x7ac3339a. -// -// Solidity: function unclaimedCommission(address delegatee) view returns(uint256 epochIndex) -func (_Distribute *DistributeSession) UnclaimedCommission(delegatee common.Address) (*big.Int, error) { - return _Distribute.Contract.UnclaimedCommission(&_Distribute.CallOpts, delegatee) -} - -// UnclaimedCommission is a free data retrieval call binding the contract method 0x7ac3339a. -// -// Solidity: function unclaimedCommission(address delegatee) view returns(uint256 epochIndex) -func (_Distribute *DistributeCallerSession) UnclaimedCommission(delegatee common.Address) (*big.Int, error) { - return _Distribute.Contract.UnclaimedCommission(&_Distribute.CallOpts, delegatee) -} - // Claim is a paid mutator transaction binding the contract method 0x996cba68. // // Solidity: function claim(address delegatee, address delegator, uint256 targetEpochIndex) returns() diff --git a/bindings/bindings/distribute_more.go b/bindings/bindings/distribute_more.go index c4bdddfec..a9629540d 100644 --- a/bindings/bindings/distribute_more.go +++ b/bindings/bindings/distribute_more.go @@ -9,11 +9,11 @@ import ( "morph-l2/bindings/solc" ) -const DistributeStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract\":\"contracts/l2/staking/Distribute.sol:Distribute\",\"label\":\"_initialized\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_uint8\"},{\"astId\":1001,\"contract\":\"contracts/l2/staking/Distribute.sol:Distribute\",\"label\":\"_initializing\",\"offset\":1,\"slot\":\"0\",\"type\":\"t_bool\"},{\"astId\":1002,\"contract\":\"contracts/l2/staking/Distribute.sol:Distribute\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_array(t_uint256)1010_storage\"},{\"astId\":1003,\"contract\":\"contracts/l2/staking/Distribute.sol:Distribute\",\"label\":\"_owner\",\"offset\":0,\"slot\":\"51\",\"type\":\"t_address\"},{\"astId\":1004,\"contract\":\"contracts/l2/staking/Distribute.sol:Distribute\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"52\",\"type\":\"t_array(t_uint256)1009_storage\"},{\"astId\":1005,\"contract\":\"contracts/l2/staking/Distribute.sol:Distribute\",\"label\":\"mintedEpochCount\",\"offset\":0,\"slot\":\"101\",\"type\":\"t_uint256\"},{\"astId\":1006,\"contract\":\"contracts/l2/staking/Distribute.sol:Distribute\",\"label\":\"distributions\",\"offset\":0,\"slot\":\"102\",\"type\":\"t_mapping(t_address,t_mapping(t_uint256,t_struct(Distribution)1012_storage))\"},{\"astId\":1007,\"contract\":\"contracts/l2/staking/Distribute.sol:Distribute\",\"label\":\"unclaimedCommission\",\"offset\":0,\"slot\":\"103\",\"type\":\"t_mapping(t_address,t_uint256)\"},{\"astId\":1008,\"contract\":\"contracts/l2/staking/Distribute.sol:Distribute\",\"label\":\"unclaimed\",\"offset\":0,\"slot\":\"104\",\"type\":\"t_mapping(t_address,t_struct(Unclaimed)1014_storage)\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"},\"t_array(t_bytes32)dyn_storage\":{\"encoding\":\"dynamic_array\",\"label\":\"bytes32[]\",\"numberOfBytes\":\"32\"},\"t_array(t_uint256)1009_storage\":{\"encoding\":\"inplace\",\"label\":\"uint256[49]\",\"numberOfBytes\":\"1568\"},\"t_array(t_uint256)1010_storage\":{\"encoding\":\"inplace\",\"label\":\"uint256[50]\",\"numberOfBytes\":\"1600\"},\"t_bool\":{\"encoding\":\"inplace\",\"label\":\"bool\",\"numberOfBytes\":\"1\"},\"t_bytes32\":{\"encoding\":\"inplace\",\"label\":\"bytes32\",\"numberOfBytes\":\"32\"},\"t_mapping(t_address,t_bool)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e bool)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_bool\"},\"t_mapping(t_address,t_mapping(t_uint256,t_struct(Distribution)1012_storage))\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e mapping(uint256 =\u003e struct IDistribute.Distribution))\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_mapping(t_uint256,t_struct(Distribution)1012_storage)\"},\"t_mapping(t_address,t_struct(Unclaimed)1014_storage)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e struct IDistribute.Unclaimed)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_struct(Unclaimed)1014_storage\"},\"t_mapping(t_address,t_uint256)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e uint256)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_uint256\"},\"t_mapping(t_bytes32,t_uint256)\":{\"encoding\":\"mapping\",\"label\":\"mapping(bytes32 =\u003e uint256)\",\"numberOfBytes\":\"32\",\"key\":\"t_bytes32\",\"value\":\"t_uint256\"},\"t_mapping(t_uint256,t_struct(Distribution)1012_storage)\":{\"encoding\":\"mapping\",\"label\":\"mapping(uint256 =\u003e struct IDistribute.Distribution)\",\"numberOfBytes\":\"32\",\"key\":\"t_uint256\",\"value\":\"t_struct(Distribution)1012_storage\"},\"t_struct(AddressSet)1011_storage\":{\"encoding\":\"inplace\",\"label\":\"struct EnumerableSetUpgradeable.AddressSet\",\"numberOfBytes\":\"64\"},\"t_struct(Distribution)1012_storage\":{\"encoding\":\"inplace\",\"label\":\"struct IDistribute.Distribution\",\"numberOfBytes\":\"224\"},\"t_struct(Set)1013_storage\":{\"encoding\":\"inplace\",\"label\":\"struct EnumerableSetUpgradeable.Set\",\"numberOfBytes\":\"64\"},\"t_struct(Unclaimed)1014_storage\":{\"encoding\":\"inplace\",\"label\":\"struct IDistribute.Unclaimed\",\"numberOfBytes\":\"160\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"},\"t_uint8\":{\"encoding\":\"inplace\",\"label\":\"uint8\",\"numberOfBytes\":\"1\"}}}" +const DistributeStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract\":\"contracts/l2/staking/Distribute.sol:Distribute\",\"label\":\"_initialized\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_uint8\"},{\"astId\":1001,\"contract\":\"contracts/l2/staking/Distribute.sol:Distribute\",\"label\":\"_initializing\",\"offset\":1,\"slot\":\"0\",\"type\":\"t_bool\"},{\"astId\":1002,\"contract\":\"contracts/l2/staking/Distribute.sol:Distribute\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_array(t_uint256)1010_storage\"},{\"astId\":1003,\"contract\":\"contracts/l2/staking/Distribute.sol:Distribute\",\"label\":\"_owner\",\"offset\":0,\"slot\":\"51\",\"type\":\"t_address\"},{\"astId\":1004,\"contract\":\"contracts/l2/staking/Distribute.sol:Distribute\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"52\",\"type\":\"t_array(t_uint256)1009_storage\"},{\"astId\":1005,\"contract\":\"contracts/l2/staking/Distribute.sol:Distribute\",\"label\":\"mintedEpochCount\",\"offset\":0,\"slot\":\"101\",\"type\":\"t_uint256\"},{\"astId\":1006,\"contract\":\"contracts/l2/staking/Distribute.sol:Distribute\",\"label\":\"distributions\",\"offset\":0,\"slot\":\"102\",\"type\":\"t_mapping(t_address,t_mapping(t_uint256,t_struct(Distribution)1012_storage))\"},{\"astId\":1007,\"contract\":\"contracts/l2/staking/Distribute.sol:Distribute\",\"label\":\"nextEpochToClaimCommission\",\"offset\":0,\"slot\":\"103\",\"type\":\"t_mapping(t_address,t_uint256)\"},{\"astId\":1008,\"contract\":\"contracts/l2/staking/Distribute.sol:Distribute\",\"label\":\"unclaimed\",\"offset\":0,\"slot\":\"104\",\"type\":\"t_mapping(t_address,t_struct(Unclaimed)1014_storage)\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"},\"t_array(t_bytes32)dyn_storage\":{\"encoding\":\"dynamic_array\",\"label\":\"bytes32[]\",\"numberOfBytes\":\"32\"},\"t_array(t_uint256)1009_storage\":{\"encoding\":\"inplace\",\"label\":\"uint256[49]\",\"numberOfBytes\":\"1568\"},\"t_array(t_uint256)1010_storage\":{\"encoding\":\"inplace\",\"label\":\"uint256[50]\",\"numberOfBytes\":\"1600\"},\"t_bool\":{\"encoding\":\"inplace\",\"label\":\"bool\",\"numberOfBytes\":\"1\"},\"t_bytes32\":{\"encoding\":\"inplace\",\"label\":\"bytes32\",\"numberOfBytes\":\"32\"},\"t_mapping(t_address,t_bool)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e bool)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_bool\"},\"t_mapping(t_address,t_mapping(t_uint256,t_struct(Distribution)1012_storage))\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e mapping(uint256 =\u003e struct IDistribute.Distribution))\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_mapping(t_uint256,t_struct(Distribution)1012_storage)\"},\"t_mapping(t_address,t_struct(Unclaimed)1014_storage)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e struct IDistribute.Unclaimed)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_struct(Unclaimed)1014_storage\"},\"t_mapping(t_address,t_uint256)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e uint256)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_uint256\"},\"t_mapping(t_bytes32,t_uint256)\":{\"encoding\":\"mapping\",\"label\":\"mapping(bytes32 =\u003e uint256)\",\"numberOfBytes\":\"32\",\"key\":\"t_bytes32\",\"value\":\"t_uint256\"},\"t_mapping(t_uint256,t_struct(Distribution)1012_storage)\":{\"encoding\":\"mapping\",\"label\":\"mapping(uint256 =\u003e struct IDistribute.Distribution)\",\"numberOfBytes\":\"32\",\"key\":\"t_uint256\",\"value\":\"t_struct(Distribution)1012_storage\"},\"t_struct(AddressSet)1011_storage\":{\"encoding\":\"inplace\",\"label\":\"struct EnumerableSetUpgradeable.AddressSet\",\"numberOfBytes\":\"64\"},\"t_struct(Distribution)1012_storage\":{\"encoding\":\"inplace\",\"label\":\"struct IDistribute.Distribution\",\"numberOfBytes\":\"224\"},\"t_struct(Set)1013_storage\":{\"encoding\":\"inplace\",\"label\":\"struct EnumerableSetUpgradeable.Set\",\"numberOfBytes\":\"64\"},\"t_struct(Unclaimed)1014_storage\":{\"encoding\":\"inplace\",\"label\":\"struct IDistribute.Unclaimed\",\"numberOfBytes\":\"160\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"},\"t_uint8\":{\"encoding\":\"inplace\",\"label\":\"uint8\",\"numberOfBytes\":\"1\"}}}" var DistributeStorageLayout = new(solc.StorageLayout) -var DistributeDeployedBin = "0x608060405234801561000f575f80fd5b50600436106100f0575f3560e01c80639889be5111610093578063cdd0c50e11610063578063cdd0c50e14610228578063d55771411461023b578063e16bcc3214610262578063f2fde38b14610275575f80fd5b80639889be51146101c8578063996cba68146101db578063ad8e1223146101ee578063cd4281d014610201575f80fd5b80637ac3339a116100ce5780637ac3339a14610124578063807de443146101565780638129fc1c146101a25780638da5cb5b146101aa575f80fd5b806341302560146100f45780635cf20c7b14610109578063715018a61461011c575b5f80fd5b610107610102366004612257565b610288565b005b610107610117366004612257565b61054f565b610107610793565b61014361013236600461227f565b60676020525f908152604090205481565b6040519081526020015b60405180910390f35b61017d7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161014d565b6101076107a6565b60335473ffffffffffffffffffffffffffffffffffffffff1661017d565b6101436101d6366004612298565b610932565b6101076101e93660046122c9565b610b4f565b6101076101fc366004612302565b610ca4565b61017d7f000000000000000000000000000000000000000000000000000000000000000081565b610107610236366004612393565b610f74565b61017d7f000000000000000000000000000000000000000000000000000000000000000081565b61010761027036600461243c565b611220565b61010761028336600461227f565b6113c1565b337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff161461032c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f6f6e6c79206c32207374616b696e6720636f6e747261637420616c6c6f77656460448201526064015b60405180910390fd5b6065545f03610397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6e6f74206d696e742079657400000000000000000000000000000000000000006044820152606401610323565b808015806103a6575060655482115b156103bd5760016065546103ba91906124d2565b90505b73ffffffffffffffffffffffffffffffffffffffff83165f9081526067602052604090205481101561044b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f616c6c20636f6d6d697373696f6e20636c61696d6564000000000000000000006044820152606401610323565b73ffffffffffffffffffffffffffffffffffffffff83165f908152606760205260408120545b8281116104c95773ffffffffffffffffffffffffffffffffffffffff85165f9081526066602090815260408083208484529091529020600101546104b590836124e5565b9150806104c1816124f8565b915050610471565b5080156104da576104da8482611475565b6104e58260016124e5565b73ffffffffffffffffffffffffffffffffffffffff85165f8181526067602090815260409182902093909355805185815292830184905290917fe4760bd616775d8b0ae78f9b8bfa4b453fdde769d10a0559ba473157ce9011d4910160405180910390a250505050565b337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16146105ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f6f6e6c79206c32207374616b696e6720636f6e747261637420616c6c6f7765646044820152606401610323565b6065545f03610659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6e6f74206d696e742079657400000000000000000000000000000000000000006044820152606401610323565b80801580610668575060655482115b1561067f57600160655461067c91906124d2565b90505b5f805b73ffffffffffffffffffffffffffffffffffffffff85165f9081526068602052604090206106af90611714565b81101561077c5773ffffffffffffffffffffffffffffffffffffffff85165f9081526068602052604081206106e49083611723565b73ffffffffffffffffffffffffffffffffffffffff87165f9081526068602052604090209091506107159082611735565b8015610756575073ffffffffffffffffffffffffffffffffffffffff8087165f90815260686020908152604080832093851683526003909301905220548410155b1561077357610766818787611763565b61077090846124e5565b92505b50600101610682565b50801561078d5761078d8482611475565b50505050565b61079b611e36565b6107a45f611eb7565b565b5f54610100900460ff16158080156107c457505f54600160ff909116105b806107dd5750303b1580156107dd57505f5460ff166001145b610869576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610323565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156108c5575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6108cd611f2d565b801561092f575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b73ffffffffffffffffffffffffffffffffffffffff8082165f9081526068602090815260408083209386168352600390930190529081205481908190805b606554811015610b455773ffffffffffffffffffffffffffffffffffffffff8088165f9081526066602090815260408083208584528252808320938a168352600690930190522054156109fe5773ffffffffffffffffffffffffffffffffffffffff8088165f9081526066602090815260408083208584528252808320938a16835260069093019052205492505b73ffffffffffffffffffffffffffffffffffffffff87165f90815260666020908152604080832084845290915290206002015415610a6c5773ffffffffffffffffffffffffffffffffffffffff87165f90815260666020908152604080832084845290915290206002015493505b73ffffffffffffffffffffffffffffffffffffffff87165f9081526066602090815260408083208484529091529020548490610aa990859061252f565b610ab39190612546565b610abd90866124e5565b73ffffffffffffffffffffffffffffffffffffffff8088165f908152606860209081526040808320938c16835260029093019052205490955060ff168015610b39575073ffffffffffffffffffffffffffffffffffffffff8087165f908152606860209081526040808320938b16835260049093019052205481145b610b4557600101610970565b5050505092915050565b337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614610bee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f6f6e6c79206c32207374616b696e6720636f6e747261637420616c6c6f7765646044820152606401610323565b6065545f03610c59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6e6f74206d696e742079657400000000000000000000000000000000000000006044820152606401610323565b80801580610c68575060655482115b15610c7f576001606554610c7c91906124d2565b90505b5f610c8b858584611763565b90508015610c9d57610c9d8482611475565b5050505050565b337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614610d43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f6f6e6c79206c32207374616b696e6720636f6e747261637420616c6c6f7765646044820152606401610323565b73ffffffffffffffffffffffffffffffffffffffff85165f908152606660209081526040808320868452909152902060028101839055600301819055821580610dc0575073ffffffffffffffffffffffffffffffffffffffff8085165f908152606860209081526040808320938916835260039093019052205483145b15610ecc5773ffffffffffffffffffffffffffffffffffffffff85165f9081526066602090815260408083208684529091529020610e019060040185611fcb565b5073ffffffffffffffffffffffffffffffffffffffff8086165f90815260666020908152604080832087845282528083209388168352600690930181528282208290556068905220610e539086611fcb565b5073ffffffffffffffffffffffffffffffffffffffff8481165f908152606860209081526040808320938916835260028401825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556003840182528083208390556004909301905290812055610c9d565b73ffffffffffffffffffffffffffffffffffffffff8085165f9081526068602090815260408083209389168352600290930190522080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155610f3790846124d2565b73ffffffffffffffffffffffffffffffffffffffff8086165f908152606860209081526040808320938a1683526004909301905220555050505050565b337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614611013576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6f6e6c79207265636f726420636f6e747261637420616c6c6f776564000000006044820152606401610323565b60658054905f611022836124f8565b919050555086600160655461103791906124d2565b1461109e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f696e76616c69642065706f636820696e646578000000000000000000000000006044820152606401610323565b82851480156110ac57508085145b611112576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f696e76616c69642064617461206c656e677468000000000000000000000000006044820152606401610323565b5f5b858110156112165784848281811061112e5761112e61257e565b9050602002013560665f89898581811061114a5761114a61257e565b905060200201602081019061115f919061227f565b73ffffffffffffffffffffffffffffffffffffffff16815260208082019290925260409081015f9081208c82529092529020558282828181106111a4576111a461257e565b9050602002013560665f8989858181106111c0576111c061257e565b90506020020160208101906111d5919061227f565b73ffffffffffffffffffffffffffffffffffffffff16815260208082019290925260409081015f9081208c8252909252902060019081019190915501611114565b5050505050505050565b337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16146112bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f6f6e6c79206c32207374616b696e6720636f6e747261637420616c6c6f7765646044820152606401610323565b73ffffffffffffffffffffffffffffffffffffffff87165f908152606660209081526040808320888452909152902060028101849055600381018390556113099060040187611fec565b5073ffffffffffffffffffffffffffffffffffffffff8088165f9081526066602090815260408083208984528252808320938a168352600690930190522084905580156113b85773ffffffffffffffffffffffffffffffffffffffff86165f90815260686020526040902061137e9088611fec565b5073ffffffffffffffffffffffffffffffffffffffff8087165f908152606860209081526040808320938b16835260039093019052208590555b50505050505050565b6113c9611e36565b73ffffffffffffffffffffffffffffffffffffffff811661146c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610323565b61092f81611eb7565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015611503573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061152791906125ab565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303815f875af11580156115be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115e291906125c2565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015611671573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061169591906125ab565b90505f831180156116ae5750826116ac83836124d2565b145b61078d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f6d6f72706820746f6b656e207472616e73666572206661696c656400000000006044820152606401610323565b5f61171d825490565b92915050565b5f61172e838361200d565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81165f908152600183016020526040812054151561172e565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526068602052604081206117919085611735565b6117f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f6e6f2072656d61696e696e6720726577617264000000000000000000000000006044820152606401610323565b73ffffffffffffffffffffffffffffffffffffffff8084165f9081526068602090815260408083209388168352600390930190522054821015611896576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f616c6c2072657761726420636c61696d656400000000000000000000000000006044820152606401610323565b73ffffffffffffffffffffffffffffffffffffffff8084165f90815260686020908152604080832093881683526003909301905220545b828111611dbe5773ffffffffffffffffffffffffffffffffffffffff8086165f9081526066602090815260408083208584528083528184206002810154958a16855260068101845291842054938690529091525461192b919061252f565b6119359190612546565b61193f90836124e5565b73ffffffffffffffffffffffffffffffffffffffff86165f9081526066602052604081209193506119959186916119778560016124e5565b81526020019081526020015f2060040161173590919063ffffffff16565b611b625773ffffffffffffffffffffffffffffffffffffffff85165f9081526066602052604081206119ed918691906119cf8560016124e5565b81526020019081526020015f20600401611fec90919063ffffffff16565b5073ffffffffffffffffffffffffffffffffffffffff8086165f818152606660208181526040808420878552808352818520968b1685526006909601825283205493835252909190611a408460016124e5565b815260208082019290925260409081015f90812073ffffffffffffffffffffffffffffffffffffffff808a168352600690910184528282209490945592881683526066909152812090611a948360016124e5565b81526020019081526020015f20600201545f03611b625773ffffffffffffffffffffffffffffffffffffffff85165f8181526066602081815260408084208685528083529084206002015494845291905290611af18460016124e5565b815260208082019290925260409081015f9081206002019390935573ffffffffffffffffffffffffffffffffffffffff88168084526066808452828520868652808552928520600301549185529092529091611b4e8460016124e5565b815260208101919091526040015f20600301555b73ffffffffffffffffffffffffffffffffffffffff85165f9081526066602090815260408083208484529091528120600301805491611ba0836125dd565b909155505073ffffffffffffffffffffffffffffffffffffffff85165f9081526066602090815260408083208484529091528120600301549003611c3e5773ffffffffffffffffffffffffffffffffffffffff85165f90815260666020908152604080832084845290915281208181556001810182905560028101829055600381018290559060048201818181611c378282612201565b5050505050505b73ffffffffffffffffffffffffffffffffffffffff8085165f908152606860209081526040808320938916835260029093019052205460ff168015611cb7575073ffffffffffffffffffffffffffffffffffffffff8085165f908152606860209081526040808320938916835260049093019052205481145b15611d635773ffffffffffffffffffffffffffffffffffffffff84165f908152606860205260409020611cea9086611fcb565b5073ffffffffffffffffffffffffffffffffffffffff8481165f908152606860209081526040808320938916835260028401825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556003840182528083208390556004909301905290812055611dbe565b73ffffffffffffffffffffffffffffffffffffffff8085165f908152606860209081526040808320938916835260039093019052908120805491611da6836124f8565b91905055508080611db6906124f8565b9150506118cd565b508373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f7a84a08b02c91f3c62d572853f966fc799bbd121e8ad7833a4494ab8dcfcb4048484604051611e27929190918252602082015260400190565b60405180910390a39392505050565b60335473ffffffffffffffffffffffffffffffffffffffff1633146107a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610323565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16611fc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610323565b6107a4612033565b5f61172e8373ffffffffffffffffffffffffffffffffffffffff84166120d2565b5f61172e8373ffffffffffffffffffffffffffffffffffffffff84166121b5565b5f825f0182815481106120225761202261257e565b905f5260205f200154905092915050565b5f54610100900460ff166120c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610323565b6107a433611eb7565b5f81815260018301602052604081205480156121ac575f6120f46001836124d2565b85549091505f90612107906001906124d2565b9050818114612166575f865f0182815481106121255761212561257e565b905f5260205f200154905080875f0184815481106121455761214561257e565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061217757612177612611565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061171d565b5f91505061171d565b5f8181526001830160205260408120546121fa57508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561171d565b505f61171d565b5080545f8255905f5260205f209081019061092f91905b8082111561222b575f8155600101612218565b5090565b803573ffffffffffffffffffffffffffffffffffffffff81168114612252575f80fd5b919050565b5f8060408385031215612268575f80fd5b6122718361222f565b946020939093013593505050565b5f6020828403121561228f575f80fd5b61172e8261222f565b5f80604083850312156122a9575f80fd5b6122b28361222f565b91506122c06020840161222f565b90509250929050565b5f805f606084860312156122db575f80fd5b6122e48461222f565b92506122f26020850161222f565b9150604084013590509250925092565b5f805f805f60a08688031215612316575f80fd5b61231f8661222f565b945061232d6020870161222f565b94979496505050506040830135926060810135926080909101359150565b5f8083601f84011261235b575f80fd5b50813567ffffffffffffffff811115612372575f80fd5b6020830191508360208260051b850101111561238c575f80fd5b9250929050565b5f805f805f805f6080888a0312156123a9575f80fd5b87359650602088013567ffffffffffffffff808211156123c7575f80fd5b6123d38b838c0161234b565b909850965060408a01359150808211156123eb575f80fd5b6123f78b838c0161234b565b909650945060608a013591508082111561240f575f80fd5b5061241c8a828b0161234b565b989b979a50959850939692959293505050565b801515811461092f575f80fd5b5f805f805f805f60e0888a031215612452575f80fd5b61245b8861222f565b96506124696020890161222f565b955060408801359450606088013593506080880135925060a0880135915060c08801356124958161242f565b8091505092959891949750929550565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561171d5761171d6124a5565b8082018082111561171d5761171d6124a5565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612528576125286124a5565b5060010190565b808202811582820484141761171d5761171d6124a5565b5f82612579577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f602082840312156125bb575f80fd5b5051919050565b5f602082840312156125d2575f80fd5b815161172e8161242f565b5f816125eb576125eb6124a5565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea164736f6c6343000818000a" +var DistributeDeployedBin = "0x608060405234801561000f575f80fd5b50600436106100f0575f3560e01c8063996cba6811610093578063ce293aaf11610063578063ce293aaf1461021c578063d55771411461023b578063e16bcc3214610262578063f2fde38b14610275575f80fd5b8063996cba68146101bc578063ad8e1223146101cf578063cd4281d0146101e2578063cdd0c50e14610209575f80fd5b8063807de443116100ce578063807de443146101245780638129fc1c146101755780638da5cb5b1461017d5780639889be511461019b575f80fd5b806341302560146100f45780635cf20c7b14610109578063715018a61461011c575b5f80fd5b6101076101023660046123c0565b610288565b005b6101076101173660046123c0565b610600565b610107610854565b61014b7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b610107610867565b60335473ffffffffffffffffffffffffffffffffffffffff1661014b565b6101ae6101a93660046123e8565b6109f3565b60405190815260200161016c565b6101076101ca366004612419565b610c10565b6101076101dd366004612452565b610d75565b61014b7f000000000000000000000000000000000000000000000000000000000000000081565b6101076102173660046124e3565b611045565b6101ae61022a36600461257f565b60676020525f908152604090205481565b61014b7f000000000000000000000000000000000000000000000000000000000000000081565b6101076102703660046125a5565b6112f1565b61010761028336600461257f565b611492565b337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff161461032c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f6f6e6c79206c32207374616b696e6720636f6e747261637420616c6c6f77656460448201526064015b60405180910390fd5b6065545f03610397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f6e6f74206d696e746564207965740000000000000000000000000000000000006044820152606401610323565b5f8115806103b2575060016065546103af919061263b565b82115b6103bc57816103cb565b60016065546103cb919061263b565b73ffffffffffffffffffffffffffffffffffffffff84165f9081526067602052604090205490915081101561045c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f616c6c20636f6d6d697373696f6e20636c61696d6564000000000000000000006044820152606401610323565b73ffffffffffffffffffffffffffffffffffffffff83165f908152606760205260408120545b82811161057a5773ffffffffffffffffffffffffffffffffffffffff85165f9081526066602090815260408083208484529091529020600101546104c6908361264e565b73ffffffffffffffffffffffffffffffffffffffff86165f90815260666020908152604080832085845290915281206001810182905560030154919350036105685773ffffffffffffffffffffffffffffffffffffffff85165f90815260666020908152604080832084845290915281208181556001810182905560028101829055600381018290559060048201818181610561828261236a565b5050505050505b8061057281612661565b915050610482565b50801561058b5761058b8482611546565b61059682600161264e565b73ffffffffffffffffffffffffffffffffffffffff85165f8181526067602090815260409182902093909355805185815292830184905290917fe4760bd616775d8b0ae78f9b8bfa4b453fdde769d10a0559ba473157ce9011d4910160405180910390a250505050565b337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff161461069f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f6f6e6c79206c32207374616b696e6720636f6e747261637420616c6c6f7765646044820152606401610323565b6065545f0361070a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f6e6f74206d696e746564207965740000000000000000000000000000000000006044820152606401610323565b5f81158061072557506001606554610722919061263b565b82115b61072f578161073e565b600160655461073e919061263b565b90505f805b73ffffffffffffffffffffffffffffffffffffffff85165f908152606860205260409020610770906117e5565b81101561083d5773ffffffffffffffffffffffffffffffffffffffff85165f9081526068602052604081206107a590836117f4565b73ffffffffffffffffffffffffffffffffffffffff87165f9081526068602052604090209091506107d69082611806565b8015610817575073ffffffffffffffffffffffffffffffffffffffff8087165f90815260686020908152604080832093851683526003909301905220548410155b1561083457610827818786611834565b610831908461264e565b92505b50600101610743565b50801561084e5761084e8482611546565b50505050565b61085c611f9f565b6108655f612020565b565b5f54610100900460ff161580801561088557505f54600160ff909116105b8061089e5750303b15801561089e57505f5460ff166001145b61092a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610323565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610986575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61098e612096565b80156109f0575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b73ffffffffffffffffffffffffffffffffffffffff8082165f9081526068602090815260408083209386168352600390930190529081205481908190805b606554811015610c065773ffffffffffffffffffffffffffffffffffffffff8088165f9081526066602090815260408083208584528252808320938a16835260069093019052205415610abf5773ffffffffffffffffffffffffffffffffffffffff8088165f9081526066602090815260408083208584528252808320938a16835260069093019052205492505b73ffffffffffffffffffffffffffffffffffffffff87165f90815260666020908152604080832084845290915290206002015415610b2d5773ffffffffffffffffffffffffffffffffffffffff87165f90815260666020908152604080832084845290915290206002015493505b73ffffffffffffffffffffffffffffffffffffffff87165f9081526066602090815260408083208484529091529020548490610b6a908590612698565b610b7491906126af565b610b7e908661264e565b73ffffffffffffffffffffffffffffffffffffffff8088165f908152606860209081526040808320938c16835260029093019052205490955060ff168015610bfa575073ffffffffffffffffffffffffffffffffffffffff8087165f908152606860209081526040808320938b16835260049093019052205481145b610c0657600101610a31565b5050505092915050565b337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614610caf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f6f6e6c79206c32207374616b696e6720636f6e747261637420616c6c6f7765646044820152606401610323565b6065545f03610d1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f6e6f74206d696e746564207965740000000000000000000000000000000000006044820152606401610323565b5f811580610d3557506001606554610d32919061263b565b82115b610d3f5781610d4e565b6001606554610d4e919061263b565b90505f610d5c858584611834565b90508015610d6e57610d6e8482611546565b5050505050565b337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614610e14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f6f6e6c79206c32207374616b696e6720636f6e747261637420616c6c6f7765646044820152606401610323565b73ffffffffffffffffffffffffffffffffffffffff85165f908152606660209081526040808320868452909152902060028101839055600301819055821580610e91575073ffffffffffffffffffffffffffffffffffffffff8085165f908152606860209081526040808320938916835260039093019052205483145b15610f9d5773ffffffffffffffffffffffffffffffffffffffff85165f9081526066602090815260408083208684529091529020610ed29060040185612134565b5073ffffffffffffffffffffffffffffffffffffffff8086165f90815260666020908152604080832087845282528083209388168352600690930181528282208290556068905220610f249086612134565b5073ffffffffffffffffffffffffffffffffffffffff8481165f908152606860209081526040808320938916835260028401825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556003840182528083208390556004909301905290812055610d6e565b73ffffffffffffffffffffffffffffffffffffffff8085165f9081526068602090815260408083209389168352600290930190522080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155611008908461263b565b73ffffffffffffffffffffffffffffffffffffffff8086165f908152606860209081526040808320938a1683526004909301905220555050505050565b337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16146110e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6f6e6c79207265636f726420636f6e747261637420616c6c6f776564000000006044820152606401610323565b60658054905f6110f383612661565b9190505550866001606554611108919061263b565b1461116f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f696e76616c69642065706f636820696e646578000000000000000000000000006044820152606401610323565b828514801561117d57508085145b6111e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f696e76616c69642064617461206c656e677468000000000000000000000000006044820152606401610323565b5f5b858110156112e7578484828181106111ff576111ff6126e7565b9050602002013560665f89898581811061121b5761121b6126e7565b9050602002016020810190611230919061257f565b73ffffffffffffffffffffffffffffffffffffffff16815260208082019290925260409081015f9081208c8252909252902055828282818110611275576112756126e7565b9050602002013560665f898985818110611291576112916126e7565b90506020020160208101906112a6919061257f565b73ffffffffffffffffffffffffffffffffffffffff16815260208082019290925260409081015f9081208c82529092529020600190810191909155016111e5565b5050505050505050565b337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614611390576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f6f6e6c79206c32207374616b696e6720636f6e747261637420616c6c6f7765646044820152606401610323565b73ffffffffffffffffffffffffffffffffffffffff87165f908152606660209081526040808320888452909152902060028101849055600381018390556113da9060040187612155565b5073ffffffffffffffffffffffffffffffffffffffff8088165f9081526066602090815260408083208984528252808320938a168352600690930190522084905580156114895773ffffffffffffffffffffffffffffffffffffffff86165f90815260686020526040902061144f9088612155565b5073ffffffffffffffffffffffffffffffffffffffff8087165f908152606860209081526040808320938b16835260039093019052208590555b50505050505050565b61149a611f9f565b73ffffffffffffffffffffffffffffffffffffffff811661153d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610323565b6109f081612020565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa1580156115d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115f89190612714565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303815f875af115801561168f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116b3919061272b565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015611742573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117669190612714565b90505f8311801561177f57508261177d838361263b565b145b61084e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f6d6f72706820746f6b656e207472616e73666572206661696c656400000000006044820152606401610323565b5f6117ee825490565b92915050565b5f6117ff8383612176565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260018301602052604081205415156117ff565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526068602052604081206118629085611806565b6118c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f6e6f2072656d61696e696e6720726577617264000000000000000000000000006044820152606401610323565b73ffffffffffffffffffffffffffffffffffffffff8084165f9081526068602090815260408083209388168352600390930190522054821015611967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f616c6c2072657761726420636c61696d656400000000000000000000000000006044820152606401610323565b73ffffffffffffffffffffffffffffffffffffffff8084165f90815260686020908152604080832093881683526003909301905220545b828111611f155773ffffffffffffffffffffffffffffffffffffffff8086165f9081526066602090815260408083208584528083528184206002810154958a1685526006810184529184205493869052909152546119fc9190612698565b611a0691906126af565b611a10908361264e565b73ffffffffffffffffffffffffffffffffffffffff8086165f908152606860209081526040808320938a16835260029093019052205490925060ff161580611a8d575073ffffffffffffffffffffffffffffffffffffffff8085165f90815260686020908152604080832093891683526004909301905220548114155b15611cc65773ffffffffffffffffffffffffffffffffffffffff85165f908152606660205260408120611ae691869190611ac885600161264e565b81526020019081526020015f2060040161180690919063ffffffff16565b611bc85773ffffffffffffffffffffffffffffffffffffffff85165f908152606660205260408120611b3e91869190611b2085600161264e565b81526020019081526020015f2060040161215590919063ffffffff16565b5073ffffffffffffffffffffffffffffffffffffffff8086165f818152606660208181526040808420878552808352818520968b1685526006909601825283205493835252909190611b9184600161264e565b815260208082019290925260409081015f90812073ffffffffffffffffffffffffffffffffffffffff891682526006019092529020555b73ffffffffffffffffffffffffffffffffffffffff85165f90815260666020526040812090611bf883600161264e565b81526020019081526020015f20600201545f03611cc65773ffffffffffffffffffffffffffffffffffffffff85165f8181526066602081815260408084208685528083529084206002015494845291905290611c5584600161264e565b815260208082019290925260409081015f9081206002019390935573ffffffffffffffffffffffffffffffffffffffff88168084526066808452828520868652808552928520600301549185529092529091611cb284600161264e565b815260208101919091526040015f20600301555b73ffffffffffffffffffffffffffffffffffffffff85165f9081526066602090815260408083208484529091528120600301805491611d0483612746565b909155505073ffffffffffffffffffffffffffffffffffffffff85165f908152606660209081526040808320848452909152902060030154158015611d79575073ffffffffffffffffffffffffffffffffffffffff85165f908152606660209081526040808320848452909152902060010154155b15611dde5773ffffffffffffffffffffffffffffffffffffffff85165f90815260666020908152604080832084845290915281208181556001810182905560028101829055600381018290559060048201818181611dd7828261236a565b5050505050505b73ffffffffffffffffffffffffffffffffffffffff8085165f908152606860209081526040808320938916835260029093019052205460ff168015611e57575073ffffffffffffffffffffffffffffffffffffffff8085165f908152606860209081526040808320938916835260049093019052205481145b15611f035773ffffffffffffffffffffffffffffffffffffffff84165f908152606860205260409020611e8a9086612134565b5073ffffffffffffffffffffffffffffffffffffffff8481165f908152606860209081526040808320938916835260028401825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556003840182528083208390556004909301905290812055611f15565b80611f0d81612661565b91505061199e565b50611f2182600161264e565b73ffffffffffffffffffffffffffffffffffffffff8481165f818152606860209081526040808320948a168084526003909501825291829020949094558051868152938401859052919290917f7a84a08b02c91f3c62d572853f966fc799bbd121e8ad7833a4494ab8dcfcb404910160405180910390a39392505050565b60335473ffffffffffffffffffffffffffffffffffffffff163314610865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610323565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff1661212c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610323565b61086561219c565b5f6117ff8373ffffffffffffffffffffffffffffffffffffffff841661223b565b5f6117ff8373ffffffffffffffffffffffffffffffffffffffff841661231e565b5f825f01828154811061218b5761218b6126e7565b905f5260205f200154905092915050565b5f54610100900460ff16612232576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610323565b61086533612020565b5f8181526001830160205260408120548015612315575f61225d60018361263b565b85549091505f906122709060019061263b565b90508181146122cf575f865f01828154811061228e5761228e6126e7565b905f5260205f200154905080875f0184815481106122ae576122ae6126e7565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806122e0576122e061277a565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506117ee565b5f9150506117ee565b5f81815260018301602052604081205461236357508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556117ee565b505f6117ee565b5080545f8255905f5260205f20908101906109f091905b80821115612394575f8155600101612381565b5090565b803573ffffffffffffffffffffffffffffffffffffffff811681146123bb575f80fd5b919050565b5f80604083850312156123d1575f80fd5b6123da83612398565b946020939093013593505050565b5f80604083850312156123f9575f80fd5b61240283612398565b915061241060208401612398565b90509250929050565b5f805f6060848603121561242b575f80fd5b61243484612398565b925061244260208501612398565b9150604084013590509250925092565b5f805f805f60a08688031215612466575f80fd5b61246f86612398565b945061247d60208701612398565b94979496505050506040830135926060810135926080909101359150565b5f8083601f8401126124ab575f80fd5b50813567ffffffffffffffff8111156124c2575f80fd5b6020830191508360208260051b85010111156124dc575f80fd5b9250929050565b5f805f805f805f6080888a0312156124f9575f80fd5b87359650602088013567ffffffffffffffff80821115612517575f80fd5b6125238b838c0161249b565b909850965060408a013591508082111561253b575f80fd5b6125478b838c0161249b565b909650945060608a013591508082111561255f575f80fd5b5061256c8a828b0161249b565b989b979a50959850939692959293505050565b5f6020828403121561258f575f80fd5b6117ff82612398565b80151581146109f0575f80fd5b5f805f805f805f60e0888a0312156125bb575f80fd5b6125c488612398565b96506125d260208901612398565b955060408801359450606088013593506080880135925060a0880135915060c08801356125fe81612598565b8091505092959891949750929550565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156117ee576117ee61260e565b808201808211156117ee576117ee61260e565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036126915761269161260e565b5060010190565b80820281158282048414176117ee576117ee61260e565b5f826126e2577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215612724575f80fd5b5051919050565b5f6020828403121561273b575f80fd5b81516117ff81612598565b5f816127545761275461260e565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea164736f6c6343000818000a" func init() { if err := json.Unmarshal([]byte(DistributeStorageLayoutJSON), DistributeStorageLayout); err != nil { diff --git a/bindings/bindings/gov.go b/bindings/bindings/gov.go index d5cef5586..45aff2503 100644 --- a/bindings/bindings/gov.go +++ b/bindings/bindings/gov.go @@ -40,7 +40,7 @@ type IGovProposalData struct { // GovMetaData contains all meta data concerning the Gov contract. var GovMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldBatchBlockInterval\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newBatchBlockInterval\",\"type\":\"uint256\"}],\"name\":\"BatchBlockIntervalUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldBatchMaxBytes\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newBatchMaxBytes\",\"type\":\"uint256\"}],\"name\":\"BatchMaxBytesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldBatchTimeout\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newBatchTimeout\",\"type\":\"uint256\"}],\"name\":\"BatchTimeoutUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldMaxChunks\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newMaxChunks\",\"type\":\"uint256\"}],\"name\":\"MaxChunksUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"proposalID\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"batchBlockInterval\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"batchMaxBytes\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"batchTimeout\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maxChunks\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rollupEpoch\",\"type\":\"uint256\"}],\"name\":\"ProposalExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldProposalInterval\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newProposalInterval\",\"type\":\"uint256\"}],\"name\":\"ProposalIntervalUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"odlRollupEpoch\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newRollupEpoch\",\"type\":\"uint256\"}],\"name\":\"RollupEpochUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"L2_STAKING_CONTRACT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SEQUENCER_CONTRACT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"batchBlockInterval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"batchMaxBytes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"batchTimeout\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"batchBlockInterval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"batchMaxBytes\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"batchTimeout\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxChunks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rollupEpoch\",\"type\":\"uint256\"}],\"internalType\":\"structIGov.ProposalData\",\"name\":\"proposal\",\"type\":\"tuple\"}],\"name\":\"createProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentProposalID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalID\",\"type\":\"uint256\"}],\"name\":\"executeProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalInterval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_batchBlockInterval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_batchMaxBytes\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_batchTimeout\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxChunks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_rollupEpoch\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalID\",\"type\":\"uint256\"}],\"name\":\"isProposalCanBeApproved\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"voter\",\"type\":\"address\"}],\"name\":\"isVoted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxChunks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalID\",\"type\":\"uint256\"}],\"name\":\"proposalData\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"batchBlockInterval\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"batchMaxBytes\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"batchTimeout\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxChunks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rollupEpoch\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalID\",\"type\":\"uint256\"}],\"name\":\"proposalInfos\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proposalInterval\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollupEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollupEpochUpdateTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_proposalInterval\",\"type\":\"uint256\"}],\"name\":\"setProposalInterval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"proposalID\",\"type\":\"uint256\"}],\"name\":\"vote\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60c060405234801561000f575f80fd5b5073530000000000000000000000000000000000001260805273530000000000000000000000000000000000000360a05260805160a051611c6c61007d5f395f8181610292015281816103d50152818161063f01528181610dd801526114f401525f61021f0152611c6c5ff3fe608060405234801561000f575f80fd5b5060043610610179575f3560e01c80638da5cb5b116100d2578063b511328d11610088578063e5aec99511610063578063e5aec9951461038e578063ecded2ae14610397578063f2fde38b146103aa575f80fd5b8063b511328d14610334578063bb881e4114610372578063de00d3fd1461037b575f80fd5b8063929a9cbe116100b8578063929a9cbe146102b457806396dea936146102bd5780639f50395214610321575f80fd5b80638da5cb5b1461026f5780638e21d5fb1461028d575f80fd5b806349c1a5811161013257806377c793801161010d57806377c7938014610211578063807de4431461021a5780638596305214610266575f80fd5b806349c1a581146101dd5780636396619014610200578063715018a614610209575f80fd5b80632d7aa82b116101625780632d7aa82b146101a55780634063a84e146101b85780634428c1a4146101d4575f80fd5b80630121b93f1461017d5780630d61b51914610192575b5f80fd5b61019061018b366004611915565b6103bd565b005b6101906101a0366004611915565b6107c3565b6101906101b336600461192c565b6108a3565b6101c1606b5481565b6040519081526020015b60405180910390f35b6101c1606a5481565b6101f06101eb36600461198c565b610ce3565b60405190151581526020016101cb565b6101c1606c5481565b610190610d03565b6101c160675481565b6102417f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101cb565b6101c160655481565b60335473ffffffffffffffffffffffffffffffffffffffff16610241565b6102417f000000000000000000000000000000000000000000000000000000000000000081565b6101c160665481565b6102f96102cb366004611915565b606d6020525f9081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a0016101cb565b61019061032f366004611915565b610d16565b61035d610342366004611915565b606e6020525f90815260409020805460019091015460ff1682565b604080519283529015156020830152016101cb565b6101c160685481565b6101906103893660046119ba565b610dc0565b6101c160695481565b6101f06103a5366004611915565b6110b6565b6101906103b83660046119d0565b6110fb565b5f73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016636d46e987336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa158015610462573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061048691906119f2565b9050806104da5760405162461bcd60e51b815260206004820152601a60248201527f6f6e6c792073657175656e6365722063616e2070726f706f736500000000000060448201526064015b60405180910390fd5b5f828152606e6020526040902060010154829060ff161561053d5760405162461bcd60e51b815260206004820152601960248201527f70726f706f73616c20616c726561647920617070726f7665640000000000000060448201526064016104d1565b5f818152606e602052604090205442111561059a5760405162461bcd60e51b815260206004820152601460248201527f70726f706f73616c206f7574206f66206461746500000000000000000000000060448201526064016104d1565b6105b1335f858152606f6020526040902090611198565b156106245760405162461bcd60e51b815260206004820152602860248201527f73657175656e63657220616c726561647920766f746520666f7220746869732060448201527f70726f706f73616c00000000000000000000000000000000000000000000000060648201526084016104d1565b61063b335f858152606f60205260409020906111c6565b505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166377d7dffb6040518163ffffffff1660e01b81526004015f60405180830381865afa1580156106a5573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526106ea9190810190611a4e565b90505f5b815181101561077d5761073382828151811061070c5761070c611b2c565b6020026020010151606f5f8881526020019081526020015f2061119890919063ffffffff16565b6107755761077382828151811061074c5761074c611b2c565b6020026020010151606f5f8881526020019081526020015f206111e790919063ffffffff16565b505b6001016106ee565b5060038151600261078e9190611b86565b6107989190611b9d565b5f858152606f602052604090206107ae90611208565b11156107bd576107bd84611211565b50505050565b5f818152606e6020526040902060010154819060ff16156108265760405162461bcd60e51b815260206004820152601960248201527f70726f706f73616c20616c726561647920617070726f7665640000000000000060448201526064016104d1565b5f818152606e60205260409020544211156108835760405162461bcd60e51b815260206004820152601460248201527f70726f706f73616c206f7574206f66206461746500000000000000000000000060448201526064016104d1565b5f61088d836114f0565b9050801561089e5761089e83611211565b505050565b5f54610100900460ff16158080156108c157505f54600160ff909116105b806108da5750303b1580156108da57505f5460ff166001145b61094c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016104d1565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156109a8575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b5f87116109f75760405162461bcd60e51b815260206004820152601960248201527f696e76616c69642070726f706f73616c20696e74657276616c0000000000000060448201526064016104d1565b5f8311610a465760405162461bcd60e51b815260206004820152601260248201527f696e76616c6964206d6178206368756e6b73000000000000000000000000000060448201526064016104d1565b5f8211610a955760405162461bcd60e51b815260206004820152601460248201527f696e76616c696420726f6c6c75702065706f636800000000000000000000000060448201526064016104d1565b85151580610aa257508415155b80610aac57508315155b610af85760405162461bcd60e51b815260206004820152601460248201527f696e76616c696420626174636820706172616d7300000000000000000000000060448201526064016104d1565b610b00611600565b606b8790556065869055606685905560678490556068839055606982905542606a55604080515f8152602081018990527f9e890086ea51933fb82fde9166ba4d58ecb0fdb81559ee03743b7ac052f43f7b910160405180910390a1604080515f8152602081018890527fa044538eba1b21d23eb13fa35811ca9d1d7ff9ef1c81ee4dc594fca08412531b910160405180910390a1604080515f8152602081018790527f11b7e0f5b30d2753fcf7151b7a907cc343034c6a7572d56c261ae00c411d16a7910160405180910390a1604080515f8152602081018690527fab2cb47d396c5d12c082ac9b6512d332af2767ca8e1fa5bcef40fa6970626569910160405180910390a1604080515f8152602081018590527fd4cf36ce0d0f667d929d7bdf98e8774da275ea7f990c012c308516650d85839a910160405180910390a1604080515f8152602081018490527f9b20ee151d057f4f3ece7fdf4ca1370cf143f181760e7712b722572f2dcba88f910160405180910390a18015610cda575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b5f828152606f60205260408120610cfa9083611198565b90505b92915050565b610d0b611684565b610d145f6116eb565b565b610d1e611684565b5f81118015610d2f57506065548114155b610d7b5760405162461bcd60e51b815260206004820152601d60248201527f696e76616c6964206e65772070726f706f73616c20696e74657276616c00000060448201526064016104d1565b606580549082905560408051828152602081018490527f9e890086ea51933fb82fde9166ba4d58ecb0fdb81559ee03743b7ac052f43f7b910160405180910390a15050565b5f73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016636d46e987336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa158015610e65573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e8991906119f2565b905080610ed85760405162461bcd60e51b815260206004820152601a60248201527f6f6e6c792073657175656e6365722063616e2070726f706f736500000000000060448201526064016104d1565b81608001355f03610f2b5760405162461bcd60e51b815260206004820152601460248201527f696e76616c696420726f6c6c75702065706f636800000000000000000000000060448201526064016104d1565b5f826060013511610f7e5760405162461bcd60e51b815260206004820152601260248201527f696e76616c6964206d6178206368756e6b73000000000000000000000000000060448201526064016104d1565b8135151580610f905750602082013515155b80610f9e5750604082013515155b610fea5760405162461bcd60e51b815260206004820152601460248201527f696e76616c696420626174636820706172616d7300000000000000000000000060448201526064016104d1565b606c8054905f610ff983611bd5565b9091555050606c545f908152606d602052604090208290611045828281358155602082013560018201556040820135600282015560608201356003820155608082013560048201555050565b9050506040518060400160405280606b54426110619190611c0c565b81525f6020918201819052606c548152606e82526040902082518155910151600190910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790555050565b5f818152606e602052604081206001015460ff16156110d657505f919050565b5f828152606e60205260409020544211156110f257505f919050565b610cfd826114f0565b611103611684565b73ffffffffffffffffffffffffffffffffffffffff811661118c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104d1565b611195816116eb565b50565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001830160205260408120541515610cfa565b5f610cfa8373ffffffffffffffffffffffffffffffffffffffff8416611761565b5f610cfa8373ffffffffffffffffffffffffffffffffffffffff84166117ad565b5f610cfd825490565b5f818152606d60205260409020546065541461128057606580545f838152606d60205260409081902054928390555190917fa044538eba1b21d23eb13fa35811ca9d1d7ff9ef1c81ee4dc594fca08412531b9161127691848252602082015260400190565b60405180910390a1505b5f818152606d6020526040902060010154606654146112f557606680545f838152606d60205260409081902060010154928390555190917f11b7e0f5b30d2753fcf7151b7a907cc343034c6a7572d56c261ae00c411d16a7916112eb91848252602082015260400190565b60405180910390a1505b5f818152606d60205260409020600201546067541461136a57606780545f838152606d60205260409081902060020154928390555190917fab2cb47d396c5d12c082ac9b6512d332af2767ca8e1fa5bcef40fa69706265699161136091848252602082015260400190565b60405180910390a1505b5f818152606d6020526040902060030154606854146113df57606880545f838152606d60205260409081902060030154928390555190917fd4cf36ce0d0f667d929d7bdf98e8774da275ea7f990c012c308516650d85839a916113d591848252602082015260400190565b60405180910390a1505b5f818152606d60205260409020600401546069541461145357606980545f838152606d6020908152604091829020600401805490945542606a55925481518381529384015290917f9b20ee151d057f4f3ece7fdf4ca1370cf143f181760e7712b722572f2dcba88f910160405180910390a1505b5f818152606e6020908152604091829020600190810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790556065546066546067546068546069548651948552948401929092528285015260608201526080810191909152905182917f146676d233683eb1ec2a813a7f97a7aa3241ae78af1ee6df4a4548c47178cbfa919081900360a00190a250565b5f807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166377d7dffb6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561155a573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261159f9190810190611a4e565b90505f805b82518110156115dd576115c283828151811061070c5761070c611b2c565b156115d5576115d2826001611c0c565b91505b6001016115a4565b506003825160026115ee9190611b86565b6115f89190611b9d565b109392505050565b5f54610100900460ff1661167c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104d1565b610d14611890565b60335473ffffffffffffffffffffffffffffffffffffffff163314610d145760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104d1565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f8181526001830160205260408120546117a657508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610cfd565b505f610cfd565b5f8181526001830160205260408120548015611887575f6117cf600183611c1f565b85549091505f906117e290600190611c1f565b9050818114611841575f865f01828154811061180057611800611b2c565b905f5260205f200154905080875f01848154811061182057611820611b2c565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061185257611852611c32565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050610cfd565b5f915050610cfd565b5f54610100900460ff1661190c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104d1565b610d14336116eb565b5f60208284031215611925575f80fd5b5035919050565b5f805f805f8060c08789031215611941575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b73ffffffffffffffffffffffffffffffffffffffff81168114611195575f80fd5b5f806040838503121561199d575f80fd5b8235915060208301356119af8161196b565b809150509250929050565b5f60a082840312156119ca575f80fd5b50919050565b5f602082840312156119e0575f80fd5b81356119eb8161196b565b9392505050565b5f60208284031215611a02575f80fd5b815180151581146119eb575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b8051611a498161196b565b919050565b5f6020808385031215611a5f575f80fd5b825167ffffffffffffffff80821115611a76575f80fd5b818501915085601f830112611a89575f80fd5b815181811115611a9b57611a9b611a11565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715611ade57611ade611a11565b604052918252848201925083810185019188831115611afb575f80fd5b938501935b82851015611b2057611b1185611a3e565b84529385019392850192611b00565b98975050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082028115828204841417610cfd57610cfd611b59565b5f82611bd0577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611c0557611c05611b59565b5060010190565b80820180821115610cfd57610cfd611b59565b81810381811115610cfd57610cfd611b59565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea164736f6c6343000818000a", + Bin: "0x60c060405234801561000f575f80fd5b5073530000000000000000000000000000000000001560805273530000000000000000000000000000000000000360a05260805160a0516119d66100765f395f8181610292015281816103d501528181610c68015261107b01525f61021f01526119d65ff3fe608060405234801561000f575f80fd5b5060043610610179575f3560e01c80638da5cb5b116100d2578063b511328d11610088578063e5aec99511610063578063e5aec9951461038e578063ecded2ae14610397578063f2fde38b146103aa575f80fd5b8063b511328d14610334578063bb881e4114610372578063de00d3fd1461037b575f80fd5b8063929a9cbe116100b8578063929a9cbe146102b457806396dea936146102bd5780639f50395214610321575f80fd5b80638da5cb5b1461026f5780638e21d5fb1461028d575f80fd5b806349c1a5811161013257806377c793801161010d57806377c7938014610211578063807de4431461021a5780638596305214610266575f80fd5b806349c1a581146101dd5780636396619014610200578063715018a614610209575f80fd5b80632d7aa82b116101625780632d7aa82b146101a55780634063a84e146101b85780634428c1a4146101d4575f80fd5b80630121b93f1461017d5780630d61b51914610192575b5f80fd5b61019061018b3660046116bf565b6103bd565b005b6101906101a03660046116bf565b610658565b6101906101b33660046116d6565b610733565b6101c1606b5481565b6040519081526020015b60405180910390f35b6101c1606a5481565b6101f06101eb366004611736565b610b73565b60405190151581526020016101cb565b6101c1606c5481565b610190610b93565b6101c160675481565b6102417f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101cb565b6101c160655481565b60335473ffffffffffffffffffffffffffffffffffffffff16610241565b6102417f000000000000000000000000000000000000000000000000000000000000000081565b6101c160665481565b6102f96102cb3660046116bf565b606d6020525f9081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a0016101cb565b61019061032f3660046116bf565b610ba6565b61035d6103423660046116bf565b606e6020525f90815260409020805460019091015460ff1682565b604080519283529015156020830152016101cb565b6101c160685481565b610190610389366004611764565b610c50565b6101c160695481565b6101f06103a53660046116bf565b610f46565b6101906103b836600461177a565b610f8b565b5f73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016636d46e987336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa158015610462573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610486919061179c565b9050806104da5760405162461bcd60e51b815260206004820152601a60248201527f6f6e6c792073657175656e6365722063616e2070726f706f736500000000000060448201526064015b60405180910390fd5b5f828152606e6020526040902060010154829060ff161561053d5760405162461bcd60e51b815260206004820152601960248201527f70726f706f73616c20616c726561647920617070726f7665640000000000000060448201526064016104d1565b5f818152606e602052604090205442111561059a5760405162461bcd60e51b815260206004820152601460248201527f70726f706f73616c206f7574206f66206461746500000000000000000000000060448201526064016104d1565b6105b1335f858152606f6020526040902090611028565b156106245760405162461bcd60e51b815260206004820152602860248201527f73657175656e63657220616c726561647920766f746520666f7220746869732060448201527f70726f706f73616c00000000000000000000000000000000000000000000000060648201526084016104d1565b61063b335f858152606f6020526040902090611056565b5061064583611077565b1561065357610653836111ae565b505050565b5f818152606e6020526040902060010154819060ff16156106bb5760405162461bcd60e51b815260206004820152601960248201527f70726f706f73616c20616c726561647920617070726f7665640000000000000060448201526064016104d1565b5f818152606e60205260409020544211156107185760405162461bcd60e51b815260206004820152601460248201527f70726f706f73616c206f7574206f66206461746500000000000000000000000060448201526064016104d1565b61072182611077565b1561072f5761072f826111ae565b5050565b5f54610100900460ff161580801561075157505f54600160ff909116105b8061076a5750303b15801561076a57505f5460ff166001145b6107dc5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016104d1565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610838575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b5f87116108875760405162461bcd60e51b815260206004820152601960248201527f696e76616c69642070726f706f73616c20696e74657276616c0000000000000060448201526064016104d1565b5f83116108d65760405162461bcd60e51b815260206004820152601260248201527f696e76616c6964206d6178206368756e6b73000000000000000000000000000060448201526064016104d1565b5f82116109255760405162461bcd60e51b815260206004820152601460248201527f696e76616c696420726f6c6c75702065706f636800000000000000000000000060448201526064016104d1565b8515158061093257508415155b8061093c57508315155b6109885760405162461bcd60e51b815260206004820152601460248201527f696e76616c696420626174636820706172616d7300000000000000000000000060448201526064016104d1565b61099061148d565b606b8790556065869055606685905560678490556068839055606982905542606a55604080515f8152602081018990527f9e890086ea51933fb82fde9166ba4d58ecb0fdb81559ee03743b7ac052f43f7b910160405180910390a1604080515f8152602081018890527fa044538eba1b21d23eb13fa35811ca9d1d7ff9ef1c81ee4dc594fca08412531b910160405180910390a1604080515f8152602081018790527f11b7e0f5b30d2753fcf7151b7a907cc343034c6a7572d56c261ae00c411d16a7910160405180910390a1604080515f8152602081018690527fab2cb47d396c5d12c082ac9b6512d332af2767ca8e1fa5bcef40fa6970626569910160405180910390a1604080515f8152602081018590527fd4cf36ce0d0f667d929d7bdf98e8774da275ea7f990c012c308516650d85839a910160405180910390a1604080515f8152602081018490527f9b20ee151d057f4f3ece7fdf4ca1370cf143f181760e7712b722572f2dcba88f910160405180910390a18015610b6a575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b5f828152606f60205260408120610b8a9083611028565b90505b92915050565b610b9b611511565b610ba45f611578565b565b610bae611511565b5f81118015610bbf57506065548114155b610c0b5760405162461bcd60e51b815260206004820152601d60248201527f696e76616c6964206e65772070726f706f73616c20696e74657276616c00000060448201526064016104d1565b606580549082905560408051828152602081018490527f9e890086ea51933fb82fde9166ba4d58ecb0fdb81559ee03743b7ac052f43f7b910160405180910390a15050565b5f73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016636d46e987336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa158015610cf5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d19919061179c565b905080610d685760405162461bcd60e51b815260206004820152601a60248201527f6f6e6c792073657175656e6365722063616e2070726f706f736500000000000060448201526064016104d1565b81608001355f03610dbb5760405162461bcd60e51b815260206004820152601460248201527f696e76616c696420726f6c6c75702065706f636800000000000000000000000060448201526064016104d1565b5f826060013511610e0e5760405162461bcd60e51b815260206004820152601260248201527f696e76616c6964206d6178206368756e6b73000000000000000000000000000060448201526064016104d1565b8135151580610e205750602082013515155b80610e2e5750604082013515155b610e7a5760405162461bcd60e51b815260206004820152601460248201527f696e76616c696420626174636820706172616d7300000000000000000000000060448201526064016104d1565b606c8054905f610e89836117e8565b9091555050606c545f908152606d602052604090208290610ed5828281358155602082013560018201556040820135600282015560608201356003820155608082013560048201555050565b9050506040518060400160405280606b5442610ef1919061181f565b81525f6020918201819052606c548152606e82526040902082518155910151600190910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790555050565b5f818152606e602052604081206001015460ff1615610f6657505f919050565b5f828152606e6020526040902054421115610f8257505f919050565b610b8d82611077565b610f93611511565b73ffffffffffffffffffffffffffffffffffffffff811661101c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104d1565b61102581611578565b50565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001830160205260408120541515610b8a565b5f610b8a8373ffffffffffffffffffffffffffffffffffffffff84166115ee565b5f807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166377d7dffb6040518163ffffffff1660e01b81526004015f60405180830381865afa1580156110e1573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611126919081019061186f565b90505f805b825181101561118b576111708382815181106111495761114961194d565b6020026020010151606f5f8881526020019081526020015f2061102890919063ffffffff16565b156111835761118082600161181f565b91505b60010161112b565b5060038251600261119c919061197a565b6111a69190611991565b109392505050565b5f818152606d60205260409020546065541461121d57606580545f838152606d60205260409081902054928390555190917fa044538eba1b21d23eb13fa35811ca9d1d7ff9ef1c81ee4dc594fca08412531b9161121391848252602082015260400190565b60405180910390a1505b5f818152606d60205260409020600101546066541461129257606680545f838152606d60205260409081902060010154928390555190917f11b7e0f5b30d2753fcf7151b7a907cc343034c6a7572d56c261ae00c411d16a79161128891848252602082015260400190565b60405180910390a1505b5f818152606d60205260409020600201546067541461130757606780545f838152606d60205260409081902060020154928390555190917fab2cb47d396c5d12c082ac9b6512d332af2767ca8e1fa5bcef40fa6970626569916112fd91848252602082015260400190565b60405180910390a1505b5f818152606d60205260409020600301546068541461137c57606880545f838152606d60205260409081902060030154928390555190917fd4cf36ce0d0f667d929d7bdf98e8774da275ea7f990c012c308516650d85839a9161137291848252602082015260400190565b60405180910390a1505b5f818152606d6020526040902060040154606954146113f057606980545f838152606d6020908152604091829020600401805490945542606a55925481518381529384015290917f9b20ee151d057f4f3ece7fdf4ca1370cf143f181760e7712b722572f2dcba88f910160405180910390a1505b5f818152606e6020908152604091829020600190810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790556065546066546067546068546069548651948552948401929092528285015260608201526080810191909152905182917f146676d233683eb1ec2a813a7f97a7aa3241ae78af1ee6df4a4548c47178cbfa919081900360a00190a250565b5f54610100900460ff166115095760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104d1565b610ba461163a565b60335473ffffffffffffffffffffffffffffffffffffffff163314610ba45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104d1565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f81815260018301602052604081205461163357508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610b8d565b505f610b8d565b5f54610100900460ff166116b65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104d1565b610ba433611578565b5f602082840312156116cf575f80fd5b5035919050565b5f805f805f8060c087890312156116eb575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b73ffffffffffffffffffffffffffffffffffffffff81168114611025575f80fd5b5f8060408385031215611747575f80fd5b82359150602083013561175981611715565b809150509250929050565b5f60a08284031215611774575f80fd5b50919050565b5f6020828403121561178a575f80fd5b813561179581611715565b9392505050565b5f602082840312156117ac575f80fd5b81518015158114611795575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611818576118186117bb565b5060010190565b80820180821115610b8d57610b8d6117bb565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b805161186a81611715565b919050565b5f6020808385031215611880575f80fd5b825167ffffffffffffffff80821115611897575f80fd5b818501915085601f8301126118aa575f80fd5b8151818111156118bc576118bc611832565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156118ff576118ff611832565b60405291825284820192508381018501918883111561191c575f80fd5b938501935b82851015611941576119328561185f565b84529385019392850192611921565b98975050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8082028115828204841417610b8d57610b8d6117bb565b5f826119c4577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea164736f6c6343000818000a", } // GovABI is the input ABI used to generate the binding from. diff --git a/bindings/bindings/gov_more.go b/bindings/bindings/gov_more.go index b3bd07e8a..7b31c0418 100644 --- a/bindings/bindings/gov_more.go +++ b/bindings/bindings/gov_more.go @@ -13,7 +13,7 @@ const GovStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract\":\"contr var GovStorageLayout = new(solc.StorageLayout) -var GovDeployedBin = "0x608060405234801561000f575f80fd5b5060043610610179575f3560e01c80638da5cb5b116100d2578063b511328d11610088578063e5aec99511610063578063e5aec9951461038e578063ecded2ae14610397578063f2fde38b146103aa575f80fd5b8063b511328d14610334578063bb881e4114610372578063de00d3fd1461037b575f80fd5b8063929a9cbe116100b8578063929a9cbe146102b457806396dea936146102bd5780639f50395214610321575f80fd5b80638da5cb5b1461026f5780638e21d5fb1461028d575f80fd5b806349c1a5811161013257806377c793801161010d57806377c7938014610211578063807de4431461021a5780638596305214610266575f80fd5b806349c1a581146101dd5780636396619014610200578063715018a614610209575f80fd5b80632d7aa82b116101625780632d7aa82b146101a55780634063a84e146101b85780634428c1a4146101d4575f80fd5b80630121b93f1461017d5780630d61b51914610192575b5f80fd5b61019061018b366004611b1d565b6103bd565b005b6101906101a0366004611b1d565b61082b565b6101906101b3366004611b34565b61093f565b6101c1606b5481565b6040519081526020015b60405180910390f35b6101c1606a5481565b6101f06101eb366004611b94565b610e01565b60405190151581526020016101cb565b6101c1606c5481565b610190610e21565b6101c160675481565b6102417f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101cb565b6101c160655481565b60335473ffffffffffffffffffffffffffffffffffffffff16610241565b6102417f000000000000000000000000000000000000000000000000000000000000000081565b6101c160665481565b6102f96102cb366004611b1d565b606d6020525f9081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a0016101cb565b61019061032f366004611b1d565b610e34565b61035d610342366004611b1d565b606e6020525f90815260409020805460019091015460ff1682565b604080519283529015156020830152016101cb565b6101c160685481565b610190610389366004611bc2565b610ef8565b6101c160695481565b6101f06103a5366004611b1d565b611256565b6101906103b8366004611bd8565b61129b565b5f73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016636d46e987336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa158015610462573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104869190611bfa565b9050806104f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6f6e6c792073657175656e6365722063616e2070726f706f736500000000000060448201526064015b60405180910390fd5b5f828152606e6020526040902060010154829060ff1615610571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f70726f706f73616c20616c726561647920617070726f7665640000000000000060448201526064016104eb565b5f818152606e60205260409020544211156105e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f70726f706f73616c206f7574206f66206461746500000000000000000000000060448201526064016104eb565b6105ff335f858152606f6020526040902090611352565b1561068c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f73657175656e63657220616c726561647920766f746520666f7220746869732060448201527f70726f706f73616c00000000000000000000000000000000000000000000000060648201526084016104eb565b6106a3335f858152606f6020526040902090611380565b505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166377d7dffb6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561070d573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526107529190810190611c56565b90505f5b81518110156107e55761079b82828151811061077457610774611d34565b6020026020010151606f5f8881526020019081526020015f2061135290919063ffffffff16565b6107dd576107db8282815181106107b4576107b4611d34565b6020026020010151606f5f8881526020019081526020015f206113a190919063ffffffff16565b505b600101610756565b506003815160026107f69190611d8e565b6108009190611da5565b5f858152606f60205260409020610816906113c2565b111561082557610825846113cb565b50505050565b5f818152606e6020526040902060010154819060ff16156108a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f70726f706f73616c20616c726561647920617070726f7665640000000000000060448201526064016104eb565b5f818152606e602052604090205442111561091f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f70726f706f73616c206f7574206f66206461746500000000000000000000000060448201526064016104eb565b5f610929836116aa565b9050801561093a5761093a836113cb565b505050565b5f54610100900460ff161580801561095d57505f54600160ff909116105b806109765750303b15801561097657505f5460ff166001145b610a02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016104eb565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610a5e575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b5f8711610ac7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f696e76616c69642070726f706f73616c20696e74657276616c0000000000000060448201526064016104eb565b5f8311610b30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f696e76616c6964206d6178206368756e6b73000000000000000000000000000060448201526064016104eb565b5f8211610b99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c696420726f6c6c75702065706f636800000000000000000000000060448201526064016104eb565b85151580610ba657508415155b80610bb057508315155b610c16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c696420626174636820706172616d7300000000000000000000000060448201526064016104eb565b610c1e6117ba565b606b8790556065869055606685905560678490556068839055606982905542606a55604080515f8152602081018990527f9e890086ea51933fb82fde9166ba4d58ecb0fdb81559ee03743b7ac052f43f7b910160405180910390a1604080515f8152602081018890527fa044538eba1b21d23eb13fa35811ca9d1d7ff9ef1c81ee4dc594fca08412531b910160405180910390a1604080515f8152602081018790527f11b7e0f5b30d2753fcf7151b7a907cc343034c6a7572d56c261ae00c411d16a7910160405180910390a1604080515f8152602081018690527fab2cb47d396c5d12c082ac9b6512d332af2767ca8e1fa5bcef40fa6970626569910160405180910390a1604080515f8152602081018590527fd4cf36ce0d0f667d929d7bdf98e8774da275ea7f990c012c308516650d85839a910160405180910390a1604080515f8152602081018490527f9b20ee151d057f4f3ece7fdf4ca1370cf143f181760e7712b722572f2dcba88f910160405180910390a18015610df8575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b5f828152606f60205260408120610e189083611352565b90505b92915050565b610e29611858565b610e325f6118d9565b565b610e3c611858565b5f81118015610e4d57506065548114155b610eb3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f696e76616c6964206e65772070726f706f73616c20696e74657276616c00000060448201526064016104eb565b606580549082905560408051828152602081018490527f9e890086ea51933fb82fde9166ba4d58ecb0fdb81559ee03743b7ac052f43f7b910160405180910390a15050565b5f73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016636d46e987336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa158015610f9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fc19190611bfa565b90508061102a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6f6e6c792073657175656e6365722063616e2070726f706f736500000000000060448201526064016104eb565b81608001355f03611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c696420726f6c6c75702065706f636800000000000000000000000060448201526064016104eb565b5f826060013511611104576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f696e76616c6964206d6178206368756e6b73000000000000000000000000000060448201526064016104eb565b81351515806111165750602082013515155b806111245750604082013515155b61118a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c696420626174636820706172616d7300000000000000000000000060448201526064016104eb565b606c8054905f61119983611ddd565b9091555050606c545f908152606d6020526040902082906111e5828281358155602082013560018201556040820135600282015560608201356003820155608082013560048201555050565b9050506040518060400160405280606b54426112019190611e14565b81525f6020918201819052606c548152606e82526040902082518155910151600190910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790555050565b5f818152606e602052604081206001015460ff161561127657505f919050565b5f828152606e602052604090205442111561129257505f919050565b610e1b826116aa565b6112a3611858565b73ffffffffffffffffffffffffffffffffffffffff8116611346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104eb565b61134f816118d9565b50565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001830160205260408120541515610e18565b5f610e188373ffffffffffffffffffffffffffffffffffffffff841661194f565b5f610e188373ffffffffffffffffffffffffffffffffffffffff841661199b565b5f610e1b825490565b5f818152606d60205260409020546065541461143a57606580545f838152606d60205260409081902054928390555190917fa044538eba1b21d23eb13fa35811ca9d1d7ff9ef1c81ee4dc594fca08412531b9161143091848252602082015260400190565b60405180910390a1505b5f818152606d6020526040902060010154606654146114af57606680545f838152606d60205260409081902060010154928390555190917f11b7e0f5b30d2753fcf7151b7a907cc343034c6a7572d56c261ae00c411d16a7916114a591848252602082015260400190565b60405180910390a1505b5f818152606d60205260409020600201546067541461152457606780545f838152606d60205260409081902060020154928390555190917fab2cb47d396c5d12c082ac9b6512d332af2767ca8e1fa5bcef40fa69706265699161151a91848252602082015260400190565b60405180910390a1505b5f818152606d60205260409020600301546068541461159957606880545f838152606d60205260409081902060030154928390555190917fd4cf36ce0d0f667d929d7bdf98e8774da275ea7f990c012c308516650d85839a9161158f91848252602082015260400190565b60405180910390a1505b5f818152606d60205260409020600401546069541461160d57606980545f838152606d6020908152604091829020600401805490945542606a55925481518381529384015290917f9b20ee151d057f4f3ece7fdf4ca1370cf143f181760e7712b722572f2dcba88f910160405180910390a1505b5f818152606e6020908152604091829020600190810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790556065546066546067546068546069548651948552948401929092528285015260608201526080810191909152905182917f146676d233683eb1ec2a813a7f97a7aa3241ae78af1ee6df4a4548c47178cbfa919081900360a00190a250565b5f807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166377d7dffb6040518163ffffffff1660e01b81526004015f60405180830381865afa158015611714573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526117599190810190611c56565b90505f805b82518110156117975761177c83828151811061077457610774611d34565b1561178f5761178c826001611e14565b91505b60010161175e565b506003825160026117a89190611d8e565b6117b29190611da5565b109392505050565b5f54610100900460ff16611850576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104eb565b610e32611a7e565b60335473ffffffffffffffffffffffffffffffffffffffff163314610e32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104eb565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f81815260018301602052604081205461199457508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610e1b565b505f610e1b565b5f8181526001830160205260408120548015611a75575f6119bd600183611e27565b85549091505f906119d090600190611e27565b9050818114611a2f575f865f0182815481106119ee576119ee611d34565b905f5260205f200154905080875f018481548110611a0e57611a0e611d34565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080611a4057611a40611e3a565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050610e1b565b5f915050610e1b565b5f54610100900460ff16611b14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104eb565b610e32336118d9565b5f60208284031215611b2d575f80fd5b5035919050565b5f805f805f8060c08789031215611b49575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b73ffffffffffffffffffffffffffffffffffffffff8116811461134f575f80fd5b5f8060408385031215611ba5575f80fd5b823591506020830135611bb781611b73565b809150509250929050565b5f60a08284031215611bd2575f80fd5b50919050565b5f60208284031215611be8575f80fd5b8135611bf381611b73565b9392505050565b5f60208284031215611c0a575f80fd5b81518015158114611bf3575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b8051611c5181611b73565b919050565b5f6020808385031215611c67575f80fd5b825167ffffffffffffffff80821115611c7e575f80fd5b818501915085601f830112611c91575f80fd5b815181811115611ca357611ca3611c19565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715611ce657611ce6611c19565b604052918252848201925083810185019188831115611d03575f80fd5b938501935b82851015611d2857611d1985611c46565b84529385019392850192611d08565b98975050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082028115828204841417610e1b57610e1b611d61565b5f82611dd8577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611e0d57611e0d611d61565b5060010190565b80820180821115610e1b57610e1b611d61565b81810381811115610e1b57610e1b611d61565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea164736f6c6343000818000a" +var GovDeployedBin = "0x608060405234801561000f575f80fd5b5060043610610179575f3560e01c80638da5cb5b116100d2578063b511328d11610088578063e5aec99511610063578063e5aec9951461038e578063ecded2ae14610397578063f2fde38b146103aa575f80fd5b8063b511328d14610334578063bb881e4114610372578063de00d3fd1461037b575f80fd5b8063929a9cbe116100b8578063929a9cbe146102b457806396dea936146102bd5780639f50395214610321575f80fd5b80638da5cb5b1461026f5780638e21d5fb1461028d575f80fd5b806349c1a5811161013257806377c793801161010d57806377c7938014610211578063807de4431461021a5780638596305214610266575f80fd5b806349c1a581146101dd5780636396619014610200578063715018a614610209575f80fd5b80632d7aa82b116101625780632d7aa82b146101a55780634063a84e146101b85780634428c1a4146101d4575f80fd5b80630121b93f1461017d5780630d61b51914610192575b5f80fd5b61019061018b3660046118c7565b6103bd565b005b6101906101a03660046118c7565b6106c0565b6101906101b33660046118de565b6107cf565b6101c1606b5481565b6040519081526020015b60405180910390f35b6101c1606a5481565b6101f06101eb36600461193e565b610c91565b60405190151581526020016101cb565b6101c1606c5481565b610190610cb1565b6101c160675481565b6102417f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101cb565b6101c160655481565b60335473ffffffffffffffffffffffffffffffffffffffff16610241565b6102417f000000000000000000000000000000000000000000000000000000000000000081565b6101c160665481565b6102f96102cb3660046118c7565b606d6020525f9081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a0016101cb565b61019061032f3660046118c7565b610cc4565b61035d6103423660046118c7565b606e6020525f90815260409020805460019091015460ff1682565b604080519283529015156020830152016101cb565b6101c160685481565b61019061038936600461196c565b610d88565b6101c160695481565b6101f06103a53660046118c7565b6110e6565b6101906103b8366004611982565b61112b565b5f73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016636d46e987336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa158015610462573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061048691906119a4565b9050806104f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6f6e6c792073657175656e6365722063616e2070726f706f736500000000000060448201526064015b60405180910390fd5b5f828152606e6020526040902060010154829060ff1615610571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f70726f706f73616c20616c726561647920617070726f7665640000000000000060448201526064016104eb565b5f818152606e60205260409020544211156105e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f70726f706f73616c206f7574206f66206461746500000000000000000000000060448201526064016104eb565b6105ff335f858152606f60205260409020906111e2565b1561068c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f73657175656e63657220616c726561647920766f746520666f7220746869732060448201527f70726f706f73616c00000000000000000000000000000000000000000000000060648201526084016104eb565b6106a3335f858152606f6020526040902090611210565b506106ad83611231565b156106bb576106bb83611368565b505050565b5f818152606e6020526040902060010154819060ff161561073d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f70726f706f73616c20616c726561647920617070726f7665640000000000000060448201526064016104eb565b5f818152606e60205260409020544211156107b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f70726f706f73616c206f7574206f66206461746500000000000000000000000060448201526064016104eb565b6107bd82611231565b156107cb576107cb82611368565b5050565b5f54610100900460ff16158080156107ed57505f54600160ff909116105b806108065750303b15801561080657505f5460ff166001145b610892576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016104eb565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156108ee575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b5f8711610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f696e76616c69642070726f706f73616c20696e74657276616c0000000000000060448201526064016104eb565b5f83116109c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f696e76616c6964206d6178206368756e6b73000000000000000000000000000060448201526064016104eb565b5f8211610a29576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c696420726f6c6c75702065706f636800000000000000000000000060448201526064016104eb565b85151580610a3657508415155b80610a4057508315155b610aa6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c696420626174636820706172616d7300000000000000000000000060448201526064016104eb565b610aae611647565b606b8790556065869055606685905560678490556068839055606982905542606a55604080515f8152602081018990527f9e890086ea51933fb82fde9166ba4d58ecb0fdb81559ee03743b7ac052f43f7b910160405180910390a1604080515f8152602081018890527fa044538eba1b21d23eb13fa35811ca9d1d7ff9ef1c81ee4dc594fca08412531b910160405180910390a1604080515f8152602081018790527f11b7e0f5b30d2753fcf7151b7a907cc343034c6a7572d56c261ae00c411d16a7910160405180910390a1604080515f8152602081018690527fab2cb47d396c5d12c082ac9b6512d332af2767ca8e1fa5bcef40fa6970626569910160405180910390a1604080515f8152602081018590527fd4cf36ce0d0f667d929d7bdf98e8774da275ea7f990c012c308516650d85839a910160405180910390a1604080515f8152602081018490527f9b20ee151d057f4f3ece7fdf4ca1370cf143f181760e7712b722572f2dcba88f910160405180910390a18015610c88575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b5f828152606f60205260408120610ca890836111e2565b90505b92915050565b610cb96116e5565b610cc25f611766565b565b610ccc6116e5565b5f81118015610cdd57506065548114155b610d43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f696e76616c6964206e65772070726f706f73616c20696e74657276616c00000060448201526064016104eb565b606580549082905560408051828152602081018490527f9e890086ea51933fb82fde9166ba4d58ecb0fdb81559ee03743b7ac052f43f7b910160405180910390a15050565b5f73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016636d46e987336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa158015610e2d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e5191906119a4565b905080610eba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6f6e6c792073657175656e6365722063616e2070726f706f736500000000000060448201526064016104eb565b81608001355f03610f27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c696420726f6c6c75702065706f636800000000000000000000000060448201526064016104eb565b5f826060013511610f94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f696e76616c6964206d6178206368756e6b73000000000000000000000000000060448201526064016104eb565b8135151580610fa65750602082013515155b80610fb45750604082013515155b61101a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c696420626174636820706172616d7300000000000000000000000060448201526064016104eb565b606c8054905f611029836119f0565b9091555050606c545f908152606d602052604090208290611075828281358155602082013560018201556040820135600282015560608201356003820155608082013560048201555050565b9050506040518060400160405280606b54426110919190611a27565b81525f6020918201819052606c548152606e82526040902082518155910151600190910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790555050565b5f818152606e602052604081206001015460ff161561110657505f919050565b5f828152606e602052604090205442111561112257505f919050565b610cab82611231565b6111336116e5565b73ffffffffffffffffffffffffffffffffffffffff81166111d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104eb565b6111df81611766565b50565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001830160205260408120541515610ca8565b5f610ca88373ffffffffffffffffffffffffffffffffffffffff84166117dc565b5f807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166377d7dffb6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561129b573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526112e09190810190611a77565b90505f805b82518110156113455761132a83828151811061130357611303611b55565b6020026020010151606f5f8881526020019081526020015f206111e290919063ffffffff16565b1561133d5761133a826001611a27565b91505b6001016112e5565b506003825160026113569190611b82565b6113609190611b99565b109392505050565b5f818152606d6020526040902054606554146113d757606580545f838152606d60205260409081902054928390555190917fa044538eba1b21d23eb13fa35811ca9d1d7ff9ef1c81ee4dc594fca08412531b916113cd91848252602082015260400190565b60405180910390a1505b5f818152606d60205260409020600101546066541461144c57606680545f838152606d60205260409081902060010154928390555190917f11b7e0f5b30d2753fcf7151b7a907cc343034c6a7572d56c261ae00c411d16a79161144291848252602082015260400190565b60405180910390a1505b5f818152606d6020526040902060020154606754146114c157606780545f838152606d60205260409081902060020154928390555190917fab2cb47d396c5d12c082ac9b6512d332af2767ca8e1fa5bcef40fa6970626569916114b791848252602082015260400190565b60405180910390a1505b5f818152606d60205260409020600301546068541461153657606880545f838152606d60205260409081902060030154928390555190917fd4cf36ce0d0f667d929d7bdf98e8774da275ea7f990c012c308516650d85839a9161152c91848252602082015260400190565b60405180910390a1505b5f818152606d6020526040902060040154606954146115aa57606980545f838152606d6020908152604091829020600401805490945542606a55925481518381529384015290917f9b20ee151d057f4f3ece7fdf4ca1370cf143f181760e7712b722572f2dcba88f910160405180910390a1505b5f818152606e6020908152604091829020600190810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790556065546066546067546068546069548651948552948401929092528285015260608201526080810191909152905182917f146676d233683eb1ec2a813a7f97a7aa3241ae78af1ee6df4a4548c47178cbfa919081900360a00190a250565b5f54610100900460ff166116dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104eb565b610cc2611828565b60335473ffffffffffffffffffffffffffffffffffffffff163314610cc2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104eb565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f81815260018301602052604081205461182157508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610cab565b505f610cab565b5f54610100900460ff166118be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104eb565b610cc233611766565b5f602082840312156118d7575f80fd5b5035919050565b5f805f805f8060c087890312156118f3575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b73ffffffffffffffffffffffffffffffffffffffff811681146111df575f80fd5b5f806040838503121561194f575f80fd5b8235915060208301356119618161191d565b809150509250929050565b5f60a0828403121561197c575f80fd5b50919050565b5f60208284031215611992575f80fd5b813561199d8161191d565b9392505050565b5f602082840312156119b4575f80fd5b8151801515811461199d575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611a2057611a206119c3565b5060010190565b80820180821115610cab57610cab6119c3565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b8051611a728161191d565b919050565b5f6020808385031215611a88575f80fd5b825167ffffffffffffffff80821115611a9f575f80fd5b818501915085601f830112611ab2575f80fd5b815181811115611ac457611ac4611a3a565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715611b0757611b07611a3a565b604052918252848201925083810185019188831115611b24575f80fd5b938501935b82851015611b4957611b3a85611a67565b84529385019392850192611b29565b98975050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8082028115828204841417610cab57610cab6119c3565b5f82611bcc577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea164736f6c6343000818000a" func init() { if err := json.Unmarshal([]byte(GovStorageLayoutJSON), GovStorageLayout); err != nil { diff --git a/bindings/bindings/l1staking.go b/bindings/bindings/l1staking.go index 8295dd4ec..2a07a388f 100644 --- a/bindings/bindings/l1staking.go +++ b/bindings/bindings/l1staking.go @@ -31,7 +31,7 @@ var ( // L1StakingMetaData contains all meta data concerning the L1Staking contract. var L1StakingMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_messenger\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"Claimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldGasLimit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newGasLimit\",\"type\":\"uint256\"}],\"name\":\"GasLimitAddStakerUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldGasLimit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newGasLimit\",\"type\":\"uint256\"}],\"name\":\"GasLimitRemoveStakersUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"tmKey\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"blsKey\",\"type\":\"bytes\"}],\"name\":\"Registered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldPercentage\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPercentage\",\"type\":\"uint256\"}],\"name\":\"RewardPercentageUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"SlashRemainingClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"stakers\",\"type\":\"address[]\"}],\"name\":\"Slashed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"stakers\",\"type\":\"address[]\"}],\"name\":\"StakersRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"add\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"remove\",\"type\":\"address[]\"}],\"name\":\"WhitelistUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"unlockHeight\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MESSENGER\",\"outputs\":[{\"internalType\":\"contractICrossDomainMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OTHER_STAKING\",\"outputs\":[{\"internalType\":\"contractStaking\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"blsPubkey\",\"type\":\"bytes\"}],\"name\":\"blsKeys\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"claimSlashRemaining\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"claimWithdrawal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasLimitAddStaker\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasLimitRemoveStakers\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStakers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rollupContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_stakingValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_lockBlocks\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_rewardPercentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_gasLimitAdd\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_gasLimitRemove\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"isStaker\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messenger\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"tmKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"blsKey\",\"type\":\"bytes\"}],\"name\":\"register\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"removedList\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardPercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollupContract\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"sequencers\",\"type\":\"address[]\"}],\"name\":\"slash\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slashRemaining\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"stakers\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"tmKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"blsKey\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakingValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"tmPubkey\",\"type\":\"bytes32\"}],\"name\":\"tmKeys\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_gasLimitAdd\",\"type\":\"uint256\"}],\"name\":\"updateGasLimitAddStaker\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_gasLimitRemove\",\"type\":\"uint256\"}],\"name\":\"updateGasLimitRemoveStakers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_rewardPercentage\",\"type\":\"uint256\"}],\"name\":\"updateRewardPercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"add\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"remove\",\"type\":\"address[]\"}],\"name\":\"updateWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"verifySignature\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawalLockBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"withdrawals\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60c060405234801562000010575f80fd5b5060405162002dd838038062002dd883398101604081905262000033916200005d565b6001600160a01b031660805273530000000000000000000000000000000000001260a0526200008c565b5f602082840312156200006e575f80fd5b81516001600160a01b038116811462000085575f80fd5b9392505050565b60805160a051612d07620000d15f395f818161041701528181611c880152611e0c01525f8181610268015281816104e001528181611c4c0152611dd00152612d075ff3fe6080604052600436106101db575f3560e01c80638a565ac3116100fd578063ab8c53dc11610092578063c7cd469a11610062578063c7cd469a146105f5578063cde4cd1114610614578063d51c90a914610633578063f2fde38b14610648575f80fd5b8063ab8c53dc1461056e578063ae81de5314610583578063bfa02ba9146105a2578063c0af545b146105ce575f80fd5b8063927ede2d116100cd578063927ede2d146104cf5780639b19251a14610502578063a3066aab14610530578063a4f209b01461054f575f80fd5b80638a565ac3146104395780638b8c24c1146104585780638da5cb5b146104775780639168ae72146104a1575f80fd5b80634d64903a11610173578063715018a611610143578063715018a61461038d5780637a4e87c3146103a15780637a9262a2146103db578063831cfb5814610406575f80fd5b80634d64903a1461031657806352d472eb1461032b578063692c565b146103405780636f1e85331461036e575f80fd5b80633ccfd60b116101ae5780633ccfd60b146102ad57806341de239b146102c157806343352d61146102d657806345ff4c80146102f7575f80fd5b80632108db35146101df5780632a28e5a3146102075780633a9bbede1461021c5780633cb747bf1461025a575b5f80fd5b3480156101ea575f80fd5b506101f4609c5481565b6040519081526020015b60405180910390f35b61021a61021536600461252d565b610667565b005b348015610227575f80fd5b5061024a610236366004612594565b609f6020525f908152604090205460ff1681565b60405190151581526020016101fe565b348015610265575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101fe565b3480156102b8575f80fd5b5061021a610aa4565b3480156102cc575f80fd5b506101f460995481565b3480156102e1575f80fd5b506102ea610cac565b6040516101fe91906125ad565b348015610302575f80fd5b5061021a610311366004612606565b610cbd565b348015610321575f80fd5b506101f460985481565b348015610336575f80fd5b506101f4609a5481565b34801561034b575f80fd5b5061024a61035a36600461264c565b60a46020525f908152604090205460ff1681565b348015610379575f80fd5b5061024a610388366004612594565b611161565b348015610398575f80fd5b5061021a611173565b3480156103ac575f80fd5b5061024a6103bb366004612663565b805160208183018101805160a38252928201919093012091525460ff1681565b3480156103e6575f80fd5b506101f46103f5366004612594565b60a56020525f908152604090205481565b348015610411575f80fd5b506102887f000000000000000000000000000000000000000000000000000000000000000081565b348015610444575f80fd5b5061021a61045336600461264c565b611186565b348015610463575f80fd5b506101f461047236600461269d565b611231565b348015610482575f80fd5b5060335473ffffffffffffffffffffffffffffffffffffffff16610288565b3480156104ac575f80fd5b506104c06104bb366004612594565b6115c5565b6040516101fe93929190612792565b3480156104da575f80fd5b506102887f000000000000000000000000000000000000000000000000000000000000000081565b34801561050d575f80fd5b5061024a61051c366004612594565b609e6020525f908152604090205460ff1681565b34801561053b575f80fd5b5061021a61054a366004612594565b611684565b34801561055a575f80fd5b5061021a61056936600461264c565b6117b6565b348015610579575f80fd5b506101f4609d5481565b34801561058e575f80fd5b5061021a61059d36600461264c565b611866565b3480156105ad575f80fd5b506097546102889073ffffffffffffffffffffffffffffffffffffffff1681565b3480156105d9575f80fd5b5061024a6105e8366004612817565b6001979650505050505050565b348015610600575f80fd5b5061021a61060f3660046128dd565b611909565b34801561061f575f80fd5b5061021a61062e366004612594565b611b0d565b34801561063e575f80fd5b506101f4609b5481565b348015610653575f80fd5b5061021a610662366004612594565b611b88565b335f818152609e602052604090205460ff166106ca5760405162461bcd60e51b815260206004820152601060248201527f6e6f7420696e2077686974656c6973740000000000000000000000000000000060448201526064015b60405180910390fd5b335f90815260a2602052604090205473ffffffffffffffffffffffffffffffffffffffff161561073c5760405162461bcd60e51b815260206004820152601260248201527f616c72656164792072656769737465726564000000000000000000000000000060448201526064016106c1565b821580159061075957505f83815260a4602052604090205460ff16155b6107a55760405162461bcd60e51b815260206004820152601960248201527f696e76616c69642074656e6465726d696e74207075626b65790000000000000060448201526064016106c1565b81516101001480156107d7575060a3826040516107c29190612944565b9081526040519081900360200190205460ff16155b6108235760405162461bcd60e51b815260206004820152601260248201527f696e76616c696420626c73207075626b6579000000000000000000000000000060448201526064016106c1565b60985434146108745760405162461bcd60e51b815260206004820152601560248201527f696e76616c6964207374616b696e672076616c7565000000000000000000000060448201526064016106c1565b60405180606001604052806108863390565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083018790526040928301869052335f90815260a28252839020845181547fffffffffffffffffffffffff0000000000000000000000000000000000000000169316929092178255830151600182015590820151600282019061090590826129f4565b5090505061091b6109133390565b60a090611c22565b50600160a38360405161092e9190612944565b9081526040805191829003602090810190922080549315157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009485161790555f86815260a49092529020805490911660011790557fb9c7babb56df9f2da4a30811a6c778e4e68af88b72712d56cf62c5516e20e1996109aa3390565b84846040516109bb93929190612792565b60405180910390a1335f90815260a260209081526040918290208251606081018452815473ffffffffffffffffffffffffffffffffffffffff168152600182015492810192909252600281018054610a9f9484019190610a1a9061295f565b80601f0160208091040260200160405190810160405280929190818152602001828054610a469061295f565b8015610a915780601f10610a6857610100808354040283529160200191610a91565b820191905f5260205f20905b815481529060010190602001808311610a7457829003601f168201915b505050505081525050611c4a565b505050565b610aaf60a033611d7f565b610afb5760405162461bcd60e51b815260206004820152600b60248201527f6f6e6c79207374616b657200000000000000000000000000000000000000000060448201526064016106c1565b335f90815260a5602052604090205415610b575760405162461bcd60e51b815260206004820152600b60248201527f7769746864726177696e6700000000000000000000000000000000000000000060448201526064016106c1565b609954610b649043612b1f565b335f81815260a56020526040902091909155610b829060a090611dad565b50335f81815260a560209081526040918290205491519182527f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5910160405180910390a26040805160018082528183019092525f916020808301908036833701905050905033815f81518110610bfa57610bfa612b32565b73ffffffffffffffffffffffffffffffffffffffff92909216602092830291909101820152335f908152609e8252604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00908116909155609f909352908190208054909216600117909155517f3f446646c03e618be8238a586960d6d625f35c653cdca1ef59609993e8ed2c8490610c989083906125ad565b60405180910390a1610ca981611dce565b50565b6060610cb860a0611ed3565b905090565b5f54610100900460ff1615808015610cdb57505f54600160ff909116105b80610cf45750303b158015610cf457505f5460ff166001145b610d665760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106c1565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610dc2575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b73ffffffffffffffffffffffffffffffffffffffff8716610e255760405162461bcd60e51b815260206004820152601760248201527f696e76616c696420726f6c6c757020636f6e747261637400000000000000000060448201526064016106c1565b5f8611610e745760405162461bcd60e51b815260206004820152601560248201527f696e76616c6964207374616b696e672076616c7565000000000000000000000060448201526064016106c1565b5f8511610ec35760405162461bcd60e51b815260206004820152601e60248201527f696e76616c6964207769746864726177616c206c6f636b20626c6f636b73000060448201526064016106c1565b5f8311610f125760405162461bcd60e51b815260206004820152601c60248201527f696e76616c696420676173206c696d697420616464207374616b65720000000060448201526064016106c1565b5f8211610f615760405162461bcd60e51b815260206004820181905260248201527f696e76616c696420676173206c696d69742072656d6f7665207374616b65727360448201526064016106c1565b5f84118015610f71575060648411155b610fe25760405162461bcd60e51b8152602060048201526024808201527f696e76616c6964206368616c6c656e676572207265776172642070657263656e60448201527f746167650000000000000000000000000000000000000000000000000000000060648201526084016106c1565b610fea611edf565b610ff2611f63565b609780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8916179055609a84905560988690556099859055609b839055609c829055604080515f8152602081018590527f0ef80fb82bf5439b8591744c0fde771f5d93dce7a7970b1e9b7828cdc3970e9c910160405180910390a1604080515f8152602081018490527fdd4b37d1f14888147fe4be2cfaedcbf148fd07ececc856d0433241b8b6e4a7f7910160405180910390a1604080515f8152602081018690527fa46de936426e045703b2d34a292a19fde92b329018db8e0da750033876b655ba910160405180910390a18015611158575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b5f61116d60a083611d7f565b92915050565b61117b611fe7565b6111845f61204e565b565b61118e611fe7565b5f8111801561119f5750609c548114155b6111eb5760405162461bcd60e51b815260206004820152601560248201527f696e76616c6964206e657720676173206c696d6974000000000000000000000060448201526064016106c1565b609c80549082905560408051828152602081018490527fdd4b37d1f14888147fe4be2cfaedcbf148fd07ececc856d0433241b8b6e4a7f791015b60405180910390a15050565b6097545f9073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112b05760405162461bcd60e51b815260206004820152601460248201527f6f6e6c7920726f6c6c757020636f6e747261637400000000000000000000000060448201526064016106c1565b6112b86120c4565b5f805b83518110156114dc575f60a55f8684815181106112da576112da612b32565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411156113905760a55f85838151811061133757611337612b32565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9055609854826113899190612b1f565b91506114d4565b6113bd8482815181106113a5576113a5612b32565b602002602001015160a0611d7f90919063ffffffff16565b156113d2576098546113cf9083612b1f565b91505b6113ff8482815181106113e7576113e7612b32565b602002602001015160a0611dad90919063ffffffff16565b50609e5f85838151811061141557611415612b32565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81549060ff02191690556001609f5f86848151811061147c5761147c612b32565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b6001016112bb565b505f6064609a54836114ee9190612b5f565b6114f89190612b76565b90506115048183612bae565b609d5f8282546115149190612b1f565b909155505060975461153c9073ffffffffffffffffffffffffffffffffffffffff168261211d565b7f654f4a61849f1b3ad10abb283d27f02d5fece7b820acc5a3b874713b58748b5a8460405161156b91906125ad565b60405180910390a17f3f446646c03e618be8238a586960d6d625f35c653cdca1ef59609993e8ed2c84846040516115a291906125ad565b60405180910390a16115b384611dce565b9150506115c06001606555565b919050565b60a26020525f908152604090208054600182015460028301805473ffffffffffffffffffffffffffffffffffffffff9093169391926116039061295f565b80601f016020809104026020016040519081016040528092919081815260200182805461162f9061295f565b801561167a5780601f106116515761010080835404028352916020019161167a565b820191905f5260205f20905b81548152906001019060200180831161165d57829003601f168201915b5050505050905083565b61168c6120c4565b335f90815260a560205260409020546116e75760405162461bcd60e51b815260206004820152601460248201527f7769746864726177616c206e6f7420657869737400000000000000000000000060448201526064016106c1565b335f90815260a5602052604090205443116117445760405162461bcd60e51b815260206004820152601160248201527f7769746864726177616c206c6f636b656400000000000000000000000000000060448201526064016106c1565b335f81815260a56020908152604080832092909255815173ffffffffffffffffffffffffffffffffffffffff8516815291517f89309c9b2aeaffbdce717113df9427298b20448c05919bf889e05f8c3094254b9281900390910190a26117ac8160985461211d565b610ca96001606555565b6117be611fe7565b5f811180156117ce575060648111155b80156117dc5750609a548114155b6118285760405162461bcd60e51b815260206004820152601960248201527f696e76616c6964207265776172642070657263656e746167650000000000000060448201526064016106c1565b609a80549082905560408051828152602081018490527fa46de936426e045703b2d34a292a19fde92b329018db8e0da750033876b655ba9101611225565b61186e611fe7565b5f8111801561187f5750609b548114155b6118cb5760405162461bcd60e51b815260206004820152601560248201527f696e76616c6964206e657720676173206c696d6974000000000000000000000060448201526064016106c1565b609b80549082905560408051828152602081018490527f0ef80fb82bf5439b8591744c0fde771f5d93dce7a7970b1e9b7828cdc3970e9c9101611225565b611911611fe7565b5f5b83811015611a4157609f5f86868481811061193057611930612b32565b90506020020160208101906119459190612594565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f205460ff16156119bb5760405162461bcd60e51b815260206004820152600f60248201527f696e2072656d6f766564206c697374000000000000000000000000000000000060448201526064016106c1565b6001609e5f8787858181106119d2576119d2612b32565b90506020020160208101906119e79190612594565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101611913565b505f5b81811015611ac957609e5f848484818110611a6157611a61612b32565b9050602002016020810190611a769190612594565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600101611a44565b507fe375867e538b40218c1b3db2ccceaf875eb073e38b510449e6088c1539ac862284848484604051611aff9493929190612c13565b60405180910390a150505050565b611b15611fe7565b611b1d6120c4565b609d54611b2a828261211d565b5f609d556040805173ffffffffffffffffffffffffffffffffffffffff84168152602081018390527fa1fefb6c5328a92a416e321ed50997303fe7135fd88c28b0592b21ce42b5cdd9910160405180910390a150610ca96001606555565b611b90611fe7565b73ffffffffffffffffffffffffffffffffffffffff8116611c195760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106c1565b610ca98161204e565b5f611c438373ffffffffffffffffffffffffffffffffffffffff84166121da565b9392505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b2267a7b7f00000000000000000000000000000000000000000000000000000000000000005f84604051602401611cb99190612c44565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6d454d5100000000000000000000000000000000000000000000000000000000179052609b5490517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152611d4f9493929190600401612c88565b5f604051808303815f87803b158015611d66575f80fd5b505af1158015611d78573d5f803e3d5ffd5b5050505050565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001830160205260408120541515611c43565b5f611c438373ffffffffffffffffffffffffffffffffffffffff8416612226565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b2267a7b7f00000000000000000000000000000000000000000000000000000000000000005f84604051602401611e3d91906125ad565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be67fcc00000000000000000000000000000000000000000000000000000000179052609c5490517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152611d4f9493929190600401612c88565b60605f611c4383612309565b5f54610100900460ff16611f5b5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106c1565b611184612362565b5f54610100900460ff16611fdf5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106c1565b6111846123e7565b60335473ffffffffffffffffffffffffffffffffffffffff1633146111845760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106c1565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6002606554036121165760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106c1565b6002606555565b80156121cf575f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114612179576040519150601f19603f3d011682016040523d82523d5f602084013e61217e565b606091505b5050905080610a9f5760405162461bcd60e51b815260206004820152601b60248201527f526f6c6c75703a20455448207472616e73666572206661696c6564000000000060448201526064016106c1565b5050565b6001606555565b5f81815260018301602052604081205461221f57508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561116d565b505f61116d565b5f8181526001830160205260408120548015612300575f612248600183612bae565b85549091505f9061225b90600190612bae565b90508181146122ba575f865f01828154811061227957612279612b32565b905f5260205f200154905080875f01848154811061229957612299612b32565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806122cb576122cb612ccd565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061116d565b5f91505061116d565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561235657602002820191905f5260205f20905b815481526020019060010190808311612342575b50505050509050919050565b5f54610100900460ff166123de5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106c1565b6111843361204e565b5f54610100900460ff166121d35760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106c1565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156124b9576124b9612463565b604052919050565b5f82601f8301126124d0575f80fd5b813567ffffffffffffffff8111156124ea576124ea612463565b6124fd6020601f19601f84011601612490565b818152846020838601011115612511575f80fd5b816020850160208301375f918101602001919091529392505050565b5f806040838503121561253e575f80fd5b82359150602083013567ffffffffffffffff81111561255b575f80fd5b612567858286016124c1565b9150509250929050565b803573ffffffffffffffffffffffffffffffffffffffff811681146115c0575f80fd5b5f602082840312156125a4575f80fd5b611c4382612571565b602080825282518282018190525f9190848201906040850190845b818110156125fa57835173ffffffffffffffffffffffffffffffffffffffff16835292840192918401916001016125c8565b50909695505050505050565b5f805f805f8060c0878903121561261b575f80fd5b61262487612571565b9860208801359850604088013597606081013597506080810135965060a00135945092505050565b5f6020828403121561265c575f80fd5b5035919050565b5f60208284031215612673575f80fd5b813567ffffffffffffffff811115612689575f80fd5b612695848285016124c1565b949350505050565b5f60208083850312156126ae575f80fd5b823567ffffffffffffffff808211156126c5575f80fd5b818501915085601f8301126126d8575f80fd5b8135818111156126ea576126ea612463565b8060051b91506126fb848301612490565b8181529183018401918481019088841115612714575f80fd5b938501935b838510156127395761272a85612571565b82529385019390850190612719565b98975050505050505050565b5f5b8381101561275f578181015183820152602001612747565b50505f910152565b5f815180845261277e816020860160208601612745565b601f01601f19169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201525f6127c66060830184612767565b95945050505050565b5f8083601f8401126127df575f80fd5b50813567ffffffffffffffff8111156127f6575f80fd5b6020830191508360208260051b8501011115612810575f80fd5b9250929050565b5f805f805f805f6080888a03121561282d575f80fd5b873567ffffffffffffffff80821115612844575f80fd5b6128508b838c016127cf565b909950975060208a0135915080821115612868575f80fd5b6128748b838c016127cf565b909750955060408a0135945060608a0135915080821115612893575f80fd5b818a0191508a601f8301126128a6575f80fd5b8135818111156128b4575f80fd5b8b60208285010111156128c5575f80fd5b60208301945080935050505092959891949750929550565b5f805f80604085870312156128f0575f80fd5b843567ffffffffffffffff80821115612907575f80fd5b612913888389016127cf565b9096509450602087013591508082111561292b575f80fd5b50612938878288016127cf565b95989497509550505050565b5f8251612955818460208701612745565b9190910192915050565b600181811c9082168061297357607f821691505b6020821081036129aa577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f821115610a9f57805f5260205f20601f840160051c810160208510156129d55750805b601f840160051c820191505b81811015611d78575f81556001016129e1565b815167ffffffffffffffff811115612a0e57612a0e612463565b612a2281612a1c845461295f565b846129b0565b602080601f831160018114612a74575f8415612a3e5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555612aea565b5f85815260208120601f198616915b82811015612aa257888601518255948401946001909101908401612a83565b5085821015612ade57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b505060018460011b0185555b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561116d5761116d612af2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b808202811582820484141761116d5761116d612af2565b5f82612ba9577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b8181038181111561116d5761116d612af2565b8183525f60208085019450825f5b85811015612c085773ffffffffffffffffffffffffffffffffffffffff612bf583612571565b1687529582019590820190600101612bcf565b509495945050505050565b604081525f612c26604083018688612bc1565b8281036020840152612c39818587612bc1565b979650505050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff8251166020820152602082015160408201525f60408301516060808401526126956080840182612767565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152608060408201525f612cbc6080830185612767565b905082606083015295945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea164736f6c6343000818000a", + Bin: "0x60c060405234801562000010575f80fd5b5060405162002ef738038062002ef783398101604081905262000033916200005d565b6001600160a01b031660805273530000000000000000000000000000000000001560a0526200008c565b5f602082840312156200006e575f80fd5b81516001600160a01b038116811462000085575f80fd5b9392505050565b60805160a051612e26620000d15f395f818161041701528181611d5d0152611ee101525f8181610268015281816104e001528181611d210152611ea50152612e265ff3fe6080604052600436106101db575f3560e01c80638a565ac3116100fd578063ab8c53dc11610092578063c7cd469a11610062578063c7cd469a146105f5578063cde4cd1114610614578063d51c90a914610633578063f2fde38b14610648575f80fd5b8063ab8c53dc1461056e578063ae81de5314610583578063bfa02ba9146105a2578063c0af545b146105ce575f80fd5b8063927ede2d116100cd578063927ede2d146104cf5780639b19251a14610502578063a3066aab14610530578063a4f209b01461054f575f80fd5b80638a565ac3146104395780638b8c24c1146104585780638da5cb5b146104775780639168ae72146104a1575f80fd5b80634d64903a11610173578063715018a611610143578063715018a61461038d5780637a4e87c3146103a15780637a9262a2146103db578063831cfb5814610406575f80fd5b80634d64903a1461031657806352d472eb1461032b578063692c565b146103405780636f1e85331461036e575f80fd5b80633ccfd60b116101ae5780633ccfd60b146102ad57806341de239b146102c157806343352d61146102d657806345ff4c80146102f7575f80fd5b80632108db35146101df5780632a28e5a3146102075780633a9bbede1461021c5780633cb747bf1461025a575b5f80fd5b3480156101ea575f80fd5b506101f4609c5481565b6040519081526020015b60405180910390f35b61021a61021536600461264c565b610667565b005b348015610227575f80fd5b5061024a6102363660046126b3565b609f6020525f908152604090205460ff1681565b60405190151581526020016101fe565b348015610265575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101fe565b3480156102b8575f80fd5b5061021a610aa4565b3480156102cc575f80fd5b506101f460995481565b3480156102e1575f80fd5b506102ea610cac565b6040516101fe91906126cc565b348015610302575f80fd5b5061021a610311366004612725565b610cbd565b348015610321575f80fd5b506101f460985481565b348015610336575f80fd5b506101f4609a5481565b34801561034b575f80fd5b5061024a61035a36600461276b565b60a46020525f908152604090205460ff1681565b348015610379575f80fd5b5061024a6103883660046126b3565b611161565b348015610398575f80fd5b5061021a611173565b3480156103ac575f80fd5b5061024a6103bb366004612782565b805160208183018101805160a38252928201919093012091525460ff1681565b3480156103e6575f80fd5b506101f46103f53660046126b3565b60a56020525f908152604090205481565b348015610411575f80fd5b506102887f000000000000000000000000000000000000000000000000000000000000000081565b348015610444575f80fd5b5061021a61045336600461276b565b611186565b348015610463575f80fd5b506101f46104723660046127bc565b611231565b348015610482575f80fd5b5060335473ffffffffffffffffffffffffffffffffffffffff16610288565b3480156104ac575f80fd5b506104c06104bb3660046126b3565b611648565b6040516101fe939291906128b1565b3480156104da575f80fd5b506102887f000000000000000000000000000000000000000000000000000000000000000081565b34801561050d575f80fd5b5061024a61051c3660046126b3565b609e6020525f908152604090205460ff1681565b34801561053b575f80fd5b5061021a61054a3660046126b3565b611707565b34801561055a575f80fd5b5061021a61056936600461276b565b61188b565b348015610579575f80fd5b506101f4609d5481565b34801561058e575f80fd5b5061021a61059d36600461276b565b61193b565b3480156105ad575f80fd5b506097546102889073ffffffffffffffffffffffffffffffffffffffff1681565b3480156105d9575f80fd5b5061024a6105e8366004612936565b6001979650505050505050565b348015610600575f80fd5b5061021a61060f3660046129fc565b6119de565b34801561061f575f80fd5b5061021a61062e3660046126b3565b611be2565b34801561063e575f80fd5b506101f4609b5481565b348015610653575f80fd5b5061021a6106623660046126b3565b611c5d565b335f818152609e602052604090205460ff166106ca5760405162461bcd60e51b815260206004820152601060248201527f6e6f7420696e2077686974656c6973740000000000000000000000000000000060448201526064015b60405180910390fd5b335f90815260a2602052604090205473ffffffffffffffffffffffffffffffffffffffff161561073c5760405162461bcd60e51b815260206004820152601260248201527f616c72656164792072656769737465726564000000000000000000000000000060448201526064016106c1565b821580159061075957505f83815260a4602052604090205460ff16155b6107a55760405162461bcd60e51b815260206004820152601960248201527f696e76616c69642074656e6465726d696e74207075626b65790000000000000060448201526064016106c1565b81516101001480156107d7575060a3826040516107c29190612a63565b9081526040519081900360200190205460ff16155b6108235760405162461bcd60e51b815260206004820152601260248201527f696e76616c696420626c73207075626b6579000000000000000000000000000060448201526064016106c1565b60985434146108745760405162461bcd60e51b815260206004820152601560248201527f696e76616c6964207374616b696e672076616c7565000000000000000000000060448201526064016106c1565b60405180606001604052806108863390565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083018790526040928301869052335f90815260a28252839020845181547fffffffffffffffffffffffff000000000000000000000000000000000000000016931692909217825583015160018201559082015160028201906109059082612b13565b5090505061091b6109133390565b60a090611cf7565b50600160a38360405161092e9190612a63565b9081526040805191829003602090810190922080549315157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009485161790555f86815260a49092529020805490911660011790557fb9c7babb56df9f2da4a30811a6c778e4e68af88b72712d56cf62c5516e20e1996109aa3390565b84846040516109bb939291906128b1565b60405180910390a1335f90815260a260209081526040918290208251606081018452815473ffffffffffffffffffffffffffffffffffffffff168152600182015492810192909252600281018054610a9f9484019190610a1a90612a7e565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4690612a7e565b8015610a915780601f10610a6857610100808354040283529160200191610a91565b820191905f5260205f20905b815481529060010190602001808311610a7457829003601f168201915b505050505081525050611d1f565b505050565b610aaf60a033611e54565b610afb5760405162461bcd60e51b815260206004820152600b60248201527f6f6e6c79207374616b657200000000000000000000000000000000000000000060448201526064016106c1565b335f90815260a5602052604090205415610b575760405162461bcd60e51b815260206004820152600b60248201527f7769746864726177696e6700000000000000000000000000000000000000000060448201526064016106c1565b609954610b649043612c3e565b335f81815260a56020526040902091909155610b829060a090611e82565b50335f81815260a560209081526040918290205491519182527f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5910160405180910390a26040805160018082528183019092525f916020808301908036833701905050905033815f81518110610bfa57610bfa612c51565b73ffffffffffffffffffffffffffffffffffffffff92909216602092830291909101820152335f908152609e8252604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00908116909155609f909352908190208054909216600117909155517f3f446646c03e618be8238a586960d6d625f35c653cdca1ef59609993e8ed2c8490610c989083906126cc565b60405180910390a1610ca981611ea3565b50565b6060610cb860a0611fa8565b905090565b5f54610100900460ff1615808015610cdb57505f54600160ff909116105b80610cf45750303b158015610cf457505f5460ff166001145b610d665760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106c1565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610dc2575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b73ffffffffffffffffffffffffffffffffffffffff8716610e255760405162461bcd60e51b815260206004820152601760248201527f696e76616c696420726f6c6c757020636f6e747261637400000000000000000060448201526064016106c1565b5f8611610e745760405162461bcd60e51b815260206004820152601560248201527f696e76616c6964207374616b696e672076616c7565000000000000000000000060448201526064016106c1565b5f8511610ec35760405162461bcd60e51b815260206004820152601e60248201527f696e76616c6964207769746864726177616c206c6f636b20626c6f636b73000060448201526064016106c1565b5f8311610f125760405162461bcd60e51b815260206004820152601c60248201527f696e76616c696420676173206c696d697420616464207374616b65720000000060448201526064016106c1565b5f8211610f615760405162461bcd60e51b815260206004820181905260248201527f696e76616c696420676173206c696d69742072656d6f7665207374616b65727360448201526064016106c1565b5f84118015610f71575060648411155b610fe25760405162461bcd60e51b8152602060048201526024808201527f696e76616c6964206368616c6c656e676572207265776172642070657263656e60448201527f746167650000000000000000000000000000000000000000000000000000000060648201526084016106c1565b610fea611fb4565b610ff2612038565b609780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8916179055609a84905560988690556099859055609b839055609c829055604080515f8152602081018590527f0ef80fb82bf5439b8591744c0fde771f5d93dce7a7970b1e9b7828cdc3970e9c910160405180910390a1604080515f8152602081018490527fdd4b37d1f14888147fe4be2cfaedcbf148fd07ececc856d0433241b8b6e4a7f7910160405180910390a1604080515f8152602081018690527fa46de936426e045703b2d34a292a19fde92b329018db8e0da750033876b655ba910160405180910390a18015611158575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b5f61116d60a083611e54565b92915050565b61117b6120bc565b6111845f612123565b565b61118e6120bc565b5f8111801561119f5750609c548114155b6111eb5760405162461bcd60e51b815260206004820152601560248201527f696e76616c6964206e657720676173206c696d6974000000000000000000000060448201526064016106c1565b609c80549082905560408051828152602081018490527fdd4b37d1f14888147fe4be2cfaedcbf148fd07ececc856d0433241b8b6e4a7f791015b60405180910390a15050565b6097545f9073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112b05760405162461bcd60e51b815260206004820152601460248201527f6f6e6c7920726f6c6c757020636f6e747261637400000000000000000000000060448201526064016106c1565b6112b8612199565b5f805b835181101561155f575f60a55f8684815181106112da576112da612c51565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411156113905760a55f85838151811061133757611337612c51565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9055609854826113899190612c3e565b91506114d4565b6113bd8482815181106113a5576113a5612c51565b602002602001015160a0611e5490919063ffffffff16565b156113d2576098546113cf9083612c3e565b91505b6113ff8482815181106113e7576113e7612c51565b602002602001015160a0611e8290919063ffffffff16565b50609e5f85838151811061141557611415612c51565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81549060ff02191690556001609f5f86848151811061147c5761147c612c51565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b60a25f8583815181106114e9576114e9612c51565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f90812080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101829055906115556002830182612538565b50506001016112bb565b505f6064609a54836115719190612c7e565b61157b9190612c95565b90506115878183612ccd565b609d5f8282546115979190612c3e565b90915550506097546115bf9073ffffffffffffffffffffffffffffffffffffffff16826121f2565b7f654f4a61849f1b3ad10abb283d27f02d5fece7b820acc5a3b874713b58748b5a846040516115ee91906126cc565b60405180910390a17f3f446646c03e618be8238a586960d6d625f35c653cdca1ef59609993e8ed2c848460405161162591906126cc565b60405180910390a161163684611ea3565b9150506116436001606555565b919050565b60a26020525f908152604090208054600182015460028301805473ffffffffffffffffffffffffffffffffffffffff90931693919261168690612a7e565b80601f01602080910402602001604051908101604052809291908181526020018280546116b290612a7e565b80156116fd5780601f106116d4576101008083540402835291602001916116fd565b820191905f5260205f20905b8154815290600101906020018083116116e057829003601f168201915b5050505050905083565b61170f612199565b335f90815260a5602052604090205461176a5760405162461bcd60e51b815260206004820152601460248201527f7769746864726177616c206e6f7420657869737400000000000000000000000060448201526064016106c1565b335f90815260a5602052604090205443116117c75760405162461bcd60e51b815260206004820152601160248201527f7769746864726177616c206c6f636b656400000000000000000000000000000060448201526064016106c1565b335f90815260a56020908152604080832083905560a2909152812080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600181018290559061181d6002830182612538565b50506118263390565b60405173ffffffffffffffffffffffffffffffffffffffff838116825291909116907f89309c9b2aeaffbdce717113df9427298b20448c05919bf889e05f8c3094254b9060200160405180910390a2611881816098546121f2565b610ca96001606555565b6118936120bc565b5f811180156118a3575060648111155b80156118b15750609a548114155b6118fd5760405162461bcd60e51b815260206004820152601960248201527f696e76616c6964207265776172642070657263656e746167650000000000000060448201526064016106c1565b609a80549082905560408051828152602081018490527fa46de936426e045703b2d34a292a19fde92b329018db8e0da750033876b655ba9101611225565b6119436120bc565b5f811180156119545750609b548114155b6119a05760405162461bcd60e51b815260206004820152601560248201527f696e76616c6964206e657720676173206c696d6974000000000000000000000060448201526064016106c1565b609b80549082905560408051828152602081018490527f0ef80fb82bf5439b8591744c0fde771f5d93dce7a7970b1e9b7828cdc3970e9c9101611225565b6119e66120bc565b5f5b83811015611b1657609f5f868684818110611a0557611a05612c51565b9050602002016020810190611a1a91906126b3565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f205460ff1615611a905760405162461bcd60e51b815260206004820152600f60248201527f696e2072656d6f766564206c697374000000000000000000000000000000000060448201526064016106c1565b6001609e5f878785818110611aa757611aa7612c51565b9050602002016020810190611abc91906126b3565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556001016119e8565b505f5b81811015611b9e57609e5f848484818110611b3657611b36612c51565b9050602002016020810190611b4b91906126b3565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600101611b19565b507fe375867e538b40218c1b3db2ccceaf875eb073e38b510449e6088c1539ac862284848484604051611bd49493929190612d32565b60405180910390a150505050565b611bea6120bc565b611bf2612199565b609d54611bff82826121f2565b5f609d556040805173ffffffffffffffffffffffffffffffffffffffff84168152602081018390527fa1fefb6c5328a92a416e321ed50997303fe7135fd88c28b0592b21ce42b5cdd9910160405180910390a150610ca96001606555565b611c656120bc565b73ffffffffffffffffffffffffffffffffffffffff8116611cee5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106c1565b610ca981612123565b5f611d188373ffffffffffffffffffffffffffffffffffffffff84166122af565b9392505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b2267a7b7f00000000000000000000000000000000000000000000000000000000000000005f84604051602401611d8e9190612d63565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6d454d5100000000000000000000000000000000000000000000000000000000179052609b5490517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152611e249493929190600401612da7565b5f604051808303815f87803b158015611e3b575f80fd5b505af1158015611e4d573d5f803e3d5ffd5b5050505050565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001830160205260408120541515611d18565b5f611d188373ffffffffffffffffffffffffffffffffffffffff84166122fb565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b2267a7b7f00000000000000000000000000000000000000000000000000000000000000005f84604051602401611f1291906126cc565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be67fcc00000000000000000000000000000000000000000000000000000000179052609c5490517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152611e249493929190600401612da7565b60605f611d18836123de565b5f54610100900460ff166120305760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106c1565b611184612437565b5f54610100900460ff166120b45760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106c1565b6111846124bc565b60335473ffffffffffffffffffffffffffffffffffffffff1633146111845760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106c1565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6002606554036121eb5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106c1565b6002606555565b80156122a4575f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f811461224e576040519150601f19603f3d011682016040523d82523d5f602084013e612253565b606091505b5050905080610a9f5760405162461bcd60e51b815260206004820152601b60248201527f526f6c6c75703a20455448207472616e73666572206661696c6564000000000060448201526064016106c1565b5050565b6001606555565b5f8181526001830160205260408120546122f457508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561116d565b505f61116d565b5f81815260018301602052604081205480156123d5575f61231d600183612ccd565b85549091505f9061233090600190612ccd565b905081811461238f575f865f01828154811061234e5761234e612c51565b905f5260205f200154905080875f01848154811061236e5761236e612c51565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806123a0576123a0612dec565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061116d565b5f91505061116d565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561242b57602002820191905f5260205f20905b815481526020019060010190808311612417575b50505050509050919050565b5f54610100900460ff166124b35760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106c1565b61118433612123565b5f54610100900460ff166122a85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106c1565b50805461254490612a7e565b5f825580601f10612553575050565b601f0160209004905f5260205f2090810190610ca991905b8082111561257e575f815560010161256b565b5090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156125d8576125d8612582565b604052919050565b5f82601f8301126125ef575f80fd5b813567ffffffffffffffff81111561260957612609612582565b61261c6020601f19601f840116016125af565b818152846020838601011115612630575f80fd5b816020850160208301375f918101602001919091529392505050565b5f806040838503121561265d575f80fd5b82359150602083013567ffffffffffffffff81111561267a575f80fd5b612686858286016125e0565b9150509250929050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611643575f80fd5b5f602082840312156126c3575f80fd5b611d1882612690565b602080825282518282018190525f9190848201906040850190845b8181101561271957835173ffffffffffffffffffffffffffffffffffffffff16835292840192918401916001016126e7565b50909695505050505050565b5f805f805f8060c0878903121561273a575f80fd5b61274387612690565b9860208801359850604088013597606081013597506080810135965060a00135945092505050565b5f6020828403121561277b575f80fd5b5035919050565b5f60208284031215612792575f80fd5b813567ffffffffffffffff8111156127a8575f80fd5b6127b4848285016125e0565b949350505050565b5f60208083850312156127cd575f80fd5b823567ffffffffffffffff808211156127e4575f80fd5b818501915085601f8301126127f7575f80fd5b81358181111561280957612809612582565b8060051b915061281a8483016125af565b8181529183018401918481019088841115612833575f80fd5b938501935b838510156128585761284985612690565b82529385019390850190612838565b98975050505050505050565b5f5b8381101561287e578181015183820152602001612866565b50505f910152565b5f815180845261289d816020860160208601612864565b601f01601f19169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201525f6128e56060830184612886565b95945050505050565b5f8083601f8401126128fe575f80fd5b50813567ffffffffffffffff811115612915575f80fd5b6020830191508360208260051b850101111561292f575f80fd5b9250929050565b5f805f805f805f6080888a03121561294c575f80fd5b873567ffffffffffffffff80821115612963575f80fd5b61296f8b838c016128ee565b909950975060208a0135915080821115612987575f80fd5b6129938b838c016128ee565b909750955060408a0135945060608a01359150808211156129b2575f80fd5b818a0191508a601f8301126129c5575f80fd5b8135818111156129d3575f80fd5b8b60208285010111156129e4575f80fd5b60208301945080935050505092959891949750929550565b5f805f8060408587031215612a0f575f80fd5b843567ffffffffffffffff80821115612a26575f80fd5b612a32888389016128ee565b90965094506020870135915080821115612a4a575f80fd5b50612a57878288016128ee565b95989497509550505050565b5f8251612a74818460208701612864565b9190910192915050565b600181811c90821680612a9257607f821691505b602082108103612ac9577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f821115610a9f57805f5260205f20601f840160051c81016020851015612af45750805b601f840160051c820191505b81811015611e4d575f8155600101612b00565b815167ffffffffffffffff811115612b2d57612b2d612582565b612b4181612b3b8454612a7e565b84612acf565b602080601f831160018114612b93575f8415612b5d5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555612c09565b5f85815260208120601f198616915b82811015612bc157888601518255948401946001909101908401612ba2565b5085821015612bfd57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b505060018460011b0185555b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561116d5761116d612c11565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b808202811582820484141761116d5761116d612c11565b5f82612cc8577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b8181038181111561116d5761116d612c11565b8183525f60208085019450825f5b85811015612d275773ffffffffffffffffffffffffffffffffffffffff612d1483612690565b1687529582019590820190600101612cee565b509495945050505050565b604081525f612d45604083018688612ce0565b8281036020840152612d58818587612ce0565b979650505050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff8251166020820152602082015160408201525f60408301516060808401526127b46080840182612886565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152608060408201525f612ddb6080830185612886565b905082606083015295945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea164736f6c6343000818000a", } // L1StakingABI is the input ABI used to generate the binding from. diff --git a/bindings/bindings/l1staking_more.go b/bindings/bindings/l1staking_more.go index 81c20f46c..162cf82f8 100644 --- a/bindings/bindings/l1staking_more.go +++ b/bindings/bindings/l1staking_more.go @@ -13,7 +13,7 @@ const L1StakingStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract\":\ var L1StakingStorageLayout = new(solc.StorageLayout) -var L1StakingDeployedBin = "0x6080604052600436106101db575f3560e01c80638a565ac3116100fd578063ab8c53dc11610092578063c7cd469a11610062578063c7cd469a146105f5578063cde4cd1114610614578063d51c90a914610633578063f2fde38b14610648575f80fd5b8063ab8c53dc1461056e578063ae81de5314610583578063bfa02ba9146105a2578063c0af545b146105ce575f80fd5b8063927ede2d116100cd578063927ede2d146104cf5780639b19251a14610502578063a3066aab14610530578063a4f209b01461054f575f80fd5b80638a565ac3146104395780638b8c24c1146104585780638da5cb5b146104775780639168ae72146104a1575f80fd5b80634d64903a11610173578063715018a611610143578063715018a61461038d5780637a4e87c3146103a15780637a9262a2146103db578063831cfb5814610406575f80fd5b80634d64903a1461031657806352d472eb1461032b578063692c565b146103405780636f1e85331461036e575f80fd5b80633ccfd60b116101ae5780633ccfd60b146102ad57806341de239b146102c157806343352d61146102d657806345ff4c80146102f7575f80fd5b80632108db35146101df5780632a28e5a3146102075780633a9bbede1461021c5780633cb747bf1461025a575b5f80fd5b3480156101ea575f80fd5b506101f4609c5481565b6040519081526020015b60405180910390f35b61021a610215366004612897565b610667565b005b348015610227575f80fd5b5061024a6102363660046128fe565b609f6020525f908152604090205460ff1681565b60405190151581526020016101fe565b348015610265575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101fe565b3480156102b8575f80fd5b5061021a610b26565b3480156102cc575f80fd5b506101f460995481565b3480156102e1575f80fd5b506102ea610d62565b6040516101fe9190612917565b348015610302575f80fd5b5061021a610311366004612970565b610d73565b348015610321575f80fd5b506101f460985481565b348015610336575f80fd5b506101f4609a5481565b34801561034b575f80fd5b5061024a61035a3660046129b6565b60a46020525f908152604090205460ff1681565b348015610379575f80fd5b5061024a6103883660046128fe565b6112cd565b348015610398575f80fd5b5061021a6112df565b3480156103ac575f80fd5b5061024a6103bb3660046129cd565b805160208183018101805160a38252928201919093012091525460ff1681565b3480156103e6575f80fd5b506101f46103f53660046128fe565b60a56020525f908152604090205481565b348015610411575f80fd5b506102887f000000000000000000000000000000000000000000000000000000000000000081565b348015610444575f80fd5b5061021a6104533660046129b6565b6112f2565b348015610463575f80fd5b506101f4610472366004612a07565b6113b7565b348015610482575f80fd5b5060335473ffffffffffffffffffffffffffffffffffffffff16610288565b3480156104ac575f80fd5b506104c06104bb3660046128fe565b611765565b6040516101fe93929190612b1a565b3480156104da575f80fd5b506102887f000000000000000000000000000000000000000000000000000000000000000081565b34801561050d575f80fd5b5061024a61051c3660046128fe565b609e6020525f908152604090205460ff1681565b34801561053b575f80fd5b5061021a61054a3660046128fe565b611824565b34801561055a575f80fd5b5061021a6105693660046129b6565b61198a565b348015610579575f80fd5b506101f4609d5481565b34801561058e575f80fd5b5061021a61059d3660046129b6565b611a54565b3480156105ad575f80fd5b506097546102889073ffffffffffffffffffffffffffffffffffffffff1681565b3480156105d9575f80fd5b5061024a6105e8366004612b9f565b6001979650505050505050565b348015610600575f80fd5b5061021a61060f366004612c65565b611b11565b34801561061f575f80fd5b5061021a61062e3660046128fe565b611d2f565b34801561063e575f80fd5b506101f4609b5481565b348015610653575f80fd5b5061021a6106623660046128fe565b611daa565b335f818152609e602052604090205460ff166106e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6e6f7420696e2077686974656c6973740000000000000000000000000000000060448201526064015b60405180910390fd5b335f90815260a2602052604090205473ffffffffffffffffffffffffffffffffffffffff1615610770576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f616c72656164792072656769737465726564000000000000000000000000000060448201526064016106db565b821580159061078d57505f83815260a4602052604090205460ff16155b6107f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f696e76616c69642074656e6465726d696e74207075626b65790000000000000060448201526064016106db565b8151610100148015610825575060a3826040516108109190612ccc565b9081526040519081900360200190205460ff16155b61088b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f696e76616c696420626c73207075626b6579000000000000000000000000000060448201526064016106db565b60985434146108f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e76616c6964207374616b696e672076616c7565000000000000000000000060448201526064016106db565b60405180606001604052806109083390565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083018790526040928301869052335f90815260a28252839020845181547fffffffffffffffffffffffff000000000000000000000000000000000000000016931692909217825583015160018201559082015160028201906109879082612d7c565b5090505061099d6109953390565b60a090611e5e565b50600160a3836040516109b09190612ccc565b9081526040805191829003602090810190922080549315157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009485161790555f86815260a49092529020805490911660011790557fb9c7babb56df9f2da4a30811a6c778e4e68af88b72712d56cf62c5516e20e199610a2c3390565b8484604051610a3d93929190612b1a565b60405180910390a1335f90815260a260209081526040918290208251606081018452815473ffffffffffffffffffffffffffffffffffffffff168152600182015492810192909252600281018054610b219484019190610a9c90612ce7565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac890612ce7565b8015610b135780601f10610aea57610100808354040283529160200191610b13565b820191905f5260205f20905b815481529060010190602001808311610af657829003601f168201915b505050505081525050611e86565b505050565b610b3160a033611fd9565b610b97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6f6e6c79207374616b657200000000000000000000000000000000000000000060448201526064016106db565b335f90815260a5602052604090205415610c0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f7769746864726177696e6700000000000000000000000000000000000000000060448201526064016106db565b609954610c1a9043612ec5565b335f81815260a56020526040902091909155610c389060a090612007565b50335f81815260a560209081526040918290205491519182527f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5910160405180910390a26040805160018082528183019092525f916020808301908036833701905050905033815f81518110610cb057610cb0612ed8565b73ffffffffffffffffffffffffffffffffffffffff92909216602092830291909101820152335f908152609e8252604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00908116909155609f909352908190208054909216600117909155517f3f446646c03e618be8238a586960d6d625f35c653cdca1ef59609993e8ed2c8490610d4e908390612917565b60405180910390a1610d5f81612028565b50565b6060610d6e60a061214b565b905090565b5f54610100900460ff1615808015610d9157505f54600160ff909116105b80610daa5750303b158015610daa57505f5460ff166001145b610e36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106db565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610e92575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b73ffffffffffffffffffffffffffffffffffffffff8716610f0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f696e76616c696420726f6c6c757020636f6e747261637400000000000000000060448201526064016106db565b5f8611610f78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e76616c6964207374616b696e672076616c7565000000000000000000000060448201526064016106db565b5f8511610fe1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f696e76616c6964207769746864726177616c206c6f636b20626c6f636b73000060448201526064016106db565b5f831161104a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f696e76616c696420676173206c696d697420616464207374616b65720000000060448201526064016106db565b5f82116110b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f696e76616c696420676173206c696d69742072656d6f7665207374616b65727360448201526064016106db565b5f841180156110c3575060648411155b61114e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f696e76616c6964206368616c6c656e676572207265776172642070657263656e60448201527f746167650000000000000000000000000000000000000000000000000000000060648201526084016106db565b611156612157565b61115e6121f5565b609780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8916179055609a84905560988690556099859055609b839055609c829055604080515f8152602081018590527f0ef80fb82bf5439b8591744c0fde771f5d93dce7a7970b1e9b7828cdc3970e9c910160405180910390a1604080515f8152602081018490527fdd4b37d1f14888147fe4be2cfaedcbf148fd07ececc856d0433241b8b6e4a7f7910160405180910390a1604080515f8152602081018690527fa46de936426e045703b2d34a292a19fde92b329018db8e0da750033876b655ba910160405180910390a180156112c4575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b5f6112d960a083611fd9565b92915050565b6112e7612293565b6112f05f612314565b565b6112fa612293565b5f8111801561130b5750609c548114155b611371576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e76616c6964206e657720676173206c696d6974000000000000000000000060448201526064016106db565b609c80549082905560408051828152602081018490527fdd4b37d1f14888147fe4be2cfaedcbf148fd07ececc856d0433241b8b6e4a7f791015b60405180910390a15050565b6097545f9073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6f6e6c7920726f6c6c757020636f6e747261637400000000000000000000000060448201526064016106db565b61145861238a565b5f805b835181101561167c575f60a55f86848151811061147a5761147a612ed8565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411156115305760a55f8583815181106114d7576114d7612ed8565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9055609854826115299190612ec5565b9150611674565b61155d84828151811061154557611545612ed8565b602002602001015160a0611fd990919063ffffffff16565b156115725760985461156f9083612ec5565b91505b61159f84828151811061158757611587612ed8565b602002602001015160a061200790919063ffffffff16565b50609e5f8583815181106115b5576115b5612ed8565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81549060ff02191690556001609f5f86848151811061161c5761161c612ed8565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b60010161145b565b505f6064609a548361168e9190612f05565b6116989190612f1c565b90506116a48183612f54565b609d5f8282546116b49190612ec5565b90915550506097546116dc9073ffffffffffffffffffffffffffffffffffffffff16826123fd565b7f654f4a61849f1b3ad10abb283d27f02d5fece7b820acc5a3b874713b58748b5a8460405161170b9190612917565b60405180910390a17f3f446646c03e618be8238a586960d6d625f35c653cdca1ef59609993e8ed2c84846040516117429190612917565b60405180910390a161175384612028565b9150506117606001606555565b919050565b60a26020525f908152604090208054600182015460028301805473ffffffffffffffffffffffffffffffffffffffff9093169391926117a390612ce7565b80601f01602080910402602001604051908101604052809291908181526020018280546117cf90612ce7565b801561181a5780601f106117f15761010080835404028352916020019161181a565b820191905f5260205f20905b8154815290600101906020018083116117fd57829003601f168201915b5050505050905083565b61182c61238a565b335f90815260a560205260409020546118a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7769746864726177616c206e6f7420657869737400000000000000000000000060448201526064016106db565b335f90815260a560205260409020544311611918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f7769746864726177616c206c6f636b656400000000000000000000000000000060448201526064016106db565b335f81815260a56020908152604080832092909255815173ffffffffffffffffffffffffffffffffffffffff8516815291517f89309c9b2aeaffbdce717113df9427298b20448c05919bf889e05f8c3094254b9281900390910190a2611980816098546123fd565b610d5f6001606555565b611992612293565b5f811180156119a2575060648111155b80156119b05750609a548114155b611a16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f696e76616c6964207265776172642070657263656e746167650000000000000060448201526064016106db565b609a80549082905560408051828152602081018490527fa46de936426e045703b2d34a292a19fde92b329018db8e0da750033876b655ba91016113ab565b611a5c612293565b5f81118015611a6d5750609b548114155b611ad3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e76616c6964206e657720676173206c696d6974000000000000000000000060448201526064016106db565b609b80549082905560408051828152602081018490527f0ef80fb82bf5439b8591744c0fde771f5d93dce7a7970b1e9b7828cdc3970e9c91016113ab565b611b19612293565b5f5b83811015611c6357609f5f868684818110611b3857611b38612ed8565b9050602002016020810190611b4d91906128fe565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f205460ff1615611bdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f696e2072656d6f766564206c697374000000000000000000000000000000000060448201526064016106db565b6001609e5f878785818110611bf457611bf4612ed8565b9050602002016020810190611c0991906128fe565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101611b1b565b505f5b81811015611ceb57609e5f848484818110611c8357611c83612ed8565b9050602002016020810190611c9891906128fe565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600101611c66565b507fe375867e538b40218c1b3db2ccceaf875eb073e38b510449e6088c1539ac862284848484604051611d219493929190612fb9565b60405180910390a150505050565b611d37612293565b611d3f61238a565b609d54611d4c82826123fd565b5f609d556040805173ffffffffffffffffffffffffffffffffffffffff84168152602081018390527fa1fefb6c5328a92a416e321ed50997303fe7135fd88c28b0592b21ce42b5cdd9910160405180910390a150610d5f6001606555565b611db2612293565b73ffffffffffffffffffffffffffffffffffffffff8116611e55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106db565b610d5f81612314565b5f611e7f8373ffffffffffffffffffffffffffffffffffffffff84166124d4565b9392505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b2267a7b7f00000000000000000000000000000000000000000000000000000000000000005f84604051602401611ef59190612fea565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6d454d5100000000000000000000000000000000000000000000000000000000179052609b5490517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152611fa9949392919060040161302e565b5f604051808303815f87803b158015611fc0575f80fd5b505af1158015611fd2573d5f803e3d5ffd5b5050505050565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001830160205260408120541515611e7f565b5f611e7f8373ffffffffffffffffffffffffffffffffffffffff8416612520565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b2267a7b7f00000000000000000000000000000000000000000000000000000000000000005f846040516024016120979190612917565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be67fcc00000000000000000000000000000000000000000000000000000000179052609c5490517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152611fa9949392919060040161302e565b60605f611e7f83612603565b5f54610100900460ff166121ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106db565b6112f061265c565b5f54610100900460ff1661228b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106db565b6112f06126fb565b60335473ffffffffffffffffffffffffffffffffffffffff1633146112f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106db565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6002606554036123f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106db565b6002606555565b80156124c9575f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114612459576040519150601f19603f3d011682016040523d82523d5f602084013e61245e565b606091505b5050905080610b21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f526f6c6c75703a20455448207472616e73666572206661696c6564000000000060448201526064016106db565b5050565b6001606555565b5f81815260018301602052604081205461251957508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556112d9565b505f6112d9565b5f81815260018301602052604081205480156125fa575f612542600183612f54565b85549091505f9061255590600190612f54565b90508181146125b4575f865f01828154811061257357612573612ed8565b905f5260205f200154905080875f01848154811061259357612593612ed8565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806125c5576125c5613073565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506112d9565b5f9150506112d9565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561265057602002820191905f5260205f20905b81548152602001906001019080831161263c575b50505050509050919050565b5f54610100900460ff166126f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106db565b6112f033612314565b5f54610100900460ff166124cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106db565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561280557612805612791565b604052919050565b5f82601f83011261281c575f80fd5b813567ffffffffffffffff81111561283657612836612791565b61286760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016127be565b81815284602083860101111561287b575f80fd5b816020850160208301375f918101602001919091529392505050565b5f80604083850312156128a8575f80fd5b82359150602083013567ffffffffffffffff8111156128c5575f80fd5b6128d18582860161280d565b9150509250929050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611760575f80fd5b5f6020828403121561290e575f80fd5b611e7f826128db565b602080825282518282018190525f9190848201906040850190845b8181101561296457835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101612932565b50909695505050505050565b5f805f805f8060c08789031215612985575f80fd5b61298e876128db565b9860208801359850604088013597606081013597506080810135965060a00135945092505050565b5f602082840312156129c6575f80fd5b5035919050565b5f602082840312156129dd575f80fd5b813567ffffffffffffffff8111156129f3575f80fd5b6129ff8482850161280d565b949350505050565b5f6020808385031215612a18575f80fd5b823567ffffffffffffffff80821115612a2f575f80fd5b818501915085601f830112612a42575f80fd5b813581811115612a5457612a54612791565b8060051b9150612a658483016127be565b8181529183018401918481019088841115612a7e575f80fd5b938501935b83851015612aa357612a94856128db565b82529385019390850190612a83565b98975050505050505050565b5f5b83811015612ac9578181015183820152602001612ab1565b50505f910152565b5f8151808452612ae8816020860160208601612aaf565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201525f612b4e6060830184612ad1565b95945050505050565b5f8083601f840112612b67575f80fd5b50813567ffffffffffffffff811115612b7e575f80fd5b6020830191508360208260051b8501011115612b98575f80fd5b9250929050565b5f805f805f805f6080888a031215612bb5575f80fd5b873567ffffffffffffffff80821115612bcc575f80fd5b612bd88b838c01612b57565b909950975060208a0135915080821115612bf0575f80fd5b612bfc8b838c01612b57565b909750955060408a0135945060608a0135915080821115612c1b575f80fd5b818a0191508a601f830112612c2e575f80fd5b813581811115612c3c575f80fd5b8b6020828501011115612c4d575f80fd5b60208301945080935050505092959891949750929550565b5f805f8060408587031215612c78575f80fd5b843567ffffffffffffffff80821115612c8f575f80fd5b612c9b88838901612b57565b90965094506020870135915080821115612cb3575f80fd5b50612cc087828801612b57565b95989497509550505050565b5f8251612cdd818460208701612aaf565b9190910192915050565b600181811c90821680612cfb57607f821691505b602082108103612d32577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f821115610b2157805f5260205f20601f840160051c81016020851015612d5d5750805b601f840160051c820191505b81811015611fd2575f8155600101612d69565b815167ffffffffffffffff811115612d9657612d96612791565b612daa81612da48454612ce7565b84612d38565b602080601f831160018114612dfc575f8415612dc65750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555612e90565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015612e4857888601518255948401946001909101908401612e29565b5085821015612e8457878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b505060018460011b0185555b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156112d9576112d9612e98565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b80820281158282048414176112d9576112d9612e98565b5f82612f4f577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b818103818111156112d9576112d9612e98565b8183525f60208085019450825f5b85811015612fae5773ffffffffffffffffffffffffffffffffffffffff612f9b836128db565b1687529582019590820190600101612f75565b509495945050505050565b604081525f612fcc604083018688612f67565b8281036020840152612fdf818587612f67565b979650505050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff8251166020820152602082015160408201525f60408301516060808401526129ff6080840182612ad1565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152608060408201525f6130626080830185612ad1565b905082606083015295945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea164736f6c6343000818000a" +var L1StakingDeployedBin = "0x6080604052600436106101db575f3560e01c80638a565ac3116100fd578063ab8c53dc11610092578063c7cd469a11610062578063c7cd469a146105f5578063cde4cd1114610614578063d51c90a914610633578063f2fde38b14610648575f80fd5b8063ab8c53dc1461056e578063ae81de5314610583578063bfa02ba9146105a2578063c0af545b146105ce575f80fd5b8063927ede2d116100cd578063927ede2d146104cf5780639b19251a14610502578063a3066aab14610530578063a4f209b01461054f575f80fd5b80638a565ac3146104395780638b8c24c1146104585780638da5cb5b146104775780639168ae72146104a1575f80fd5b80634d64903a11610173578063715018a611610143578063715018a61461038d5780637a4e87c3146103a15780637a9262a2146103db578063831cfb5814610406575f80fd5b80634d64903a1461031657806352d472eb1461032b578063692c565b146103405780636f1e85331461036e575f80fd5b80633ccfd60b116101ae5780633ccfd60b146102ad57806341de239b146102c157806343352d61146102d657806345ff4c80146102f7575f80fd5b80632108db35146101df5780632a28e5a3146102075780633a9bbede1461021c5780633cb747bf1461025a575b5f80fd5b3480156101ea575f80fd5b506101f4609c5481565b6040519081526020015b60405180910390f35b61021a6102153660046129b6565b610667565b005b348015610227575f80fd5b5061024a610236366004612a1d565b609f6020525f908152604090205460ff1681565b60405190151581526020016101fe565b348015610265575f80fd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101fe565b3480156102b8575f80fd5b5061021a610b26565b3480156102cc575f80fd5b506101f460995481565b3480156102e1575f80fd5b506102ea610d62565b6040516101fe9190612a36565b348015610302575f80fd5b5061021a610311366004612a8f565b610d73565b348015610321575f80fd5b506101f460985481565b348015610336575f80fd5b506101f4609a5481565b34801561034b575f80fd5b5061024a61035a366004612ad5565b60a46020525f908152604090205460ff1681565b348015610379575f80fd5b5061024a610388366004612a1d565b6112cd565b348015610398575f80fd5b5061021a6112df565b3480156103ac575f80fd5b5061024a6103bb366004612aec565b805160208183018101805160a38252928201919093012091525460ff1681565b3480156103e6575f80fd5b506101f46103f5366004612a1d565b60a56020525f908152604090205481565b348015610411575f80fd5b506102887f000000000000000000000000000000000000000000000000000000000000000081565b348015610444575f80fd5b5061021a610453366004612ad5565b6112f2565b348015610463575f80fd5b506101f4610472366004612b26565b6113b7565b348015610482575f80fd5b5060335473ffffffffffffffffffffffffffffffffffffffff16610288565b3480156104ac575f80fd5b506104c06104bb366004612a1d565b6117e8565b6040516101fe93929190612c39565b3480156104da575f80fd5b506102887f000000000000000000000000000000000000000000000000000000000000000081565b34801561050d575f80fd5b5061024a61051c366004612a1d565b609e6020525f908152604090205460ff1681565b34801561053b575f80fd5b5061021a61054a366004612a1d565b6118a7565b34801561055a575f80fd5b5061021a610569366004612ad5565b611a5f565b348015610579575f80fd5b506101f4609d5481565b34801561058e575f80fd5b5061021a61059d366004612ad5565b611b29565b3480156105ad575f80fd5b506097546102889073ffffffffffffffffffffffffffffffffffffffff1681565b3480156105d9575f80fd5b5061024a6105e8366004612cbe565b6001979650505050505050565b348015610600575f80fd5b5061021a61060f366004612d84565b611be6565b34801561061f575f80fd5b5061021a61062e366004612a1d565b611e04565b34801561063e575f80fd5b506101f4609b5481565b348015610653575f80fd5b5061021a610662366004612a1d565b611e7f565b335f818152609e602052604090205460ff166106e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6e6f7420696e2077686974656c6973740000000000000000000000000000000060448201526064015b60405180910390fd5b335f90815260a2602052604090205473ffffffffffffffffffffffffffffffffffffffff1615610770576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f616c72656164792072656769737465726564000000000000000000000000000060448201526064016106db565b821580159061078d57505f83815260a4602052604090205460ff16155b6107f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f696e76616c69642074656e6465726d696e74207075626b65790000000000000060448201526064016106db565b8151610100148015610825575060a3826040516108109190612deb565b9081526040519081900360200190205460ff16155b61088b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f696e76616c696420626c73207075626b6579000000000000000000000000000060448201526064016106db565b60985434146108f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e76616c6964207374616b696e672076616c7565000000000000000000000060448201526064016106db565b60405180606001604052806109083390565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083018790526040928301869052335f90815260a28252839020845181547fffffffffffffffffffffffff000000000000000000000000000000000000000016931692909217825583015160018201559082015160028201906109879082612e9b565b5090505061099d6109953390565b60a090611f33565b50600160a3836040516109b09190612deb565b9081526040805191829003602090810190922080549315157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009485161790555f86815260a49092529020805490911660011790557fb9c7babb56df9f2da4a30811a6c778e4e68af88b72712d56cf62c5516e20e199610a2c3390565b8484604051610a3d93929190612c39565b60405180910390a1335f90815260a260209081526040918290208251606081018452815473ffffffffffffffffffffffffffffffffffffffff168152600182015492810192909252600281018054610b219484019190610a9c90612e06565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac890612e06565b8015610b135780601f10610aea57610100808354040283529160200191610b13565b820191905f5260205f20905b815481529060010190602001808311610af657829003601f168201915b505050505081525050611f5b565b505050565b610b3160a0336120ae565b610b97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6f6e6c79207374616b657200000000000000000000000000000000000000000060448201526064016106db565b335f90815260a5602052604090205415610c0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f7769746864726177696e6700000000000000000000000000000000000000000060448201526064016106db565b609954610c1a9043612fe4565b335f81815260a56020526040902091909155610c389060a0906120dc565b50335f81815260a560209081526040918290205491519182527f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5910160405180910390a26040805160018082528183019092525f916020808301908036833701905050905033815f81518110610cb057610cb0612ff7565b73ffffffffffffffffffffffffffffffffffffffff92909216602092830291909101820152335f908152609e8252604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00908116909155609f909352908190208054909216600117909155517f3f446646c03e618be8238a586960d6d625f35c653cdca1ef59609993e8ed2c8490610d4e908390612a36565b60405180910390a1610d5f816120fd565b50565b6060610d6e60a0612220565b905090565b5f54610100900460ff1615808015610d9157505f54600160ff909116105b80610daa5750303b158015610daa57505f5460ff166001145b610e36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106db565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610e92575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b73ffffffffffffffffffffffffffffffffffffffff8716610f0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f696e76616c696420726f6c6c757020636f6e747261637400000000000000000060448201526064016106db565b5f8611610f78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e76616c6964207374616b696e672076616c7565000000000000000000000060448201526064016106db565b5f8511610fe1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f696e76616c6964207769746864726177616c206c6f636b20626c6f636b73000060448201526064016106db565b5f831161104a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f696e76616c696420676173206c696d697420616464207374616b65720000000060448201526064016106db565b5f82116110b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f696e76616c696420676173206c696d69742072656d6f7665207374616b65727360448201526064016106db565b5f841180156110c3575060648411155b61114e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f696e76616c6964206368616c6c656e676572207265776172642070657263656e60448201527f746167650000000000000000000000000000000000000000000000000000000060648201526084016106db565b61115661222c565b61115e6122ca565b609780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8916179055609a84905560988690556099859055609b839055609c829055604080515f8152602081018590527f0ef80fb82bf5439b8591744c0fde771f5d93dce7a7970b1e9b7828cdc3970e9c910160405180910390a1604080515f8152602081018490527fdd4b37d1f14888147fe4be2cfaedcbf148fd07ececc856d0433241b8b6e4a7f7910160405180910390a1604080515f8152602081018690527fa46de936426e045703b2d34a292a19fde92b329018db8e0da750033876b655ba910160405180910390a180156112c4575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b5f6112d960a0836120ae565b92915050565b6112e7612368565b6112f05f6123e9565b565b6112fa612368565b5f8111801561130b5750609c548114155b611371576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e76616c6964206e657720676173206c696d6974000000000000000000000060448201526064016106db565b609c80549082905560408051828152602081018490527fdd4b37d1f14888147fe4be2cfaedcbf148fd07ececc856d0433241b8b6e4a7f791015b60405180910390a15050565b6097545f9073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6f6e6c7920726f6c6c757020636f6e747261637400000000000000000000000060448201526064016106db565b61145861245f565b5f805b83518110156116ff575f60a55f86848151811061147a5761147a612ff7565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411156115305760a55f8583815181106114d7576114d7612ff7565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9055609854826115299190612fe4565b9150611674565b61155d84828151811061154557611545612ff7565b602002602001015160a06120ae90919063ffffffff16565b156115725760985461156f9083612fe4565b91505b61159f84828151811061158757611587612ff7565b602002602001015160a06120dc90919063ffffffff16565b50609e5f8583815181106115b5576115b5612ff7565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81549060ff02191690556001609f5f86848151811061161c5761161c612ff7565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b60a25f85838151811061168957611689612ff7565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f90812080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101829055906116f56002830182612866565b505060010161145b565b505f6064609a54836117119190613024565b61171b919061303b565b90506117278183613073565b609d5f8282546117379190612fe4565b909155505060975461175f9073ffffffffffffffffffffffffffffffffffffffff16826124d2565b7f654f4a61849f1b3ad10abb283d27f02d5fece7b820acc5a3b874713b58748b5a8460405161178e9190612a36565b60405180910390a17f3f446646c03e618be8238a586960d6d625f35c653cdca1ef59609993e8ed2c84846040516117c59190612a36565b60405180910390a16117d6846120fd565b9150506117e36001606555565b919050565b60a26020525f908152604090208054600182015460028301805473ffffffffffffffffffffffffffffffffffffffff90931693919261182690612e06565b80601f016020809104026020016040519081016040528092919081815260200182805461185290612e06565b801561189d5780601f106118745761010080835404028352916020019161189d565b820191905f5260205f20905b81548152906001019060200180831161188057829003601f168201915b5050505050905083565b6118af61245f565b335f90815260a56020526040902054611924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7769746864726177616c206e6f7420657869737400000000000000000000000060448201526064016106db565b335f90815260a56020526040902054431161199b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f7769746864726177616c206c6f636b656400000000000000000000000000000060448201526064016106db565b335f90815260a56020908152604080832083905560a2909152812080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560018101829055906119f16002830182612866565b50506119fa3390565b60405173ffffffffffffffffffffffffffffffffffffffff838116825291909116907f89309c9b2aeaffbdce717113df9427298b20448c05919bf889e05f8c3094254b9060200160405180910390a2611a55816098546124d2565b610d5f6001606555565b611a67612368565b5f81118015611a77575060648111155b8015611a855750609a548114155b611aeb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f696e76616c6964207265776172642070657263656e746167650000000000000060448201526064016106db565b609a80549082905560408051828152602081018490527fa46de936426e045703b2d34a292a19fde92b329018db8e0da750033876b655ba91016113ab565b611b31612368565b5f81118015611b425750609b548114155b611ba8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e76616c6964206e657720676173206c696d6974000000000000000000000060448201526064016106db565b609b80549082905560408051828152602081018490527f0ef80fb82bf5439b8591744c0fde771f5d93dce7a7970b1e9b7828cdc3970e9c91016113ab565b611bee612368565b5f5b83811015611d3857609f5f868684818110611c0d57611c0d612ff7565b9050602002016020810190611c229190612a1d565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f205460ff1615611cb2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f696e2072656d6f766564206c697374000000000000000000000000000000000060448201526064016106db565b6001609e5f878785818110611cc957611cc9612ff7565b9050602002016020810190611cde9190612a1d565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101611bf0565b505f5b81811015611dc057609e5f848484818110611d5857611d58612ff7565b9050602002016020810190611d6d9190612a1d565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600101611d3b565b507fe375867e538b40218c1b3db2ccceaf875eb073e38b510449e6088c1539ac862284848484604051611df694939291906130d8565b60405180910390a150505050565b611e0c612368565b611e1461245f565b609d54611e2182826124d2565b5f609d556040805173ffffffffffffffffffffffffffffffffffffffff84168152602081018390527fa1fefb6c5328a92a416e321ed50997303fe7135fd88c28b0592b21ce42b5cdd9910160405180910390a150610d5f6001606555565b611e87612368565b73ffffffffffffffffffffffffffffffffffffffff8116611f2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106db565b610d5f816123e9565b5f611f548373ffffffffffffffffffffffffffffffffffffffff84166125a9565b9392505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b2267a7b7f00000000000000000000000000000000000000000000000000000000000000005f84604051602401611fca9190613109565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f6d454d5100000000000000000000000000000000000000000000000000000000179052609b5490517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815261207e949392919060040161314d565b5f604051808303815f87803b158015612095575f80fd5b505af11580156120a7573d5f803e3d5ffd5b5050505050565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001830160205260408120541515611f54565b5f611f548373ffffffffffffffffffffffffffffffffffffffff84166125f5565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b2267a7b7f00000000000000000000000000000000000000000000000000000000000000005f8460405160240161216c9190612a36565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be67fcc00000000000000000000000000000000000000000000000000000000179052609c5490517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815261207e949392919060040161314d565b60605f611f54836126d8565b5f54610100900460ff166122c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106db565b6112f0612731565b5f54610100900460ff16612360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106db565b6112f06127d0565b60335473ffffffffffffffffffffffffffffffffffffffff1633146112f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106db565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6002606554036124cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106db565b6002606555565b801561259e575f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f811461252e576040519150601f19603f3d011682016040523d82523d5f602084013e612533565b606091505b5050905080610b21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f526f6c6c75703a20455448207472616e73666572206661696c6564000000000060448201526064016106db565b5050565b6001606555565b5f8181526001830160205260408120546125ee57508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556112d9565b505f6112d9565b5f81815260018301602052604081205480156126cf575f612617600183613073565b85549091505f9061262a90600190613073565b9050818114612689575f865f01828154811061264857612648612ff7565b905f5260205f200154905080875f01848154811061266857612668612ff7565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061269a5761269a613192565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506112d9565b5f9150506112d9565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561272557602002820191905f5260205f20905b815481526020019060010190808311612711575b50505050509050919050565b5f54610100900460ff166127c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106db565b6112f0336123e9565b5f54610100900460ff166125a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106db565b50805461287290612e06565b5f825580601f10612881575050565b601f0160209004905f5260205f2090810190610d5f91905b808211156128ac575f8155600101612899565b5090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612924576129246128b0565b604052919050565b5f82601f83011261293b575f80fd5b813567ffffffffffffffff811115612955576129556128b0565b61298660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016128dd565b81815284602083860101111561299a575f80fd5b816020850160208301375f918101602001919091529392505050565b5f80604083850312156129c7575f80fd5b82359150602083013567ffffffffffffffff8111156129e4575f80fd5b6129f08582860161292c565b9150509250929050565b803573ffffffffffffffffffffffffffffffffffffffff811681146117e3575f80fd5b5f60208284031215612a2d575f80fd5b611f54826129fa565b602080825282518282018190525f9190848201906040850190845b81811015612a8357835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101612a51565b50909695505050505050565b5f805f805f8060c08789031215612aa4575f80fd5b612aad876129fa565b9860208801359850604088013597606081013597506080810135965060a00135945092505050565b5f60208284031215612ae5575f80fd5b5035919050565b5f60208284031215612afc575f80fd5b813567ffffffffffffffff811115612b12575f80fd5b612b1e8482850161292c565b949350505050565b5f6020808385031215612b37575f80fd5b823567ffffffffffffffff80821115612b4e575f80fd5b818501915085601f830112612b61575f80fd5b813581811115612b7357612b736128b0565b8060051b9150612b848483016128dd565b8181529183018401918481019088841115612b9d575f80fd5b938501935b83851015612bc257612bb3856129fa565b82529385019390850190612ba2565b98975050505050505050565b5f5b83811015612be8578181015183820152602001612bd0565b50505f910152565b5f8151808452612c07816020860160208601612bce565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201525f612c6d6060830184612bf0565b95945050505050565b5f8083601f840112612c86575f80fd5b50813567ffffffffffffffff811115612c9d575f80fd5b6020830191508360208260051b8501011115612cb7575f80fd5b9250929050565b5f805f805f805f6080888a031215612cd4575f80fd5b873567ffffffffffffffff80821115612ceb575f80fd5b612cf78b838c01612c76565b909950975060208a0135915080821115612d0f575f80fd5b612d1b8b838c01612c76565b909750955060408a0135945060608a0135915080821115612d3a575f80fd5b818a0191508a601f830112612d4d575f80fd5b813581811115612d5b575f80fd5b8b6020828501011115612d6c575f80fd5b60208301945080935050505092959891949750929550565b5f805f8060408587031215612d97575f80fd5b843567ffffffffffffffff80821115612dae575f80fd5b612dba88838901612c76565b90965094506020870135915080821115612dd2575f80fd5b50612ddf87828801612c76565b95989497509550505050565b5f8251612dfc818460208701612bce565b9190910192915050565b600181811c90821680612e1a57607f821691505b602082108103612e51577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f821115610b2157805f5260205f20601f840160051c81016020851015612e7c5750805b601f840160051c820191505b818110156120a7575f8155600101612e88565b815167ffffffffffffffff811115612eb557612eb56128b0565b612ec981612ec38454612e06565b84612e57565b602080601f831160018114612f1b575f8415612ee55750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555612faf565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015612f6757888601518255948401946001909101908401612f48565b5085821015612fa357878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b505060018460011b0185555b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156112d9576112d9612fb7565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b80820281158282048414176112d9576112d9612fb7565b5f8261306e577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b818103818111156112d9576112d9612fb7565b8183525f60208085019450825f5b858110156130cd5773ffffffffffffffffffffffffffffffffffffffff6130ba836129fa565b1687529582019590820190600101613094565b509495945050505050565b604081525f6130eb604083018688613086565b82810360208401526130fe818587613086565b979650505050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff8251166020820152602082015160408201525f6040830151606080840152612b1e6080840182612bf0565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152608060408201525f6131816080830185612bf0565b905082606083015295945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea164736f6c6343000818000a" func init() { if err := json.Unmarshal([]byte(L1StakingStorageLayoutJSON), L1StakingStorageLayout); err != nil { diff --git a/bindings/bindings/l2staking.go b/bindings/bindings/l2staking.go index e9bca4e84..abad7b2f2 100644 --- a/bindings/bindings/l2staking.go +++ b/bindings/bindings/l2staking.go @@ -37,8 +37,8 @@ type TypesStakerInfo struct { // L2StakingMetaData contains all meta data concerning the L2Staking contract. var L2StakingMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_otherStaking\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"percentage\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epochEffective\",\"type\":\"uint256\"}],\"name\":\"CommissionUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"effectiveEpoch\",\"type\":\"uint256\"}],\"name\":\"Delegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTime\",\"type\":\"uint256\"}],\"name\":\"RewardStartTimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldSize\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSize\",\"type\":\"uint256\"}],\"name\":\"SequencerSetMaxSizeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"tmKey\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"blsKey\",\"type\":\"bytes\"}],\"name\":\"StakerAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"stakerAddresses\",\"type\":\"address[]\"}],\"name\":\"StakerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"effectiveEpoch\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ublockEpoch\",\"type\":\"uint256\"}],\"name\":\"Undelegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"UndelegationClaimed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DISTRIBUTE_CONTRACT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MESSENGER\",\"outputs\":[{\"internalType\":\"contractICrossDomainMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MORPH_TOKEN_CONTRACT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OTHER_STAKING\",\"outputs\":[{\"internalType\":\"contractStaking\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SEQUENCER_CONTRACT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"tmKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"blsKey\",\"type\":\"bytes\"}],\"internalType\":\"structTypes.StakerInfo\",\"name\":\"add\",\"type\":\"tuple\"}],\"name\":\"addStaker\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"candidateNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"targetEpochIndex\",\"type\":\"uint256\"}],\"name\":\"claimCommission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"targetEpochIndex\",\"type\":\"uint256\"}],\"name\":\"claimReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimUndelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"commissions\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"delegateStake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"delegations\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"getDelegators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStakers\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"tmKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"blsKey\",\"type\":\"bytes\"}],\"internalType\":\"structTypes.StakerInfo[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_stakerAddresses\",\"type\":\"address[]\"}],\"name\":\"getStakesInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"tmKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"blsKey\",\"type\":\"bytes\"}],\"internalType\":\"structTypes.StakerInfo[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_sequencersMaxSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_undelegateLockEpochs\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_rewardStartTime\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"tmKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"blsKey\",\"type\":\"bytes\"}],\"internalType\":\"structTypes.StakerInfo[]\",\"name\":\"_stakers\",\"type\":\"tuple[]\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"isStakingTo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestSequencerSetSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messenger\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"remove\",\"type\":\"address[]\"}],\"name\":\"removeStakers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardStart\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardStartTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sequencerSetMaxSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"commission\",\"type\":\"uint256\"}],\"name\":\"setCommissionRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"stakerAddresses\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"stakerDelegations\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalDelegationAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"stakerRankings\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"stakers\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"tmKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"blsKey\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"undelegateLockEpochs\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"}],\"name\":\"undelegateStake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"undelegations\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unlockEpoch\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_rewardStartTime\",\"type\":\"uint256\"}],\"name\":\"updateRewardStartTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_sequencerSetMaxSize\",\"type\":\"uint256\"}],\"name\":\"updateSequencerSetMaxSize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x61012060405234801562000011575f80fd5b506040516200484f3803806200484f8339810160408190526200003491620000a7565b7353000000000000000000000000000000000000076080526001600160a01b031660a05273530000000000000000000000000000000000001060c05273530000000000000000000000000000000000000360e05273530000000000000000000000000000000000001161010052620000d6565b5f60208284031215620000b8575f80fd5b81516001600160a01b0381168114620000cf575f80fd5b9392505050565b60805160a05160c05160e051610100516146b6620001995f395f81816103e301528181610cdd01528181610d850152818161167f01528181611d580152612ddf01525f8181610510015261337b01525f81816106080152818161359a0152818161364f015281816136f60152818161398401528181613a310152613ad801525f81816104b501528181610683015261275201525f81816103a60152818161058b01528181610659015281816106ad01528181612728015261277c01526146b65ff3fe608060405234801561000f575f80fd5b506004361061029d575f3560e01c80636d454d51116101715780639168ae72116100d2578063d14db45a11610088578063e10911b11161006e578063e10911b11461062a578063f0261bc214610632578063f2fde38b1461063b575f80fd5b8063d14db45a146105f6578063d557714114610603575f80fd5b8063927ede2d116100b8578063927ede2d14610586578063b5d2e0dc146105ad578063c64814dd146105cc575f80fd5b80639168ae721461054557806391bd43a414610567575f80fd5b8063831cfb58116101275780638da5cb5b1161010d5780638da5cb5b146104fa5780638e21d5fb1461050b5780638eca493a14610532575f80fd5b8063831cfb58146104b057806384d7d1d4146104d7575f80fd5b8063746c8ae111610157578063746c8ae11461048157806376671808146104895780637b05afb514610491575f80fd5b80636d454d5114610466578063715018a614610479575f80fd5b80633385ccc21161021b57806340b5c837116101d1578063459598a2116101b7578063459598a21461042057806368e76346146104335780636bda1b9914610453575f80fd5b806340b5c8371461040557806343352d6114610418575f80fd5b80633c323a1b116102015780633c323a1b146103915780633cb747bf146103a45780633d9353fe146103de575f80fd5b80633385ccc2146103755780633b80242114610388575f80fd5b8063174e31c4116102705780632cc138be116102565780632cc138be146103435780632e787be31461034c57806330158eea14610355575f80fd5b8063174e31c41461031d57806319fac8fd14610330575f80fd5b80630be67fcc146102a15780630eb573af146102b65780630f3b7059146102c957806312a3e94714610306575b5f80fd5b6102b46102af366004613e7f565b61064e565b005b6102b46102c4366004613ebe565b610b91565b6102dc6102d7366004613ee9565b610c75565b604080516001600160a01b0390941684526020840192909252908201526060015b60405180910390f35b61030f609a5481565b6040519081526020016102fd565b6102b461032b366004613ee9565b610cbd565b6102b461033e366004613ebe565b610e31565b61030f60985481565b61030f60995481565b610368610363366004613e7f565b610f4e565b6040516102fd9190613f74565b6102b461038336600461401a565b611177565b61030f609c5481565b6102b461039f366004613ee9565b61184b565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016102fd565b6103c67f000000000000000000000000000000000000000000000000000000000000000081565b6102b4610413366004613ebe565b611eb2565b610368611fd2565b6103c661042e366004613ebe565b6121ee565b61044661044136600461401a565b612216565b6040516102fd9190614035565b6102b4610461366004614081565b612239565b6102b46104743660046140dd565b61271d565b6102b4612a15565b6102b4612a28565b61030f612d18565b61030f61049f36600461401a565b60a06020525f908152604090205481565b6103c67f000000000000000000000000000000000000000000000000000000000000000081565b6104ea6104e536600461401a565b612d48565b60405190151581526020016102fd565b6033546001600160a01b03166103c6565b6103c67f000000000000000000000000000000000000000000000000000000000000000081565b6102b4610540366004613ebe565b612d72565b61055861055336600461401a565b612e82565b6040516102fd93929190614114565b61030f61057536600461401a565b60a16020525f908152604090205481565b6103c67f000000000000000000000000000000000000000000000000000000000000000081565b61030f6105bb36600461401a565b609e6020525f908152604090205481565b61030f6105da366004614144565b60a360209081525f928352604080842090915290825290205481565b6097546104ea9060ff1681565b6103c67f000000000000000000000000000000000000000000000000000000000000000081565b6102b4612f34565b61030f609b5481565b6102b461064936600461401a565b6131d8565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561073657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610707573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061072b919061417b565b6001600160a01b0316145b6107d45760405162461bcd60e51b8152602060048201526044602482018190527f5374616b696e673a2066756e6374696f6e2063616e206f6e6c79206265206361908201527f6c6c65642066726f6d20746865206f74686572207374616b696e6720636f6e7460648201527f7261637400000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b5f805b82811015610b445760975460ff1661083d57609954609e5f86868581811061080157610801614196565b9050602002016020810190610816919061401a565b6001600160a01b03166001600160a01b031681526020019081526020015f2054111561088d565b609b54609e5f86868581811061085557610855614196565b905060200201602081019061086a919061401a565b6001600160a01b03166001600160a01b031681526020019081526020015f205411155b91505f609e5f8686858181106108a5576108a5614196565b90506020020160208101906108ba919061401a565b6001600160a01b03166001600160a01b031681526020019081526020015f20541115610b3c575f6001609e5f8787868181106108f8576108f8614196565b905060200201602081019061090d919061401a565b6001600160a01b03166001600160a01b031681526020019081526020015f205461093791906141f0565b90505b609d54610949906001906141f0565b811015610a1b57609d61095d826001614203565b8154811061096d5761096d614196565b5f91825260209091200154609d80546001600160a01b03909216918390811061099857610998614196565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055506001609e5f609d84815481106109db576109db614196565b5f9182526020808320909101546001600160a01b0316835282019290925260400181208054909190610a0e9084906141f0565b909155505060010161093a565b50609d805480610a2d57610a2d614216565b5f8281526020812082017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055909101909155609e90858584818110610a9c57610a9c614196565b9050602002016020810190610ab1919061401a565b6001600160a01b03166001600160a01b031681526020019081526020015f205f90555f60a15f868685818110610ae957610ae9614196565b9050602002016020810190610afe919061401a565b6001600160a01b03166001600160a01b031681526020019081526020015f20541115610b3c576001609c5f828254610b3691906141f0565b90915550505b6001016107d7565b507f3511bf213f9290ba907e91e12a43e8471251e1879580ae5509292a3514c23f618383604051610b76929190614243565b60405180910390a18015610b8c57610b8c613265565b505050565b610b996133e5565b5f81118015610baa57506099548114155b610c1c5760405162461bcd60e51b815260206004820152602260248201527f696e76616c6964206e65772073657175656e63657220736574206d617820736960448201527f7a6500000000000000000000000000000000000000000000000000000000000060648201526084016107cb565b609980549082905560408051828152602081018490527f98b982a120d9be7d9c68d85a1aed8158d1d52e517175bfb3eb4280692f19b1ed910160405180910390a1609b546099541015610c7157610c71613265565b5050565b60a4602052815f5260405f208181548110610c8e575f80fd5b5f9182526020909120600390910201805460018201546002909201546001600160a01b03909116935090915083565b610cc561343f565b6001600160a01b038216610d7b576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016635cf20c7b336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602481018490526044015f604051808303815f87803b158015610d60575f80fd5b505af1158015610d72573d5f803e3d5ffd5b50505050610e27565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663996cba6883336040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604481018490526064015f604051808303815f87803b158015610e10575f80fd5b505af1158015610e22573d5f803e3d5ffd5b505050505b610c716001606555565b335f908152609e6020526040902054610e8c5760405162461bcd60e51b815260206004820152601360248201527f6f6e6c79207374616b657220616c6c6f7765640000000000000000000000000060448201526064016107cb565b6014811115610edd5760405162461bcd60e51b815260206004820152601260248201527f696e76616c696420636f6d6d697373696f6e000000000000000000000000000060448201526064016107cb565b335f90815260a06020526040812082905560975460ff1615610f0f57610f01612d18565b610f0c906001614203565b90505b604080518381526020810183905233917f6e500db30ce535d38852e318f333e9be41a3fec6c65d234ebb06203c896db9a5910160405180910390a25050565b60605f8267ffffffffffffffff811115610f6a57610f6a614290565b604051908082528060200260200182016040528015610fb657816020015b60408051606080820183525f808352602083015291810191909152815260200190600190039081610f885790505b5090505f5b8381101561116d576040518060600160405280609f5f888886818110610fe357610fe3614196565b9050602002016020810190610ff8919061401a565b6001600160a01b03908116825260208083019390935260409091015f908120549091168352910190609f9088888681811061103557611035614196565b905060200201602081019061104a919061401a565b6001600160a01b03166001600160a01b031681526020019081526020015f20600101548152602001609f5f88888681811061108757611087614196565b905060200201602081019061109c919061401a565b6001600160a01b03166001600160a01b031681526020019081526020015f2060020180546110c9906142bd565b80601f01602080910402602001604051908101604052809291908181526020018280546110f5906142bd565b80156111405780601f1061111757610100808354040283529160200191611140565b820191905f5260205f20905b81548152906001019060200180831161112357829003601f168201915b505050505081525082828151811061115a5761115a614196565b6020908102919091010152600101610fbb565b5090505b92915050565b61117f61343f565b611189338261349f565b156111d65760405162461bcd60e51b815260206004820152601660248201527f756e64656c65676174696f6e20756e636c61696d65640000000000000000000060448201526064016107cb565b6001600160a01b0381165f90815260a3602090815260408083203384529091529020546112455760405162461bcd60e51b815260206004820152601660248201527f7374616b696e6720616d6f756e74206973207a65726f0000000000000000000060448201526064016107cb565b6001600160a01b0381165f908152609e602052604081205460975490159190819060ff161561129f57611276612d18565b611281906001614203565b91508261129a57609a546112959083614203565b61129c565b815b90505b604080516060810182526001600160a01b038681168083525f81815260a36020908152858220338084528183528784208054848901908152888a018b815283875260a486528a87208054600180820183559189528789208c5160039092020180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909b16178a558251908a015551600290980197909755908452908252829055925191815260a190925292812080549293929091906113629084906141f0565b90915550506001600160a01b0385165f90815260a2602052604090206113889033613528565b506001600160a01b0385165f908152609e6020526040902054841580156113b1575060975460ff165b80156113be5750609c5481105b15611635576001600160a01b0386165f908152609e60205260408120546113e7906001906141f0565b90505b6001609c546113f991906141f0565b8110156116335760a15f609d838154811061141657611416614196565b5f9182526020808320909101546001600160a01b031683528201929092526040018120549060a190609d61144b856001614203565b8154811061145b5761145b614196565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054111561162b575f609d828154811061149957611499614196565b5f918252602090912001546001600160a01b03169050609d6114bc836001614203565b815481106114cc576114cc614196565b5f91825260209091200154609d80546001600160a01b0390921691849081106114f7576114f7614196565b5f91825260209091200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905580609d611545846001614203565b8154811061155557611555614196565b5f91825260209091200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556115a0826001614203565b609e5f609d85815481106115b6576115b6614196565b5f9182526020808320909101546001600160a01b031683528201929092526040019020556115e5826002614203565b609e5f609d6115f5866001614203565b8154811061160557611605614196565b5f9182526020808320909101546001600160a01b03168352820192909252604001902055505b6001016113ea565b505b8415801561165857506001600160a01b0386165f90815260a16020526040902054155b15611675576001609c5f82825461166f91906141f0565b90915550505b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663ad8e122387338786602001516116d760a25f8e6001600160a01b03166001600160a01b031681526020019081526020015f20613543565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1681526001600160a01b03958616600482015294909316602485015260448401919091526064830152608482015260a4015f604051808303815f87803b158015611748575f80fd5b505af115801561175a573d5f803e3d5ffd5b505050506117653390565b6001600160a01b0316866001600160a01b03167f92039db29d8c0a1aa1433fe109c69488c8c5e51b23c9de7d303ad80c1fef778c846020015187876040516117c0939291909283526020830191909152604082015260600190565b60405180910390a3841580156117d8575060975460ff165b80156117e65750609b548111155b801561182c5750609b546001600160a01b0387165f908152609e6020526040902054118061182c5750609c546001600160a01b0387165f908152609e6020526040902054115b1561183957611839613265565b50505050506118486001606555565b50565b6001600160a01b0382165f908152609e602052604090205482906118b15760405162461bcd60e51b815260206004820152600a60248201527f6e6f74207374616b65720000000000000000000000000000000000000000000060448201526064016107cb565b6118b961343f565b5f82116119085760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964207374616b6520616d6f756e7400000000000000000000000060448201526064016107cb565b611912338461349f565b1561195f5760405162461bcd60e51b815260206004820152601660248201527f756e64656c65676174696f6e20756e636c61696d65640000000000000000000060448201526064016107cb565b6001600160a01b0383165f90815260a1602052604081208054849290611986908490614203565b90915550506001600160a01b0383165f90815260a360209081526040808320338452909152812080548492906119bd908490614203565b90915550506001600160a01b0383165f90815260a2602052604090206119e3903361354c565b506001600160a01b0383165f90815260a16020526040902054829003611a1b576001609c5f828254611a159190614203565b90915550505b6001600160a01b0383165f908152609e602052604090205460975460ff168015611a455750600181115b15611c96575f611a566001836141f0565b90505b8015611c945760a15f609d611a6f6001856141f0565b81548110611a7f57611a7f614196565b905f5260205f20015f9054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020015f205460a15f609d8481548110611ad057611ad0614196565b5f9182526020808320909101546001600160a01b031683528201929092526040019020541115611c82575f609d611b086001846141f0565b81548110611b1857611b18614196565b5f91825260209091200154609d80546001600160a01b0390921692509083908110611b4557611b45614196565b5f918252602090912001546001600160a01b0316609d611b666001856141f0565b81548110611b7657611b76614196565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555080609d8381548110611bb557611bb5614196565b5f918252602082200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0393909316929092179091558290609e90609d611c076001856141f0565b81548110611c1757611c17614196565b5f9182526020808320909101546001600160a01b03168352820192909252604001902055611c46826001614203565b609e5f609d8581548110611c5c57611c5c614196565b5f9182526020808320909101546001600160a01b03168352820192909252604001902055505b80611c8c81614308565b915050611a59565b505b6097545f9060ff16611ca8575f611cbb565b611cb0612d18565b611cbb906001614203565b6001600160a01b0386165f81815260a3602090815260408083203380855290835292819020548151908152918201859052805194955091937f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04929181900390910190a36001600160a01b038581165f81815260a360209081526040808320338085529083528184205494845260a183528184205460a290935292207f00000000000000000000000000000000000000000000000000000000000000009094169363e16bcc32938a93928792611d8f90613543565b6001600160a01b038d165f90815260a3602052604081208d91336001600160a01b039081168252602082019290925260409081015f205490517fffffffff0000000000000000000000000000000000000000000000000000000060e08c901b16815298821660048a01529616602488015260448701949094526064860192909252608485015260a48401521460c482015260e4015f604051808303815f87803b158015611e3a575f80fd5b505af1158015611e4c573d5f803e3d5ffd5b50505050611e61611e5a3390565b3086613560565b60975460ff168015611e745750609b5482115b8015611e9957506099546001600160a01b0386165f908152609e602052604090205411155b15611ea657611ea6613265565b5050610b8c6001606555565b611eba6133e5565b60975460ff16158015611ece575042609854115b611f1a5760405162461bcd60e51b815260206004820152601660248201527f72657761726420616c726561647920737461727465640000000000000000000060448201526064016107cb565b4281118015611f335750611f316201518082614369565b155b8015611f4157506098548114155b611f8d5760405162461bcd60e51b815260206004820152601960248201527f696e76616c6964207265776172642073746172742074696d650000000000000060448201526064016107cb565b609880549082905560408051828152602081018490527f91c38708087fb4ba51bd0e6a106cc1fbaf340479a2e81d18f2341e8c78f97555910160405180910390a15050565b609d546060905f9067ffffffffffffffff811115611ff257611ff2614290565b60405190808252806020026020018201604052801561203e57816020015b60408051606080820183525f8083526020830152918101919091528152602001906001900390816120105790505b5090505f5b609d548110156121e8576040518060600160405280609f5f609d858154811061206e5761206e614196565b5f9182526020808320909101546001600160a01b0390811684528382019490945260409092018120549092168352609d80549390910192609f929190869081106120ba576120ba614196565b905f5260205f20015f9054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020015f20600101548152602001609f5f609d858154811061211357612113614196565b5f9182526020808320909101546001600160a01b0316835282019290925260400190206002018054612144906142bd565b80601f0160208091040260200160405190810160405280929190818152602001828054612170906142bd565b80156121bb5780601f10612192576101008083540402835291602001916121bb565b820191905f5260205f20905b81548152906001019060200180831161219e57829003601f168201915b50505050508152508282815181106121d5576121d5614196565b6020908102919091010152600101612043565b50919050565b609d81815481106121fd575f80fd5b5f918252602090912001546001600160a01b0316905081565b6001600160a01b0381165f90815260a260205260409020606090611171906137cd565b5f54610100900460ff161580801561225757505f54600160ff909116105b806122705750303b15801561227057505f5460ff166001145b6122e25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107cb565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561233e575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b5f86116123b35760405162461bcd60e51b815260206004820152602260248201527f73657175656e6365727353697a65206d7573742067726561746572207468616e60448201527f203000000000000000000000000000000000000000000000000000000000000060648201526084016107cb565b5f85116124025760405162461bcd60e51b815260206004820152601c60248201527f696e76616c696420756e64656c65676174654c6f636b45706f6368730000000060448201526064016107cb565b428411801561241b57506124196201518085614369565b155b6124675760405162461bcd60e51b815260206004820152601960248201527f696e76616c6964207265776172642073746172742074696d650000000000000060448201526064016107cb565b816124b45760405162461bcd60e51b815260206004820152601760248201527f696e76616c696420696e697469616c207374616b65727300000000000000000060448201526064016107cb565b6124bc6137d9565b6124c461385d565b6099869055609a8590556098849055609b8290555f5b609b54811015612640578383828181106124f6576124f6614196565b9050602002810190612508919061437c565b609f5f86868581811061251d5761251d614196565b905060200281019061252f919061437c565b61253d90602081019061401a565b6001600160a01b0316815260208101919091526040015f2061255f828261445d565b905050609d84848381811061257657612576614196565b9050602002810190612588919061437c565b61259690602081019061401a565b8154600180820184555f93845260209093200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556125ea908290614203565b609e5f8686858181106125ff576125ff614196565b9050602002810190612611919061437c565b61261f90602081019061401a565b6001600160a01b0316815260208101919091526040015f20556001016124da565b50604080515f8152602081018890527f98b982a120d9be7d9c68d85a1aed8158d1d52e517175bfb3eb4280692f19b1ed910160405180910390a1604080515f8152602081018690527f91c38708087fb4ba51bd0e6a106cc1fbaf340479a2e81d18f2341e8c78f97555910160405180910390a18015612715575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561280557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127fa919061417b565b6001600160a01b0316145b61289e5760405162461bcd60e51b8152602060048201526044602482018190527f5374616b696e673a2066756e6374696f6e2063616e206f6e6c79206265206361908201527f6c6c65642066726f6d20746865206f74686572207374616b696e6720636f6e7460648201527f7261637400000000000000000000000000000000000000000000000000000000608482015260a4016107cb565b609e5f6128ae602084018461401a565b6001600160a01b03166001600160a01b031681526020019081526020015f20545f0361295b57609d6128e3602083018361401a565b81546001810183555f928352602080842090910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039390931692909217909155609d5491609e916129419085018561401a565b6001600160a01b0316815260208101919091526040015f20555b80609f5f61296c602084018461401a565b6001600160a01b0316815260208101919091526040015f2061298e828261445d565b5061299e9050602082018261401a565b6001600160a01b03167f058ecb29c230cd5df283c89e996187ed521393fe4546cd1b097921c4b2de293d60208301356129da60408501856143b8565b6040516129e99392919061460d565b60405180910390a260975460ff16158015612a085750609954609d5411155b1561184857611848613265565b612a1d6133e5565b612a265f6138e1565b565b612a306133e5565b609854421015612aa75760405162461bcd60e51b8152602060048201526024808201527f63616e2774207374617274206265666f7265207265776172642073746172742060448201527f74696d650000000000000000000000000000000000000000000000000000000060648201526084016107cb565b5f609c5411612af85760405162461bcd60e51b815260206004820152600e60248201527f6e6f6e652063616e64696461746500000000000000000000000000000000000060448201526064016107cb565b609780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091555b609d54811015612cb5575f5b81811015612cac5760a15f609d8381548110612b5157612b51614196565b905f5260205f20015f9054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020015f205460a15f609d8581548110612ba257612ba2614196565b5f9182526020808320909101546001600160a01b031683528201929092526040019020541115612ca4575f609d8281548110612be057612be0614196565b5f91825260209091200154609d80546001600160a01b0390921692509084908110612c0d57612c0d614196565b5f91825260209091200154609d80546001600160a01b039092169184908110612c3857612c38614196565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555080609d8481548110612c7757612c77614196565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550505b600101612b33565b50600101612b27565b505f5b609d54811015612d0f57612ccd816001614203565b609e5f609d8481548110612ce357612ce3614196565b5f9182526020808320909101546001600160a01b03168352820192909252604001902055600101612cb8565b50612a26613265565b5f6098544211612d2757505f90565b6201518060985442612d3991906141f0565b612d439190614660565b905090565b6001600160a01b0381165f90815260a3602090815260408083203384529091528120541515611171565b335f908152609e6020526040902054612dcd5760405162461bcd60e51b815260206004820152601360248201527f6f6e6c79207374616b657220616c6c6f7765640000000000000000000000000060448201526064016107cb565b612dd561343f565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166341302560336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602481018490526044015f604051808303815f87803b158015612e62575f80fd5b505af1158015612e74573d5f803e3d5ffd5b505050506118486001606555565b609f6020525f90815260409020805460018201546002830180546001600160a01b03909316939192612eb3906142bd565b80601f0160208091040260200160405190810160405280929190818152602001828054612edf906142bd565b8015612f2a5780601f10612f0157610100808354040283529160200191612f2a565b820191905f5260205f20905b815481529060010190602001808311612f0d57829003601f168201915b5050505050905083565b612f3c61343f565b5f805b335f90815260a4602052604090205481101561313e57612f5d612d18565b335f90815260a460205260409020805483908110612f7d57612f7d614196565b905f5260205f209060030201600201541161313657335f90815260a460205260409020805482908110612fb257612fb2614196565b905f5260205f2090600302016001015482612fcd9190614203565b335f90815260a46020526040902054909250600110156130b357335f90815260a4602052604090208054613003906001906141f0565b8154811061301357613013614196565b905f5260205f20906003020160a45f6130293390565b6001600160a01b03166001600160a01b031681526020019081526020015f20828154811061305957613059614196565b5f9182526020909120825460039092020180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091178155600180830154908201556002918201549101555b335f90815260a4602052604090208054806130d0576130d0614216565b5f8281526020812060037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019283020180547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600181018290556002015590555b600101612f3f565b505f811161318e5760405162461bcd60e51b815260206004820152601760248201527f6e6f204d6f72706820746f6b656e20746f20636c61696d00000000000000000060448201526064016107cb565b613198338261394a565b60405181815233907fcc3089abc79631b3c0c81414a72e237c08559073a970cf474e36ae965e382fb39060200160405180910390a250612a266001606555565b6131e06133e5565b6001600160a01b03811661325c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107cb565b611848816138e1565b60995460975460ff161561328957609954609c5410156132845750609c545b61329a565b609954609d54101561329a5750609d545b5f8167ffffffffffffffff8111156132b4576132b4614290565b6040519080825280602002602001820160405280156132dd578160200160208202803683370190505b5090505f5b8281101561334a57609d81815481106132fd576132fd614196565b905f5260205f20015f9054906101000a90046001600160a01b031682828151811061332a5761332a614196565b6001600160a01b03909216602092830291909101909101526001016132e2565b506040517f9b8201a40000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639b8201a4906133b0908490600401614035565b5f604051808303815f87803b1580156133c7575f80fd5b505af11580156133d9573d5f803e3d5ffd5b50509151609b55505050565b6033546001600160a01b03163314612a265760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107cb565b6002606554036134915760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016107cb565b6002606555565b6001606555565b5f805b6001600160a01b0384165f90815260a4602052604090205481101561351f576001600160a01b038481165f90815260a460205260409020805491851691839081106134ef576134ef614196565b5f9182526020909120600390910201546001600160a01b031603613517576001915050611171565b6001016134a2565b505f9392505050565b5f61353c836001600160a01b038416613bae565b9392505050565b5f611171825490565b5f61353c836001600160a01b038416613c91565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa1580156135e1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136059190614673565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301528581166024830152604482018590529192507f0000000000000000000000000000000000000000000000000000000000000000909116906323b872dd906064016020604051808303815f875af1158015613697573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136bb919061468a565b506040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa15801561373d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137619190614673565b90505f8311801561377a57508261377883836141f0565b145b6137c65760405162461bcd60e51b815260206004820152601b60248201527f6d6f72706820746f6b656e207472616e73666572206661696c6564000000000060448201526064016107cb565b5050505050565b60605f61353c83613cdd565b5f54610100900460ff166138555760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107cb565b612a26613d36565b5f54610100900460ff166138d95760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107cb565b612a26613dbb565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa1580156139cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139ef9190614673565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303815f875af1158015613a79573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a9d919061468a565b506040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015613b1f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613b439190614673565b90505f83118015613b5c575082613b5a83836141f0565b145b613ba85760405162461bcd60e51b815260206004820152601b60248201527f6d6f72706820746f6b656e207472616e73666572206661696c6564000000000060448201526064016107cb565b50505050565b5f8181526001830160205260408120548015613c88575f613bd06001836141f0565b85549091505f90613be3906001906141f0565b9050818114613c42575f865f018281548110613c0157613c01614196565b905f5260205f200154905080875f018481548110613c2157613c21614196565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080613c5357613c53614216565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050611171565b5f915050611171565b5f818152600183016020526040812054613cd657508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155611171565b505f611171565b6060815f01805480602002602001604051908101604052809291908181526020018280548015613d2a57602002820191905f5260205f20905b815481526020019060010190808311613d16575b50505050509050919050565b5f54610100900460ff16613db25760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107cb565b612a26336138e1565b5f54610100900460ff166134985760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107cb565b5f8083601f840112613e47575f80fd5b50813567ffffffffffffffff811115613e5e575f80fd5b6020830191508360208260051b8501011115613e78575f80fd5b9250929050565b5f8060208385031215613e90575f80fd5b823567ffffffffffffffff811115613ea6575f80fd5b613eb285828601613e37565b90969095509350505050565b5f60208284031215613ece575f80fd5b5035919050565b6001600160a01b0381168114611848575f80fd5b5f8060408385031215613efa575f80fd5b8235613f0581613ed5565b946020939093013593505050565b5f81518084525f5b81811015613f3757602081850181015186830182015201613f1b565b505f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b8381101561400c578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018552815180516001600160a01b0316845287810151888501528601516060878501819052613ff881860183613f13565b968901969450505090860190600101613f9b565b509098975050505050505050565b5f6020828403121561402a575f80fd5b813561353c81613ed5565b602080825282518282018190525f9190848201906040850190845b818110156140755783516001600160a01b031683529284019291840191600101614050565b50909695505050505050565b5f805f805f60808688031215614095575f80fd5b853594506020860135935060408601359250606086013567ffffffffffffffff8111156140c0575f80fd5b6140cc88828901613e37565b969995985093965092949392505050565b5f602082840312156140ed575f80fd5b813567ffffffffffffffff811115614103575f80fd5b82016060818503121561353c575f80fd5b6001600160a01b0384168152826020820152606060408201525f61413b6060830184613f13565b95945050505050565b5f8060408385031215614155575f80fd5b823561416081613ed5565b9150602083013561417081613ed5565b809150509250929050565b5f6020828403121561418b575f80fd5b815161353c81613ed5565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b81810381811115611171576111716141c3565b80820180821115611171576111716141c3565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b60208082528181018390525f908460408401835b8681101561428557823561426a81613ed5565b6001600160a01b031682529183019190830190600101614257565b509695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b600181811c908216806142d157607f821691505b6020821081036121e8577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f81614316576143166141c3565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f826143775761437761433c565b500690565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181126143ae575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126143eb575f80fd5b83018035915067ffffffffffffffff821115614405575f80fd5b602001915036819003821315613e78575f80fd5b601f821115610b8c57805f5260205f20601f840160051c8101602085101561443e5750805b601f840160051c820191505b818110156137c6575f815560010161444a565b813561446881613ed5565b6001600160a01b0381167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550600160208084013560018401556002830160408501357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18636030181126144df575f80fd5b8501803567ffffffffffffffff8111156144f7575f80fd5b8036038483011315614507575f80fd5b61451b8161451585546142bd565b85614419565b5f601f82116001811461456d575f831561453757508382018601355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178555614602565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156145b95786850189013582559388019390890190880161459a565b50848210156145f6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88660031b161c198885880101351681555b505060018360011b0185555b505050505050505050565b83815260406020820152816040820152818360608301375f818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b5f8261466e5761466e61433c565b500490565b5f60208284031215614683575f80fd5b5051919050565b5f6020828403121561469a575f80fd5b8151801515811461353c575f80fdfea164736f6c6343000818000a", + ABI: "[{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_otherStaking\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"percentage\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epochEffective\",\"type\":\"uint256\"}],\"name\":\"CommissionUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"effectiveEpoch\",\"type\":\"uint256\"}],\"name\":\"Delegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTime\",\"type\":\"uint256\"}],\"name\":\"RewardStartTimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldSize\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSize\",\"type\":\"uint256\"}],\"name\":\"SequencerSetMaxSizeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"tmKey\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"blsKey\",\"type\":\"bytes\"}],\"name\":\"StakerAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"stakerAddresses\",\"type\":\"address[]\"}],\"name\":\"StakerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"effectiveEpoch\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"ublockEpoch\",\"type\":\"uint256\"}],\"name\":\"Undelegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"UndelegationClaimed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DISTRIBUTE_CONTRACT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MESSENGER\",\"outputs\":[{\"internalType\":\"contractICrossDomainMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MORPH_TOKEN_CONTRACT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OTHER_STAKING\",\"outputs\":[{\"internalType\":\"contractStaking\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SEQUENCER_CONTRACT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"tmKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"blsKey\",\"type\":\"bytes\"}],\"internalType\":\"structTypes.StakerInfo\",\"name\":\"add\",\"type\":\"tuple\"}],\"name\":\"addStaker\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"candidateNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"targetEpochIndex\",\"type\":\"uint256\"}],\"name\":\"claimCommission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"targetEpochIndex\",\"type\":\"uint256\"}],\"name\":\"claimReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimUndelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"commissions\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"delegateStake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"delegations\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"getDelegators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStakers\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"tmKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"blsKey\",\"type\":\"bytes\"}],\"internalType\":\"structTypes.StakerInfo[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_stakerAddresses\",\"type\":\"address[]\"}],\"name\":\"getStakesInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"tmKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"blsKey\",\"type\":\"bytes\"}],\"internalType\":\"structTypes.StakerInfo[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_sequencersMaxSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_undelegateLockEpochs\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_rewardStartTime\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"tmKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"blsKey\",\"type\":\"bytes\"}],\"internalType\":\"structTypes.StakerInfo[]\",\"name\":\"_stakers\",\"type\":\"tuple[]\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"isStakingTo\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestSequencerSetSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messenger\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"remove\",\"type\":\"address[]\"}],\"name\":\"removeStakers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardStartTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardStarted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sequencerSetMaxSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"commission\",\"type\":\"uint256\"}],\"name\":\"setCommissionRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"stakerAddresses\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"stakerDelegations\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalDelegationAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"stakerRankings\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"}],\"name\":\"stakers\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"tmKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"blsKey\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"undelegateLockEpochs\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"}],\"name\":\"undelegateStake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"undelegations\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unlockEpoch\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_rewardStartTime\",\"type\":\"uint256\"}],\"name\":\"updateRewardStartTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_sequencerSetMaxSize\",\"type\":\"uint256\"}],\"name\":\"updateSequencerSetMaxSize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x61012060405234801562000011575f80fd5b506040516200485d3803806200485d8339810160408190526200003491620000a7565b7353000000000000000000000000000000000000076080526001600160a01b031660a05273530000000000000000000000000000000000001360c05273530000000000000000000000000000000000000360e05273530000000000000000000000000000000000001461010052620000d6565b5f60208284031215620000b8575f80fd5b81516001600160a01b0381168114620000cf575f80fd5b9392505050565b60805160a05160c05160e051610100516146c4620001995f395f81816103e301528181610c8401528181610d2c0152818161163b01528181611d120152612ddd01525f8181610510015261338901525f8181610608015281816135a80152818161365d015281816137040152818161399201528181613a3f0152613ae601525f81816104b501528181610683015261270c01525f81816103a60152818161058b01528181610659015281816106ad015281816126e2015261273601526146c45ff3fe608060405234801561000f575f80fd5b506004361061029d575f3560e01c80636d454d51116101715780639168ae72116100d2578063c64814dd11610088578063e10911b11161006e578063e10911b11461062a578063f0261bc214610632578063f2fde38b1461063b575f80fd5b8063c64814dd146105d9578063d557714114610603575f80fd5b8063927ede2d116100b8578063927ede2d1461058657806396ab994d146105ad578063b5d2e0dc146105ba575f80fd5b80639168ae721461054557806391bd43a414610567575f80fd5b8063831cfb58116101275780638da5cb5b1161010d5780638da5cb5b146104fa5780638e21d5fb1461050b5780638eca493a14610532575f80fd5b8063831cfb58146104b057806384d7d1d4146104d7575f80fd5b8063746c8ae111610157578063746c8ae11461048157806376671808146104895780637b05afb514610491575f80fd5b80636d454d5114610466578063715018a614610479575f80fd5b80633385ccc21161021b57806340b5c837116101d1578063459598a2116101b7578063459598a21461042057806368e76346146104335780636bda1b9914610453575f80fd5b806340b5c8371461040557806343352d6114610418575f80fd5b80633c323a1b116102015780633c323a1b146103915780633cb747bf146103a45780633d9353fe146103de575f80fd5b80633385ccc2146103755780633b80242114610388575f80fd5b8063174e31c4116102705780632cc138be116102565780632cc138be146103435780632e787be31461034c57806330158eea14610355575f80fd5b8063174e31c41461031d57806319fac8fd14610330575f80fd5b80630be67fcc146102a15780630eb573af146102b65780630f3b7059146102c957806312a3e94714610306575b5f80fd5b6102b46102af366004613e8d565b61064e565b005b6102b46102c4366004613ecc565b610b38565b6102dc6102d7366004613ef7565b610c1c565b604080516001600160a01b0390941684526020840192909252908201526060015b60405180910390f35b61030f609a5481565b6040519081526020016102fd565b6102b461032b366004613ef7565b610c64565b6102b461033e366004613ecc565b610dd8565b61030f60985481565b61030f60995481565b610368610363366004613e8d565b610efa565b6040516102fd9190613f82565b6102b4610383366004614028565b611123565b61030f609c5481565b6102b461039f366004613ef7565b611805565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016102fd565b6103c67f000000000000000000000000000000000000000000000000000000000000000081565b6102b4610413366004613ecc565b611e6c565b610368611f8c565b6103c661042e366004613ecc565b6121a8565b610446610441366004614028565b6121d0565b6040516102fd9190614043565b6102b461046136600461408f565b6121f3565b6102b46104743660046140eb565b6126d7565b6102b46129cf565b6102b46129e2565b61030f612cd2565b61030f61049f366004614028565b60a06020525f908152604090205481565b6103c67f000000000000000000000000000000000000000000000000000000000000000081565b6104ea6104e5366004614028565b612d46565b60405190151581526020016102fd565b6033546001600160a01b03166103c6565b6103c67f000000000000000000000000000000000000000000000000000000000000000081565b6102b4610540366004613ecc565b612d70565b610558610553366004614028565b612e80565b6040516102fd93929190614122565b61030f610575366004614028565b60a16020525f908152604090205481565b6103c67f000000000000000000000000000000000000000000000000000000000000000081565b6097546104ea9060ff1681565b61030f6105c8366004614028565b609e6020525f908152604090205481565b61030f6105e7366004614152565b60a360209081525f928352604080842090915290825290205481565b6103c67f000000000000000000000000000000000000000000000000000000000000000081565b6102b4612f32565b61030f609b5481565b6102b4610649366004614028565b6131e6565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561073657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610707573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061072b9190614189565b6001600160a01b0316145b6107d45760405162461bcd60e51b8152602060048201526044602482018190527f5374616b696e673a2066756e6374696f6e2063616e206f6e6c79206265206361908201527f6c6c65642066726f6d20746865206f74686572207374616b696e6720636f6e7460648201527f7261637400000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b5f805b82811015610aeb57609b54609e5f8686858181106107f7576107f76141a4565b905060200201602081019061080c9190614028565b6001600160a01b03166001600160a01b031681526020019081526020015f20541161083657600191505b5f609e5f86868581811061084c5761084c6141a4565b90506020020160208101906108619190614028565b6001600160a01b03166001600160a01b031681526020019081526020015f20541115610ae3575f6001609e5f87878681811061089f5761089f6141a4565b90506020020160208101906108b49190614028565b6001600160a01b03166001600160a01b031681526020019081526020015f20546108de91906141fe565b90505b609d546108f0906001906141fe565b8110156109c257609d610904826001614211565b81548110610914576109146141a4565b5f91825260209091200154609d80546001600160a01b03909216918390811061093f5761093f6141a4565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055506001609e5f609d8481548110610982576109826141a4565b5f9182526020808320909101546001600160a01b03168352820192909252604001812080549091906109b59084906141fe565b90915550506001016108e1565b50609d8054806109d4576109d4614224565b5f8281526020812082017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055909101909155609e90858584818110610a4357610a436141a4565b9050602002016020810190610a589190614028565b6001600160a01b03166001600160a01b031681526020019081526020015f205f90555f60a15f868685818110610a9057610a906141a4565b9050602002016020810190610aa59190614028565b6001600160a01b03166001600160a01b031681526020019081526020015f20541115610ae3576001609c5f828254610add91906141fe565b90915550505b6001016107d7565b507f3511bf213f9290ba907e91e12a43e8471251e1879580ae5509292a3514c23f618383604051610b1d929190614251565b60405180910390a18015610b3357610b33613273565b505050565b610b406133f3565b5f81118015610b5157506099548114155b610bc35760405162461bcd60e51b815260206004820152602260248201527f696e76616c6964206e65772073657175656e63657220736574206d617820736960448201527f7a6500000000000000000000000000000000000000000000000000000000000060648201526084016107cb565b609980549082905560408051828152602081018490527f98b982a120d9be7d9c68d85a1aed8158d1d52e517175bfb3eb4280692f19b1ed910160405180910390a1609b546099541015610c1857610c18613273565b5050565b60a4602052815f5260405f208181548110610c35575f80fd5b5f9182526020909120600390910201805460018201546002909201546001600160a01b03909116935090915083565b610c6c61344d565b6001600160a01b038216610d22576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016635cf20c7b336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602481018490526044015f604051808303815f87803b158015610d07575f80fd5b505af1158015610d19573d5f803e3d5ffd5b50505050610dce565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663996cba6883336040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604481018490526064015f604051808303815f87803b158015610db7575f80fd5b505af1158015610dc9573d5f803e3d5ffd5b505050505b610c186001606555565b335f908152609e6020526040902054610e335760405162461bcd60e51b815260206004820152601360248201527f6f6e6c79207374616b657220616c6c6f7765640000000000000000000000000060448201526064016107cb565b6014811115610e845760405162461bcd60e51b815260206004820152601260248201527f696e76616c696420636f6d6d697373696f6e000000000000000000000000000060448201526064016107cb565b335f90815260a06020526040812082905560975460ff16610ea5575f610eb8565b610ead612cd2565b610eb8906001614211565b604080518481526020810183905291925033917f6e500db30ce535d38852e318f333e9be41a3fec6c65d234ebb06203c896db9a5910160405180910390a25050565b60605f8267ffffffffffffffff811115610f1657610f1661429e565b604051908082528060200260200182016040528015610f6257816020015b60408051606080820183525f808352602083015291810191909152815260200190600190039081610f345790505b5090505f5b83811015611119576040518060600160405280609f5f888886818110610f8f57610f8f6141a4565b9050602002016020810190610fa49190614028565b6001600160a01b03908116825260208083019390935260409091015f908120549091168352910190609f90888886818110610fe157610fe16141a4565b9050602002016020810190610ff69190614028565b6001600160a01b03166001600160a01b031681526020019081526020015f20600101548152602001609f5f888886818110611033576110336141a4565b90506020020160208101906110489190614028565b6001600160a01b03166001600160a01b031681526020019081526020015f206002018054611075906142cb565b80601f01602080910402602001604051908101604052809291908181526020018280546110a1906142cb565b80156110ec5780601f106110c3576101008083540402835291602001916110ec565b820191905f5260205f20905b8154815290600101906020018083116110cf57829003601f168201915b5050505050815250828281518110611106576111066141a4565b6020908102919091010152600101610f67565b5090505b92915050565b61112b61344d565b61113533826134ad565b156111825760405162461bcd60e51b815260206004820152601660248201527f756e64656c65676174696f6e20756e636c61696d65640000000000000000000060448201526064016107cb565b6001600160a01b0381165f90815260a3602090815260408083203384529091529020546111f15760405162461bcd60e51b815260206004820152601660248201527f7374616b696e6720616d6f756e74206973207a65726f0000000000000000000060448201526064016107cb565b6001600160a01b0381165f908152609e60205260408120546097549015919060ff1661121d575f611230565b611225612cd2565b611230906001614211565b6097549091505f9060ff168015611245575082155b61124f578161125c565b609a5461125c9083614211565b604080516060810182526001600160a01b038781168083525f81815260a36020908152858220338084528183528784208054848901908152888a018b815283875260a486528a87208054600180820183559189528789208c5160039092020180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909b16178a558251908a015551600290980197909755908452908252829055925191815260a19092529281208054949550919361131e9084906141fe565b90915550506001600160a01b0385165f90815260a2602052604090206113449033613536565b506001600160a01b0385165f908152609e60205260409020548415801561136d575060975460ff165b801561137a5750609c5481105b156115f1576001600160a01b0386165f908152609e60205260408120546113a3906001906141fe565b90505b6001609c546113b591906141fe565b8110156115ef5760a15f609d83815481106113d2576113d26141a4565b5f9182526020808320909101546001600160a01b031683528201929092526040018120549060a190609d611407856001614211565b81548110611417576114176141a4565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205411156115e7575f609d8281548110611455576114556141a4565b5f918252602090912001546001600160a01b03169050609d611478836001614211565b81548110611488576114886141a4565b5f91825260209091200154609d80546001600160a01b0390921691849081106114b3576114b36141a4565b5f91825260209091200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905580609d611501846001614211565b81548110611511576115116141a4565b5f91825260209091200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905561155c826001614211565b609e5f609d8581548110611572576115726141a4565b5f9182526020808320909101546001600160a01b031683528201929092526040019020556115a1826002614211565b609e5f609d6115b1866001614211565b815481106115c1576115c16141a4565b5f9182526020808320909101546001600160a01b03168352820192909252604001902055505b6001016113a6565b505b8415801561161457506001600160a01b0386165f90815260a16020526040902054155b15611631576001609c5f82825461162b91906141fe565b90915550505b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663ad8e122387336001600160a01b038a165f90815260a1602090815260408083205460a290925290912089919061169190613551565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1681526001600160a01b03958616600482015294909316602485015260448401919091526064830152608482015260a4015f604051808303815f87803b158015611702575f80fd5b505af1158015611714573d5f803e3d5ffd5b5050505061171f3390565b6001600160a01b0316866001600160a01b03167f92039db29d8c0a1aa1433fe109c69488c8c5e51b23c9de7d303ad80c1fef778c8460200151878760405161177a939291909283526020830191909152604082015260600190565b60405180910390a384158015611792575060975460ff165b80156117a05750609b548111155b80156117e65750609b546001600160a01b0387165f908152609e602052604090205411806117e65750609c546001600160a01b0387165f908152609e6020526040902054115b156117f3576117f3613273565b50505050506118026001606555565b50565b6001600160a01b0382165f908152609e6020526040902054829061186b5760405162461bcd60e51b815260206004820152600a60248201527f6e6f74207374616b65720000000000000000000000000000000000000000000060448201526064016107cb565b61187361344d565b5f82116118c25760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964207374616b6520616d6f756e7400000000000000000000000060448201526064016107cb565b6118cc33846134ad565b156119195760405162461bcd60e51b815260206004820152601660248201527f756e64656c65676174696f6e20756e636c61696d65640000000000000000000060448201526064016107cb565b6001600160a01b0383165f90815260a1602052604081208054849290611940908490614211565b90915550506001600160a01b0383165f90815260a36020908152604080832033845290915281208054849290611977908490614211565b90915550506001600160a01b0383165f90815260a26020526040902061199d903361355a565b506001600160a01b0383165f90815260a160205260409020548290036119d5576001609c5f8282546119cf9190614211565b90915550505b6001600160a01b0383165f908152609e602052604090205460975460ff1680156119ff5750600181115b15611c50575f611a106001836141fe565b90505b8015611c4e5760a15f609d611a296001856141fe565b81548110611a3957611a396141a4565b905f5260205f20015f9054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020015f205460a15f609d8481548110611a8a57611a8a6141a4565b5f9182526020808320909101546001600160a01b031683528201929092526040019020541115611c3c575f609d611ac26001846141fe565b81548110611ad257611ad26141a4565b5f91825260209091200154609d80546001600160a01b0390921692509083908110611aff57611aff6141a4565b5f918252602090912001546001600160a01b0316609d611b206001856141fe565b81548110611b3057611b306141a4565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555080609d8381548110611b6f57611b6f6141a4565b5f918252602082200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0393909316929092179091558290609e90609d611bc16001856141fe565b81548110611bd157611bd16141a4565b5f9182526020808320909101546001600160a01b03168352820192909252604001902055611c00826001614211565b609e5f609d8581548110611c1657611c166141a4565b5f9182526020808320909101546001600160a01b03168352820192909252604001902055505b80611c4681614316565b915050611a13565b505b6097545f9060ff16611c62575f611c75565b611c6a612cd2565b611c75906001614211565b6001600160a01b0386165f81815260a3602090815260408083203380855290835292819020548151908152918201859052805194955091937f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04929181900390910190a36001600160a01b038581165f81815260a360209081526040808320338085529083528184205494845260a183528184205460a290935292207f00000000000000000000000000000000000000000000000000000000000000009094169363e16bcc32938a93928792611d4990613551565b6001600160a01b038d165f90815260a3602052604081208d91336001600160a01b039081168252602082019290925260409081015f205490517fffffffff0000000000000000000000000000000000000000000000000000000060e08c901b16815298821660048a01529616602488015260448701949094526064860192909252608485015260a48401521460c482015260e4015f604051808303815f87803b158015611df4575f80fd5b505af1158015611e06573d5f803e3d5ffd5b50505050611e1b611e143390565b308661356e565b60975460ff168015611e2e5750609b5482115b8015611e5357506099546001600160a01b0386165f908152609e602052604090205411155b15611e6057611e60613273565b5050610b336001606555565b611e746133f3565b60975460ff16158015611e88575042609854115b611ed45760405162461bcd60e51b815260206004820152601660248201527f72657761726420616c726561647920737461727465640000000000000000000060448201526064016107cb565b4281118015611eed5750611eeb6201518082614377565b155b8015611efb57506098548114155b611f475760405162461bcd60e51b815260206004820152601960248201527f696e76616c6964207265776172642073746172742074696d650000000000000060448201526064016107cb565b609880549082905560408051828152602081018490527f91c38708087fb4ba51bd0e6a106cc1fbaf340479a2e81d18f2341e8c78f97555910160405180910390a15050565b609d546060905f9067ffffffffffffffff811115611fac57611fac61429e565b604051908082528060200260200182016040528015611ff857816020015b60408051606080820183525f808352602083015291810191909152815260200190600190039081611fca5790505b5090505f5b609d548110156121a2576040518060600160405280609f5f609d8581548110612028576120286141a4565b5f9182526020808320909101546001600160a01b0390811684528382019490945260409092018120549092168352609d80549390910192609f92919086908110612074576120746141a4565b905f5260205f20015f9054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020015f20600101548152602001609f5f609d85815481106120cd576120cd6141a4565b5f9182526020808320909101546001600160a01b03168352820192909252604001902060020180546120fe906142cb565b80601f016020809104026020016040519081016040528092919081815260200182805461212a906142cb565b80156121755780601f1061214c57610100808354040283529160200191612175565b820191905f5260205f20905b81548152906001019060200180831161215857829003601f168201915b505050505081525082828151811061218f5761218f6141a4565b6020908102919091010152600101611ffd565b50919050565b609d81815481106121b7575f80fd5b5f918252602090912001546001600160a01b0316905081565b6001600160a01b0381165f90815260a26020526040902060609061111d906137db565b5f54610100900460ff161580801561221157505f54600160ff909116105b8061222a5750303b15801561222a57505f5460ff166001145b61229c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107cb565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156122f8575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b5f861161236d5760405162461bcd60e51b815260206004820152602260248201527f73657175656e6365727353697a65206d7573742067726561746572207468616e60448201527f203000000000000000000000000000000000000000000000000000000000000060648201526084016107cb565b5f85116123bc5760405162461bcd60e51b815260206004820152601c60248201527f696e76616c696420756e64656c65676174654c6f636b45706f6368730000000060448201526064016107cb565b42841180156123d557506123d36201518085614377565b155b6124215760405162461bcd60e51b815260206004820152601960248201527f696e76616c6964207265776172642073746172742074696d650000000000000060448201526064016107cb565b8161246e5760405162461bcd60e51b815260206004820152601760248201527f696e76616c696420696e697469616c207374616b65727300000000000000000060448201526064016107cb565b6124766137e7565b61247e61386b565b6099869055609a8590556098849055609b8290555f5b609b548110156125fa578383828181106124b0576124b06141a4565b90506020028101906124c2919061438a565b609f5f8686858181106124d7576124d76141a4565b90506020028101906124e9919061438a565b6124f7906020810190614028565b6001600160a01b0316815260208101919091526040015f20612519828261446b565b905050609d848483818110612530576125306141a4565b9050602002810190612542919061438a565b612550906020810190614028565b8154600180820184555f93845260209093200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556125a4908290614211565b609e5f8686858181106125b9576125b96141a4565b90506020028101906125cb919061438a565b6125d9906020810190614028565b6001600160a01b0316815260208101919091526040015f2055600101612494565b50604080515f8152602081018890527f98b982a120d9be7d9c68d85a1aed8158d1d52e517175bfb3eb4280692f19b1ed910160405180910390a1604080515f8152602081018690527f91c38708087fb4ba51bd0e6a106cc1fbaf340479a2e81d18f2341e8c78f97555910160405180910390a180156126cf575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156127bf57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa158015612790573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127b49190614189565b6001600160a01b0316145b6128585760405162461bcd60e51b8152602060048201526044602482018190527f5374616b696e673a2066756e6374696f6e2063616e206f6e6c79206265206361908201527f6c6c65642066726f6d20746865206f74686572207374616b696e6720636f6e7460648201527f7261637400000000000000000000000000000000000000000000000000000000608482015260a4016107cb565b609e5f6128686020840184614028565b6001600160a01b03166001600160a01b031681526020019081526020015f20545f0361291557609d61289d6020830183614028565b81546001810183555f928352602080842090910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039390931692909217909155609d5491609e916128fb90850185614028565b6001600160a01b0316815260208101919091526040015f20555b80609f5f6129266020840184614028565b6001600160a01b0316815260208101919091526040015f20612948828261446b565b5061295890506020820182614028565b6001600160a01b03167f058ecb29c230cd5df283c89e996187ed521393fe4546cd1b097921c4b2de293d602083013561299460408501856143c6565b6040516129a39392919061461b565b60405180910390a260975460ff161580156129c25750609954609d5411155b1561180257611802613273565b6129d76133f3565b6129e05f6138ef565b565b6129ea6133f3565b609854421015612a615760405162461bcd60e51b8152602060048201526024808201527f63616e2774207374617274206265666f7265207265776172642073746172742060448201527f74696d650000000000000000000000000000000000000000000000000000000060648201526084016107cb565b5f609c5411612ab25760405162461bcd60e51b815260206004820152600e60248201527f6e6f6e652063616e64696461746500000000000000000000000000000000000060448201526064016107cb565b609780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091555b609d54811015612c6f575f5b81811015612c665760a15f609d8381548110612b0b57612b0b6141a4565b905f5260205f20015f9054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020015f205460a15f609d8581548110612b5c57612b5c6141a4565b5f9182526020808320909101546001600160a01b031683528201929092526040019020541115612c5e575f609d8281548110612b9a57612b9a6141a4565b5f91825260209091200154609d80546001600160a01b0390921692509084908110612bc757612bc76141a4565b5f91825260209091200154609d80546001600160a01b039092169184908110612bf257612bf26141a4565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555080609d8481548110612c3157612c316141a4565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550505b600101612aed565b50600101612ae1565b505f5b609d54811015612cc957612c87816001614211565b609e5f609d8481548110612c9d57612c9d6141a4565b5f9182526020808320909101546001600160a01b03168352820192909252604001902055600101612c72565b506129e0613273565b5f609854421015612d255760405162461bcd60e51b815260206004820152601960248201527f726577617264206973206e6f742073746172746564207965740000000000000060448201526064016107cb565b6201518060985442612d3791906141fe565b612d41919061466e565b905090565b6001600160a01b0381165f90815260a360209081526040808320338452909152812054151561111d565b335f908152609e6020526040902054612dcb5760405162461bcd60e51b815260206004820152601360248201527f6f6e6c79207374616b657220616c6c6f7765640000000000000000000000000060448201526064016107cb565b612dd361344d565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166341302560336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602481018490526044015f604051808303815f87803b158015612e60575f80fd5b505af1158015612e72573d5f803e3d5ffd5b505050506118026001606555565b609f6020525f90815260409020805460018201546002830180546001600160a01b03909316939192612eb1906142cb565b80601f0160208091040260200160405190810160405280929190818152602001828054612edd906142cb565b8015612f285780601f10612eff57610100808354040283529160200191612f28565b820191905f5260205f20905b815481529060010190602001808311612f0b57829003601f168201915b5050505050905083565b612f3a61344d565b5f805b335f90815260a4602052604090205481101561314c5760975460ff161580612f9b5750612f68612cd2565b335f90815260a460205260409020805483908110612f8857612f886141a4565b905f5260205f2090600302016002015411155b1561314457335f90815260a460205260409020805482908110612fc057612fc06141a4565b905f5260205f2090600302016001015482612fdb9190614211565b335f90815260a46020526040902054909250600110156130c157335f90815260a4602052604090208054613011906001906141fe565b81548110613021576130216141a4565b905f5260205f20906003020160a45f6130373390565b6001600160a01b03166001600160a01b031681526020019081526020015f208281548110613067576130676141a4565b5f9182526020909120825460039092020180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091178155600180830154908201556002918201549101555b335f90815260a4602052604090208054806130de576130de614224565b5f8281526020812060037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019283020180547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600181018290556002015590555b600101612f3d565b505f811161319c5760405162461bcd60e51b815260206004820152601760248201527f6e6f204d6f72706820746f6b656e20746f20636c61696d00000000000000000060448201526064016107cb565b6131a63382613958565b60405181815233907fcc3089abc79631b3c0c81414a72e237c08559073a970cf474e36ae965e382fb39060200160405180910390a2506129e06001606555565b6131ee6133f3565b6001600160a01b03811661326a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107cb565b611802816138ef565b60995460975460ff161561329757609954609c5410156132925750609c545b6132a8565b609954609d5410156132a85750609d545b5f8167ffffffffffffffff8111156132c2576132c261429e565b6040519080825280602002602001820160405280156132eb578160200160208202803683370190505b5090505f5b8281101561335857609d818154811061330b5761330b6141a4565b905f5260205f20015f9054906101000a90046001600160a01b0316828281518110613338576133386141a4565b6001600160a01b03909216602092830291909101909101526001016132f0565b506040517f9b8201a40000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639b8201a4906133be908490600401614043565b5f604051808303815f87803b1580156133d5575f80fd5b505af11580156133e7573d5f803e3d5ffd5b50509151609b55505050565b6033546001600160a01b031633146129e05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107cb565b60026065540361349f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016107cb565b6002606555565b6001606555565b5f805b6001600160a01b0384165f90815260a4602052604090205481101561352d576001600160a01b038481165f90815260a460205260409020805491851691839081106134fd576134fd6141a4565b5f9182526020909120600390910201546001600160a01b03160361352557600191505061111d565b6001016134b0565b505f9392505050565b5f61354a836001600160a01b038416613bbc565b9392505050565b5f61111d825490565b5f61354a836001600160a01b038416613c9f565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa1580156135ef573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136139190614681565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301528581166024830152604482018590529192507f0000000000000000000000000000000000000000000000000000000000000000909116906323b872dd906064016020604051808303815f875af11580156136a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136c99190614698565b506040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa15801561374b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061376f9190614681565b90505f8311801561378857508261378683836141fe565b145b6137d45760405162461bcd60e51b815260206004820152601b60248201527f6d6f72706820746f6b656e207472616e73666572206661696c6564000000000060448201526064016107cb565b5050505050565b60605f61354a83613ceb565b5f54610100900460ff166138635760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107cb565b6129e0613d44565b5f54610100900460ff166138e75760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107cb565b6129e0613dc9565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa1580156139d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139fd9190614681565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152602482018590529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303815f875af1158015613a87573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613aab9190614698565b506040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015613b2d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613b519190614681565b90505f83118015613b6a575082613b6883836141fe565b145b613bb65760405162461bcd60e51b815260206004820152601b60248201527f6d6f72706820746f6b656e207472616e73666572206661696c6564000000000060448201526064016107cb565b50505050565b5f8181526001830160205260408120548015613c96575f613bde6001836141fe565b85549091505f90613bf1906001906141fe565b9050818114613c50575f865f018281548110613c0f57613c0f6141a4565b905f5260205f200154905080875f018481548110613c2f57613c2f6141a4565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080613c6157613c61614224565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061111d565b5f91505061111d565b5f818152600183016020526040812054613ce457508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561111d565b505f61111d565b6060815f01805480602002602001604051908101604052809291908181526020018280548015613d3857602002820191905f5260205f20905b815481526020019060010190808311613d24575b50505050509050919050565b5f54610100900460ff16613dc05760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107cb565b6129e0336138ef565b5f54610100900460ff166134a65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107cb565b5f8083601f840112613e55575f80fd5b50813567ffffffffffffffff811115613e6c575f80fd5b6020830191508360208260051b8501011115613e86575f80fd5b9250929050565b5f8060208385031215613e9e575f80fd5b823567ffffffffffffffff811115613eb4575f80fd5b613ec085828601613e45565b90969095509350505050565b5f60208284031215613edc575f80fd5b5035919050565b6001600160a01b0381168114611802575f80fd5b5f8060408385031215613f08575f80fd5b8235613f1381613ee3565b946020939093013593505050565b5f81518084525f5b81811015613f4557602081850181015186830182015201613f29565b505f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b8381101561401a578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0018552815180516001600160a01b031684528781015188850152860151606087850181905261400681860183613f21565b968901969450505090860190600101613fa9565b509098975050505050505050565b5f60208284031215614038575f80fd5b813561354a81613ee3565b602080825282518282018190525f9190848201906040850190845b818110156140835783516001600160a01b03168352928401929184019160010161405e565b50909695505050505050565b5f805f805f608086880312156140a3575f80fd5b853594506020860135935060408601359250606086013567ffffffffffffffff8111156140ce575f80fd5b6140da88828901613e45565b969995985093965092949392505050565b5f602082840312156140fb575f80fd5b813567ffffffffffffffff811115614111575f80fd5b82016060818503121561354a575f80fd5b6001600160a01b0384168152826020820152606060408201525f6141496060830184613f21565b95945050505050565b5f8060408385031215614163575f80fd5b823561416e81613ee3565b9150602083013561417e81613ee3565b809150509250929050565b5f60208284031215614199575f80fd5b815161354a81613ee3565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561111d5761111d6141d1565b8082018082111561111d5761111d6141d1565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b60208082528181018390525f908460408401835b8681101561429357823561427881613ee3565b6001600160a01b031682529183019190830190600101614265565b509695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b600181811c908216806142df57607f821691505b6020821081036121a2577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f81614324576143246141d1565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f826143855761438561434a565b500690565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181126143bc575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126143f9575f80fd5b83018035915067ffffffffffffffff821115614413575f80fd5b602001915036819003821315613e86575f80fd5b601f821115610b3357805f5260205f20601f840160051c8101602085101561444c5750805b601f840160051c820191505b818110156137d4575f8155600101614458565b813561447681613ee3565b6001600160a01b0381167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550600160208084013560018401556002830160408501357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18636030181126144ed575f80fd5b8501803567ffffffffffffffff811115614505575f80fd5b8036038483011315614515575f80fd5b6145298161452385546142cb565b85614427565b5f601f82116001811461457b575f831561454557508382018601355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178555614610565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156145c7578685018901358255938801939089019088016145a8565b5084821015614604577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88660031b161c198885880101351681555b505060018360011b0185555b505050505050505050565b83815260406020820152816040820152818360608301375f818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b5f8261467c5761467c61434a565b500490565b5f60208284031215614691575f80fd5b5051919050565b5f602082840312156146a8575f80fd5b8151801515811461354a575f80fdfea164736f6c6343000818000a", } // L2StakingABI is the input ABI used to generate the binding from. @@ -704,66 +704,66 @@ func (_L2Staking *L2StakingCallerSession) Owner() (common.Address, error) { return _L2Staking.Contract.Owner(&_L2Staking.CallOpts) } -// RewardStart is a free data retrieval call binding the contract method 0xd14db45a. +// RewardStartTime is a free data retrieval call binding the contract method 0x2cc138be. // -// Solidity: function rewardStart() view returns(bool) -func (_L2Staking *L2StakingCaller) RewardStart(opts *bind.CallOpts) (bool, error) { +// Solidity: function rewardStartTime() view returns(uint256) +func (_L2Staking *L2StakingCaller) RewardStartTime(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} - err := _L2Staking.contract.Call(opts, &out, "rewardStart") + err := _L2Staking.contract.Call(opts, &out, "rewardStartTime") if err != nil { - return *new(bool), err + return *new(*big.Int), err } - out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) return out0, err } -// RewardStart is a free data retrieval call binding the contract method 0xd14db45a. +// RewardStartTime is a free data retrieval call binding the contract method 0x2cc138be. // -// Solidity: function rewardStart() view returns(bool) -func (_L2Staking *L2StakingSession) RewardStart() (bool, error) { - return _L2Staking.Contract.RewardStart(&_L2Staking.CallOpts) +// Solidity: function rewardStartTime() view returns(uint256) +func (_L2Staking *L2StakingSession) RewardStartTime() (*big.Int, error) { + return _L2Staking.Contract.RewardStartTime(&_L2Staking.CallOpts) } -// RewardStart is a free data retrieval call binding the contract method 0xd14db45a. +// RewardStartTime is a free data retrieval call binding the contract method 0x2cc138be. // -// Solidity: function rewardStart() view returns(bool) -func (_L2Staking *L2StakingCallerSession) RewardStart() (bool, error) { - return _L2Staking.Contract.RewardStart(&_L2Staking.CallOpts) +// Solidity: function rewardStartTime() view returns(uint256) +func (_L2Staking *L2StakingCallerSession) RewardStartTime() (*big.Int, error) { + return _L2Staking.Contract.RewardStartTime(&_L2Staking.CallOpts) } -// RewardStartTime is a free data retrieval call binding the contract method 0x2cc138be. +// RewardStarted is a free data retrieval call binding the contract method 0x96ab994d. // -// Solidity: function rewardStartTime() view returns(uint256) -func (_L2Staking *L2StakingCaller) RewardStartTime(opts *bind.CallOpts) (*big.Int, error) { +// Solidity: function rewardStarted() view returns(bool) +func (_L2Staking *L2StakingCaller) RewardStarted(opts *bind.CallOpts) (bool, error) { var out []interface{} - err := _L2Staking.contract.Call(opts, &out, "rewardStartTime") + err := _L2Staking.contract.Call(opts, &out, "rewardStarted") if err != nil { - return *new(*big.Int), err + return *new(bool), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) return out0, err } -// RewardStartTime is a free data retrieval call binding the contract method 0x2cc138be. +// RewardStarted is a free data retrieval call binding the contract method 0x96ab994d. // -// Solidity: function rewardStartTime() view returns(uint256) -func (_L2Staking *L2StakingSession) RewardStartTime() (*big.Int, error) { - return _L2Staking.Contract.RewardStartTime(&_L2Staking.CallOpts) +// Solidity: function rewardStarted() view returns(bool) +func (_L2Staking *L2StakingSession) RewardStarted() (bool, error) { + return _L2Staking.Contract.RewardStarted(&_L2Staking.CallOpts) } -// RewardStartTime is a free data retrieval call binding the contract method 0x2cc138be. +// RewardStarted is a free data retrieval call binding the contract method 0x96ab994d. // -// Solidity: function rewardStartTime() view returns(uint256) -func (_L2Staking *L2StakingCallerSession) RewardStartTime() (*big.Int, error) { - return _L2Staking.Contract.RewardStartTime(&_L2Staking.CallOpts) +// Solidity: function rewardStarted() view returns(bool) +func (_L2Staking *L2StakingCallerSession) RewardStarted() (bool, error) { + return _L2Staking.Contract.RewardStarted(&_L2Staking.CallOpts) } // SequencerSetMaxSize is a free data retrieval call binding the contract method 0x2e787be3. @@ -1107,23 +1107,23 @@ func (_L2Staking *L2StakingTransactorSession) ClaimUndelegation() (*types.Transa // DelegateStake is a paid mutator transaction binding the contract method 0x3c323a1b. // -// Solidity: function delegateStake(address staker, uint256 amount) returns() -func (_L2Staking *L2StakingTransactor) DelegateStake(opts *bind.TransactOpts, staker common.Address, amount *big.Int) (*types.Transaction, error) { - return _L2Staking.contract.Transact(opts, "delegateStake", staker, amount) +// Solidity: function delegateStake(address delegatee, uint256 amount) returns() +func (_L2Staking *L2StakingTransactor) DelegateStake(opts *bind.TransactOpts, delegatee common.Address, amount *big.Int) (*types.Transaction, error) { + return _L2Staking.contract.Transact(opts, "delegateStake", delegatee, amount) } // DelegateStake is a paid mutator transaction binding the contract method 0x3c323a1b. // -// Solidity: function delegateStake(address staker, uint256 amount) returns() -func (_L2Staking *L2StakingSession) DelegateStake(staker common.Address, amount *big.Int) (*types.Transaction, error) { - return _L2Staking.Contract.DelegateStake(&_L2Staking.TransactOpts, staker, amount) +// Solidity: function delegateStake(address delegatee, uint256 amount) returns() +func (_L2Staking *L2StakingSession) DelegateStake(delegatee common.Address, amount *big.Int) (*types.Transaction, error) { + return _L2Staking.Contract.DelegateStake(&_L2Staking.TransactOpts, delegatee, amount) } // DelegateStake is a paid mutator transaction binding the contract method 0x3c323a1b. // -// Solidity: function delegateStake(address staker, uint256 amount) returns() -func (_L2Staking *L2StakingTransactorSession) DelegateStake(staker common.Address, amount *big.Int) (*types.Transaction, error) { - return _L2Staking.Contract.DelegateStake(&_L2Staking.TransactOpts, staker, amount) +// Solidity: function delegateStake(address delegatee, uint256 amount) returns() +func (_L2Staking *L2StakingTransactorSession) DelegateStake(delegatee common.Address, amount *big.Int) (*types.Transaction, error) { + return _L2Staking.Contract.DelegateStake(&_L2Staking.TransactOpts, delegatee, amount) } // Initialize is a paid mutator transaction binding the contract method 0x6bda1b99. diff --git a/bindings/bindings/l2staking_more.go b/bindings/bindings/l2staking_more.go index 073fb05ae..2c36c9765 100644 --- a/bindings/bindings/l2staking_more.go +++ b/bindings/bindings/l2staking_more.go @@ -9,11 +9,11 @@ import ( "morph-l2/bindings/solc" ) -const L2StakingStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"_initialized\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_uint8\"},{\"astId\":1001,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"_initializing\",\"offset\":1,\"slot\":\"0\",\"type\":\"t_bool\"},{\"astId\":1002,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_array(t_uint256)1022_storage\"},{\"astId\":1003,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"_owner\",\"offset\":0,\"slot\":\"51\",\"type\":\"t_address\"},{\"astId\":1004,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"52\",\"type\":\"t_array(t_uint256)1021_storage\"},{\"astId\":1005,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"_status\",\"offset\":0,\"slot\":\"101\",\"type\":\"t_uint256\"},{\"astId\":1006,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"102\",\"type\":\"t_array(t_uint256)1021_storage\"},{\"astId\":1007,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"rewardStart\",\"offset\":0,\"slot\":\"151\",\"type\":\"t_bool\"},{\"astId\":1008,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"rewardStartTime\",\"offset\":0,\"slot\":\"152\",\"type\":\"t_uint256\"},{\"astId\":1009,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"sequencerSetMaxSize\",\"offset\":0,\"slot\":\"153\",\"type\":\"t_uint256\"},{\"astId\":1010,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"undelegateLockEpochs\",\"offset\":0,\"slot\":\"154\",\"type\":\"t_uint256\"},{\"astId\":1011,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"latestSequencerSetSize\",\"offset\":0,\"slot\":\"155\",\"type\":\"t_uint256\"},{\"astId\":1012,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"candidateNumber\",\"offset\":0,\"slot\":\"156\",\"type\":\"t_uint256\"},{\"astId\":1013,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"stakerAddresses\",\"offset\":0,\"slot\":\"157\",\"type\":\"t_array(t_address)dyn_storage\"},{\"astId\":1014,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"stakerRankings\",\"offset\":0,\"slot\":\"158\",\"type\":\"t_mapping(t_address,t_uint256)\"},{\"astId\":1015,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"stakers\",\"offset\":0,\"slot\":\"159\",\"type\":\"t_mapping(t_address,t_struct(StakerInfo)1025_storage)\"},{\"astId\":1016,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"commissions\",\"offset\":0,\"slot\":\"160\",\"type\":\"t_mapping(t_address,t_uint256)\"},{\"astId\":1017,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"stakerDelegations\",\"offset\":0,\"slot\":\"161\",\"type\":\"t_mapping(t_address,t_uint256)\"},{\"astId\":1018,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"delegators\",\"offset\":0,\"slot\":\"162\",\"type\":\"t_mapping(t_address,t_struct(AddressSet)1023_storage)\"},{\"astId\":1019,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"delegations\",\"offset\":0,\"slot\":\"163\",\"type\":\"t_mapping(t_address,t_mapping(t_address,t_uint256))\"},{\"astId\":1020,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"undelegations\",\"offset\":0,\"slot\":\"164\",\"type\":\"t_mapping(t_address,t_array(t_struct(Undelegation)1026_storage)dyn_storage)\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"},\"t_array(t_address)dyn_storage\":{\"encoding\":\"dynamic_array\",\"label\":\"address[]\",\"numberOfBytes\":\"32\"},\"t_array(t_bytes32)dyn_storage\":{\"encoding\":\"dynamic_array\",\"label\":\"bytes32[]\",\"numberOfBytes\":\"32\"},\"t_array(t_struct(Undelegation)1026_storage)dyn_storage\":{\"encoding\":\"dynamic_array\",\"label\":\"struct IL2Staking.Undelegation[]\",\"numberOfBytes\":\"32\"},\"t_array(t_uint256)1021_storage\":{\"encoding\":\"inplace\",\"label\":\"uint256[49]\",\"numberOfBytes\":\"1568\"},\"t_array(t_uint256)1022_storage\":{\"encoding\":\"inplace\",\"label\":\"uint256[50]\",\"numberOfBytes\":\"1600\"},\"t_bool\":{\"encoding\":\"inplace\",\"label\":\"bool\",\"numberOfBytes\":\"1\"},\"t_bytes32\":{\"encoding\":\"inplace\",\"label\":\"bytes32\",\"numberOfBytes\":\"32\"},\"t_bytes_storage\":{\"encoding\":\"bytes\",\"label\":\"bytes\",\"numberOfBytes\":\"32\"},\"t_mapping(t_address,t_array(t_struct(Undelegation)1026_storage)dyn_storage)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e struct IL2Staking.Undelegation[])\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_array(t_struct(Undelegation)1026_storage)dyn_storage\"},\"t_mapping(t_address,t_mapping(t_address,t_uint256))\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e mapping(address =\u003e uint256))\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_mapping(t_address,t_uint256)\"},\"t_mapping(t_address,t_struct(AddressSet)1023_storage)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e struct EnumerableSetUpgradeable.AddressSet)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_struct(AddressSet)1023_storage\"},\"t_mapping(t_address,t_struct(StakerInfo)1025_storage)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e struct Types.StakerInfo)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_struct(StakerInfo)1025_storage\"},\"t_mapping(t_address,t_uint256)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e uint256)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_uint256\"},\"t_mapping(t_bytes32,t_uint256)\":{\"encoding\":\"mapping\",\"label\":\"mapping(bytes32 =\u003e uint256)\",\"numberOfBytes\":\"32\",\"key\":\"t_bytes32\",\"value\":\"t_uint256\"},\"t_struct(AddressSet)1023_storage\":{\"encoding\":\"inplace\",\"label\":\"struct EnumerableSetUpgradeable.AddressSet\",\"numberOfBytes\":\"64\"},\"t_struct(Set)1024_storage\":{\"encoding\":\"inplace\",\"label\":\"struct EnumerableSetUpgradeable.Set\",\"numberOfBytes\":\"64\"},\"t_struct(StakerInfo)1025_storage\":{\"encoding\":\"inplace\",\"label\":\"struct Types.StakerInfo\",\"numberOfBytes\":\"96\"},\"t_struct(Undelegation)1026_storage\":{\"encoding\":\"inplace\",\"label\":\"struct IL2Staking.Undelegation\",\"numberOfBytes\":\"96\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"},\"t_uint8\":{\"encoding\":\"inplace\",\"label\":\"uint8\",\"numberOfBytes\":\"1\"}}}" +const L2StakingStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"_initialized\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_uint8\"},{\"astId\":1001,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"_initializing\",\"offset\":1,\"slot\":\"0\",\"type\":\"t_bool\"},{\"astId\":1002,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_array(t_uint256)1022_storage\"},{\"astId\":1003,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"_owner\",\"offset\":0,\"slot\":\"51\",\"type\":\"t_address\"},{\"astId\":1004,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"52\",\"type\":\"t_array(t_uint256)1021_storage\"},{\"astId\":1005,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"_status\",\"offset\":0,\"slot\":\"101\",\"type\":\"t_uint256\"},{\"astId\":1006,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"102\",\"type\":\"t_array(t_uint256)1021_storage\"},{\"astId\":1007,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"rewardStarted\",\"offset\":0,\"slot\":\"151\",\"type\":\"t_bool\"},{\"astId\":1008,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"rewardStartTime\",\"offset\":0,\"slot\":\"152\",\"type\":\"t_uint256\"},{\"astId\":1009,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"sequencerSetMaxSize\",\"offset\":0,\"slot\":\"153\",\"type\":\"t_uint256\"},{\"astId\":1010,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"undelegateLockEpochs\",\"offset\":0,\"slot\":\"154\",\"type\":\"t_uint256\"},{\"astId\":1011,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"latestSequencerSetSize\",\"offset\":0,\"slot\":\"155\",\"type\":\"t_uint256\"},{\"astId\":1012,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"candidateNumber\",\"offset\":0,\"slot\":\"156\",\"type\":\"t_uint256\"},{\"astId\":1013,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"stakerAddresses\",\"offset\":0,\"slot\":\"157\",\"type\":\"t_array(t_address)dyn_storage\"},{\"astId\":1014,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"stakerRankings\",\"offset\":0,\"slot\":\"158\",\"type\":\"t_mapping(t_address,t_uint256)\"},{\"astId\":1015,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"stakers\",\"offset\":0,\"slot\":\"159\",\"type\":\"t_mapping(t_address,t_struct(StakerInfo)1025_storage)\"},{\"astId\":1016,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"commissions\",\"offset\":0,\"slot\":\"160\",\"type\":\"t_mapping(t_address,t_uint256)\"},{\"astId\":1017,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"stakerDelegations\",\"offset\":0,\"slot\":\"161\",\"type\":\"t_mapping(t_address,t_uint256)\"},{\"astId\":1018,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"delegators\",\"offset\":0,\"slot\":\"162\",\"type\":\"t_mapping(t_address,t_struct(AddressSet)1023_storage)\"},{\"astId\":1019,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"delegations\",\"offset\":0,\"slot\":\"163\",\"type\":\"t_mapping(t_address,t_mapping(t_address,t_uint256))\"},{\"astId\":1020,\"contract\":\"contracts/l2/staking/L2Staking.sol:L2Staking\",\"label\":\"undelegations\",\"offset\":0,\"slot\":\"164\",\"type\":\"t_mapping(t_address,t_array(t_struct(Undelegation)1026_storage)dyn_storage)\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"},\"t_array(t_address)dyn_storage\":{\"encoding\":\"dynamic_array\",\"label\":\"address[]\",\"numberOfBytes\":\"32\"},\"t_array(t_bytes32)dyn_storage\":{\"encoding\":\"dynamic_array\",\"label\":\"bytes32[]\",\"numberOfBytes\":\"32\"},\"t_array(t_struct(Undelegation)1026_storage)dyn_storage\":{\"encoding\":\"dynamic_array\",\"label\":\"struct IL2Staking.Undelegation[]\",\"numberOfBytes\":\"32\"},\"t_array(t_uint256)1021_storage\":{\"encoding\":\"inplace\",\"label\":\"uint256[49]\",\"numberOfBytes\":\"1568\"},\"t_array(t_uint256)1022_storage\":{\"encoding\":\"inplace\",\"label\":\"uint256[50]\",\"numberOfBytes\":\"1600\"},\"t_bool\":{\"encoding\":\"inplace\",\"label\":\"bool\",\"numberOfBytes\":\"1\"},\"t_bytes32\":{\"encoding\":\"inplace\",\"label\":\"bytes32\",\"numberOfBytes\":\"32\"},\"t_bytes_storage\":{\"encoding\":\"bytes\",\"label\":\"bytes\",\"numberOfBytes\":\"32\"},\"t_mapping(t_address,t_array(t_struct(Undelegation)1026_storage)dyn_storage)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e struct IL2Staking.Undelegation[])\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_array(t_struct(Undelegation)1026_storage)dyn_storage\"},\"t_mapping(t_address,t_mapping(t_address,t_uint256))\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e mapping(address =\u003e uint256))\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_mapping(t_address,t_uint256)\"},\"t_mapping(t_address,t_struct(AddressSet)1023_storage)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e struct EnumerableSetUpgradeable.AddressSet)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_struct(AddressSet)1023_storage\"},\"t_mapping(t_address,t_struct(StakerInfo)1025_storage)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e struct Types.StakerInfo)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_struct(StakerInfo)1025_storage\"},\"t_mapping(t_address,t_uint256)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e uint256)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_uint256\"},\"t_mapping(t_bytes32,t_uint256)\":{\"encoding\":\"mapping\",\"label\":\"mapping(bytes32 =\u003e uint256)\",\"numberOfBytes\":\"32\",\"key\":\"t_bytes32\",\"value\":\"t_uint256\"},\"t_struct(AddressSet)1023_storage\":{\"encoding\":\"inplace\",\"label\":\"struct EnumerableSetUpgradeable.AddressSet\",\"numberOfBytes\":\"64\"},\"t_struct(Set)1024_storage\":{\"encoding\":\"inplace\",\"label\":\"struct EnumerableSetUpgradeable.Set\",\"numberOfBytes\":\"64\"},\"t_struct(StakerInfo)1025_storage\":{\"encoding\":\"inplace\",\"label\":\"struct Types.StakerInfo\",\"numberOfBytes\":\"96\"},\"t_struct(Undelegation)1026_storage\":{\"encoding\":\"inplace\",\"label\":\"struct IL2Staking.Undelegation\",\"numberOfBytes\":\"96\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"},\"t_uint8\":{\"encoding\":\"inplace\",\"label\":\"uint8\",\"numberOfBytes\":\"1\"}}}" var L2StakingStorageLayout = new(solc.StorageLayout) -var L2StakingDeployedBin = "0x608060405234801561000f575f80fd5b506004361061029d575f3560e01c80636d454d51116101715780639168ae72116100d2578063d14db45a11610088578063e10911b11161006e578063e10911b114610651578063f0261bc214610659578063f2fde38b14610662575f80fd5b8063d14db45a1461061d578063d55771411461062a575f80fd5b8063927ede2d116100b8578063927ede2d146105ad578063b5d2e0dc146105d4578063c64814dd146105f3575f80fd5b80639168ae721461056c57806391bd43a41461058e575f80fd5b8063831cfb58116101275780638da5cb5b1161010d5780638da5cb5b146105145780638e21d5fb146105325780638eca493a14610559575f80fd5b8063831cfb58146104ca57806384d7d1d4146104f1575f80fd5b8063746c8ae111610157578063746c8ae11461049b57806376671808146104a35780637b05afb5146104ab575f80fd5b80636d454d5114610480578063715018a614610493575f80fd5b80633385ccc21161021b57806340b5c837116101d1578063459598a2116101b7578063459598a21461043a57806368e763461461044d5780636bda1b991461046d575f80fd5b806340b5c8371461041f57806343352d6114610432575f80fd5b80633c323a1b116102015780633c323a1b1461039e5780633cb747bf146103b15780633d9353fe146103f8575f80fd5b80633385ccc2146103825780633b80242114610395575f80fd5b8063174e31c4116102705780632cc138be116102565780632cc138be146103505780632e787be31461035957806330158eea14610362575f80fd5b8063174e31c41461032a57806319fac8fd1461033d575f80fd5b80630be67fcc146102a15780630eb573af146102b65780630f3b7059146102c957806312a3e94714610313575b5f80fd5b6102b46102af366004614859565b610675565b005b6102b46102c4366004614898565b610cd6565b6102dc6102d73660046148d0565b610dd4565b6040805173ffffffffffffffffffffffffffffffffffffffff90941684526020840192909252908201526060015b60405180910390f35b61031c609a5481565b60405190815260200161030a565b6102b46103383660046148d0565b610e29565b6102b461034b366004614898565b610fde565b61031c60985481565b61031c60995481565b610375610370366004614859565b61112f565b60405161030a919061495b565b6102b4610390366004614a0e565b611399565b61031c609c5481565b6102b46103ac3660046148d0565b611bcc565b7f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161030a565b6103d37f000000000000000000000000000000000000000000000000000000000000000081565b6102b461042d366004614898565b61239f565b6103756124f3565b6103d3610448366004614898565b612750565b61046061045b366004614a0e565b612785565b60405161030a9190614a29565b6102b461047b366004614a82565b6127b5565b6102b461048e366004614ade565b612d42565b6102b46130d6565b6102b46130e9565b61031c61349c565b61031c6104b9366004614a0e565b60a06020525f908152604090205481565b6103d37f000000000000000000000000000000000000000000000000000000000000000081565b6105046104ff366004614a0e565b6134cc565b604051901515815260200161030a565b60335473ffffffffffffffffffffffffffffffffffffffff166103d3565b6103d37f000000000000000000000000000000000000000000000000000000000000000081565b6102b4610567366004614898565b613503565b61057f61057a366004614a0e565b613647565b60405161030a93929190614b15565b61031c61059c366004614a0e565b60a16020525f908152604090205481565b6103d37f000000000000000000000000000000000000000000000000000000000000000081565b61031c6105e2366004614a0e565b609e6020525f908152604090205481565b61031c610601366004614b52565b60a360209081525f928352604080842090915290825290205481565b6097546105049060ff1681565b6103d37f000000000000000000000000000000000000000000000000000000000000000081565b6102b4613706565b61031c609b5481565b6102b4610670366004614a0e565b6139eb565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614801561079157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610755573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107799190614b89565b73ffffffffffffffffffffffffffffffffffffffff16145b610849576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526044602482018190527f5374616b696e673a2066756e6374696f6e2063616e206f6e6c79206265206361908201527f6c6c65642066726f6d20746865206f74686572207374616b696e6720636f6e7460648201527f7261637400000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b5f805b82811015610c895760975460ff166108cc57609954609e5f86868581811061087657610876614ba4565b905060200201602081019061088b9190614a0e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541115610936565b609b54609e5f8686858181106108e4576108e4614ba4565b90506020020160208101906108f99190614a0e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411155b91505f609e5f86868581811061094e5761094e614ba4565b90506020020160208101906109639190614a0e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541115610c81575f6001609e5f8787868181106109bb576109bb614ba4565b90506020020160208101906109d09190614a0e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610a149190614bfe565b90505b609d54610a2690600190614bfe565b811015610b2c57609d610a3a826001614c11565b81548110610a4a57610a4a614ba4565b5f91825260209091200154609d805473ffffffffffffffffffffffffffffffffffffffff9092169183908110610a8257610a82614ba4565b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001609e5f609d8481548110610adf57610adf614ba4565b5f91825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400181208054909190610b1f908490614bfe565b9091555050600101610a17565b50609d805480610b3e57610b3e614c24565b5f8281526020812082017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055909101909155609e90858584818110610bad57610bad614ba4565b9050602002016020810190610bc29190614a0e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f90555f60a15f868685818110610c1457610c14614ba4565b9050602002016020810190610c299190614a0e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541115610c81576001609c5f828254610c7b9190614bfe565b90915550505b60010161084c565b507f3511bf213f9290ba907e91e12a43e8471251e1879580ae5509292a3514c23f618383604051610cbb929190614c51565b60405180910390a18015610cd157610cd1613a9f565b505050565b610cde613c46565b5f81118015610cef57506099548114155b610d7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f696e76616c6964206e65772073657175656e63657220736574206d617820736960448201527f7a650000000000000000000000000000000000000000000000000000000000006064820152608401610840565b609980549082905560408051828152602081018490527f98b982a120d9be7d9c68d85a1aed8158d1d52e517175bfb3eb4280692f19b1ed910160405180910390a1609b546099541015610dd057610dd0613a9f565b5050565b60a4602052815f5260405f208181548110610ded575f80fd5b5f91825260209091206003909102018054600182015460029092015473ffffffffffffffffffffffffffffffffffffffff909116935090915083565b610e31613cc7565b73ffffffffffffffffffffffffffffffffffffffff8216610f0e5773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016635cf20c7b336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018490526044015f604051808303815f87803b158015610ef3575f80fd5b505af1158015610f05573d5f803e3d5ffd5b50505050610fd4565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663996cba6883336040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152604481018490526064015f604051808303815f87803b158015610fbd575f80fd5b505af1158015610fcf573d5f803e3d5ffd5b505050505b610dd06001606555565b335f908152609e6020526040902054611053576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f6f6e6c79207374616b657220616c6c6f776564000000000000000000000000006044820152606401610840565b60148111156110be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f696e76616c696420636f6d6d697373696f6e00000000000000000000000000006044820152606401610840565b335f90815260a06020526040812082905560975460ff16156110f0576110e261349c565b6110ed906001614c11565b90505b604080518381526020810183905233917f6e500db30ce535d38852e318f333e9be41a3fec6c65d234ebb06203c896db9a5910160405180910390a25050565b60605f8267ffffffffffffffff81111561114b5761114b614cab565b60405190808252806020026020018201604052801561119757816020015b60408051606080820183525f8083526020830152918101919091528152602001906001900390816111695790505b5090505f5b8381101561138f576040518060600160405280609f5f8888868181106111c4576111c4614ba4565b90506020020160208101906111d99190614a0e565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409091015f908120549091168352910190609f9088888681811061122357611223614ba4565b90506020020160208101906112389190614a0e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101548152602001609f5f88888681811061128f5761128f614ba4565b90506020020160208101906112a49190614a0e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060020180546112eb90614cd8565b80601f016020809104026020016040519081016040528092919081815260200182805461131790614cd8565b80156113625780601f1061133957610100808354040283529160200191611362565b820191905f5260205f20905b81548152906001019060200180831161134557829003601f168201915b505050505081525082828151811061137c5761137c614ba4565b602090810291909101015260010161119c565b5090505b92915050565b6113a1613cc7565b6113ab3382613d41565b15611412576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f756e64656c65676174696f6e20756e636c61696d6564000000000000000000006044820152606401610840565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260a3602090815260408083203384529091529020546114a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f7374616b696e6720616d6f756e74206973207a65726f000000000000000000006044820152606401610840565b73ffffffffffffffffffffffffffffffffffffffff81165f908152609e602052604081205460975490159190819060ff161561150f576114e661349c565b6114f1906001614c11565b91508261150a57609a546115059083614c11565b61150c565b815b90505b6040805160608101825273ffffffffffffffffffffffffffffffffffffffff8681168083525f81815260a36020908152858220338084528183528784208054848901908152888a018b815283875260a486528a87208054600180820183559189528789208c5160039092020180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909b16178a558251908a015551600290980197909755908452908252829055925191815260a190925292812080549293929091906115df908490614bfe565b909155505073ffffffffffffffffffffffffffffffffffffffff85165f90815260a2602052604090206116129033613df1565b5073ffffffffffffffffffffffffffffffffffffffff85165f908152609e602052604090205484158015611648575060975460ff165b80156116555750609c5481105b156119415773ffffffffffffffffffffffffffffffffffffffff86165f908152609e602052604081205461168b90600190614bfe565b90505b6001609c5461169d9190614bfe565b81101561193f5760a15f609d83815481106116ba576116ba614ba4565b5f91825260208083209091015473ffffffffffffffffffffffffffffffffffffffff1683528201929092526040018120549060a190609d6116fc856001614c11565b8154811061170c5761170c614ba4565b5f91825260208083209091015473ffffffffffffffffffffffffffffffffffffffff1683528201929092526040019020541115611937575f609d828154811061175757611757614ba4565b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff169050609d611787836001614c11565b8154811061179757611797614ba4565b5f91825260209091200154609d805473ffffffffffffffffffffffffffffffffffffffff90921691849081106117cf576117cf614ba4565b5f91825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905580609d61182a846001614c11565b8154811061183a5761183a614ba4565b5f91825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055611892826001614c11565b609e5f609d85815481106118a8576118a8614ba4565b5f91825260208083209091015473ffffffffffffffffffffffffffffffffffffffff1683528201929092526040019020556118e4826002614c11565b609e5f609d6118f4866001614c11565b8154811061190457611904614ba4565b5f91825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001902055505b60010161168e565b505b84158015611971575073ffffffffffffffffffffffffffffffffffffffff86165f90815260a16020526040902054155b1561198e576001609c5f8282546119889190614bfe565b90915550505b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663ad8e12238733878660200151611a1760a25f8e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20613e19565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815273ffffffffffffffffffffffffffffffffffffffff958616600482015294909316602485015260448401919091526064830152608482015260a4015f604051808303815f87803b158015611a95575f80fd5b505af1158015611aa7573d5f803e3d5ffd5b50505050611ab23390565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f92039db29d8c0a1aa1433fe109c69488c8c5e51b23c9de7d303ad80c1fef778c84602001518787604051611b27939291909283526020830191909152604082015260600190565b60405180910390a384158015611b3f575060975460ff165b8015611b4d5750609b548111155b8015611bad5750609b5473ffffffffffffffffffffffffffffffffffffffff87165f908152609e60205260409020541180611bad5750609c5473ffffffffffffffffffffffffffffffffffffffff87165f908152609e6020526040902054115b15611bba57611bba613a9f565b5050505050611bc96001606555565b50565b73ffffffffffffffffffffffffffffffffffffffff82165f908152609e60205260409020548290611c59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6e6f74207374616b6572000000000000000000000000000000000000000000006044820152606401610840565b611c61613cc7565b5f8211611cca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c6964207374616b6520616d6f756e740000000000000000000000006044820152606401610840565b611cd43384613d41565b15611d3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f756e64656c65676174696f6e20756e636c61696d6564000000000000000000006044820152606401610840565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260a1602052604081208054849290611d6f908490614c11565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f90815260a36020908152604080832033845290915281208054849290611db3908490614c11565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f90815260a260205260409020611de69033613e22565b5073ffffffffffffffffffffffffffffffffffffffff83165f90815260a16020526040902054829003611e2b576001609c5f828254611e259190614c11565b90915550505b73ffffffffffffffffffffffffffffffffffffffff83165f908152609e602052604090205460975460ff168015611e625750600181115b15612142575f611e73600183614bfe565b90505b80156121405760a15f609d611e8c600185614bfe565b81548110611e9c57611e9c614ba4565b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460a15f609d8481548110611f1457611f14614ba4565b5f91825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001902054111561212e575f609d611f59600184614bfe565b81548110611f6957611f69614ba4565b5f91825260209091200154609d805473ffffffffffffffffffffffffffffffffffffffff90921692509083908110611fa357611fa3614ba4565b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff16609d611fd1600185614bfe565b81548110611fe157611fe1614ba4565b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080609d838154811061203a5761203a614ba4565b5f918252602082200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff93909316929092179091558290609e90609d612099600185614bfe565b815481106120a9576120a9614ba4565b5f91825260208083209091015473ffffffffffffffffffffffffffffffffffffffff1683528201929092526040019020556120e5826001614c11565b609e5f609d85815481106120fb576120fb614ba4565b5f91825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001902055505b8061213881614d23565b915050611e76565b505b6097545f9060ff16612154575f612167565b61215c61349c565b612167906001614c11565b73ffffffffffffffffffffffffffffffffffffffff86165f81815260a3602090815260408083203380855290835292819020548151908152918201859052805194955091937f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04929181900390910190a373ffffffffffffffffffffffffffffffffffffffff8581165f81815260a360209081526040808320338085529083528184205494845260a183528184205460a290935292207f00000000000000000000000000000000000000000000000000000000000000009094169363e16bcc32938a9392879261225590613e19565b73ffffffffffffffffffffffffffffffffffffffff8d165f90815260a3602052604081208d913373ffffffffffffffffffffffffffffffffffffffff9081168252602082019290925260409081015f205490517fffffffff0000000000000000000000000000000000000000000000000000000060e08c901b16815298821660048a01529616602488015260448701949094526064860192909252608485015260a48401521460c482015260e4015f604051808303815f87803b15801561231a575f80fd5b505af115801561232c573d5f803e3d5ffd5b5050505061234161233a3390565b3086613e43565b60975460ff1680156123545750609b5482115b8015612386575060995473ffffffffffffffffffffffffffffffffffffffff86165f908152609e602052604090205411155b1561239357612393613a9f565b5050610cd16001606555565b6123a7613c46565b60975460ff161580156123bb575042609854115b612421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f72657761726420616c72656164792073746172746564000000000000000000006044820152606401610840565b428111801561243a57506124386201518082614d84565b155b801561244857506098548114155b6124ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f696e76616c6964207265776172642073746172742074696d65000000000000006044820152606401610840565b609880549082905560408051828152602081018490527f91c38708087fb4ba51bd0e6a106cc1fbaf340479a2e81d18f2341e8c78f97555910160405180910390a15050565b609d546060905f9067ffffffffffffffff81111561251357612513614cab565b60405190808252806020026020018201604052801561255f57816020015b60408051606080820183525f8083526020830152918101919091528152602001906001900390816125315790505b5090505f5b609d5481101561274a576040518060600160405280609f5f609d858154811061258f5761258f614ba4565b5f91825260208083209091015473ffffffffffffffffffffffffffffffffffffffff90811684528382019490945260409092018120549092168352609d80549390910192609f929190869081106125e8576125e8614ba4565b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101548152602001609f5f609d858154811061266857612668614ba4565b5f91825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001902060020180546126a690614cd8565b80601f01602080910402602001604051908101604052809291908181526020018280546126d290614cd8565b801561271d5780601f106126f45761010080835404028352916020019161271d565b820191905f5260205f20905b81548152906001019060200180831161270057829003601f168201915b505050505081525082828151811061273757612737614ba4565b6020908102919091010152600101612564565b50919050565b609d818154811061275f575f80fd5b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260a260205260409020606090611393906140f1565b5f54610100900460ff16158080156127d357505f54600160ff909116105b806127ec5750303b1580156127ec57505f5460ff166001145b612878576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610840565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156128d4575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b5f8611612963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f73657175656e6365727353697a65206d7573742067726561746572207468616e60448201527f20300000000000000000000000000000000000000000000000000000000000006064820152608401610840565b5f85116129cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f696e76616c696420756e64656c65676174654c6f636b45706f636873000000006044820152606401610840565b42841180156129e557506129e36201518085614d84565b155b612a4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f696e76616c6964207265776172642073746172742074696d65000000000000006044820152606401610840565b81612ab2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f696e76616c696420696e697469616c207374616b6572730000000000000000006044820152606401610840565b612aba6140fd565b612ac261419b565b6099869055609a8590556098849055609b8290555f5b609b54811015612c6557838382818110612af457612af4614ba4565b9050602002810190612b069190614d97565b609f5f868685818110612b1b57612b1b614ba4565b9050602002810190612b2d9190614d97565b612b3b906020810190614a0e565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f20612b6a8282614e78565b905050609d848483818110612b8157612b81614ba4565b9050602002810190612b939190614d97565b612ba1906020810190614a0e565b8154600180820184555f93845260209093200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055612c02908290614c11565b609e5f868685818110612c1757612c17614ba4565b9050602002810190612c299190614d97565b612c37906020810190614a0e565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2055600101612ad8565b50604080515f8152602081018890527f98b982a120d9be7d9c68d85a1aed8158d1d52e517175bfb3eb4280692f19b1ed910160405180910390a1604080515f8152602081018690527f91c38708087fb4ba51bd0e6a106cc1fbaf340479a2e81d18f2341e8c78f97555910160405180910390a18015612d3a575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016148015612e5e57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e22573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e469190614b89565b73ffffffffffffffffffffffffffffffffffffffff16145b612f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526044602482018190527f5374616b696e673a2066756e6374696f6e2063616e206f6e6c79206265206361908201527f6c6c65642066726f6d20746865206f74686572207374616b696e6720636f6e7460648201527f7261637400000000000000000000000000000000000000000000000000000000608482015260a401610840565b609e5f612f216020840184614a0e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20545f0361300257609d612f706020830183614a0e565b81546001810183555f928352602080842090910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9390931692909217909155609d5491609e91612fdb90850185614a0e565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f20555b80609f5f6130136020840184614a0e565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f206130428282614e78565b5061305290506020820182614a0e565b73ffffffffffffffffffffffffffffffffffffffff167f058ecb29c230cd5df283c89e996187ed521393fe4546cd1b097921c4b2de293d602083013561309b6040850185614dd3565b6040516130aa93929190615035565b60405180910390a260975460ff161580156130c95750609954609d5411155b15611bc957611bc9613a9f565b6130de613c46565b6130e75f614239565b565b6130f1613c46565b609854421015613182576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f63616e2774207374617274206265666f7265207265776172642073746172742060448201527f74696d65000000000000000000000000000000000000000000000000000000006064820152608401610840565b5f609c54116131ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f6e6f6e652063616e6469646174650000000000000000000000000000000000006044820152606401610840565b609780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091555b609d5481101561342c575f5b818110156134235760a15f609d838154811061324657613246614ba4565b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460a15f609d85815481106132be576132be614ba4565b5f91825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001902054111561341b575f609d828154811061330957613309614ba4565b5f91825260209091200154609d805473ffffffffffffffffffffffffffffffffffffffff9092169250908490811061334357613343614ba4565b5f91825260209091200154609d805473ffffffffffffffffffffffffffffffffffffffff909216918490811061337b5761337b614ba4565b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080609d84815481106133d4576133d4614ba4565b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b600101613228565b5060010161321c565b505f5b609d5481101561349357613444816001614c11565b609e5f609d848154811061345a5761345a614ba4565b5f91825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205560010161342f565b506130e7613a9f565b5f60985442116134ab57505f90565b62015180609854426134bd9190614bfe565b6134c79190615088565b905090565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260a3602090815260408083203384529091528120541515611393565b335f908152609e6020526040902054613578576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f6f6e6c79207374616b657220616c6c6f776564000000000000000000000000006044820152606401610840565b613580613cc7565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166341302560336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018490526044015f604051808303815f87803b158015613627575f80fd5b505af1158015613639573d5f803e3d5ffd5b50505050611bc96001606555565b609f6020525f908152604090208054600182015460028301805473ffffffffffffffffffffffffffffffffffffffff90931693919261368590614cd8565b80601f01602080910402602001604051908101604052809291908181526020018280546136b190614cd8565b80156136fc5780601f106136d3576101008083540402835291602001916136fc565b820191905f5260205f20905b8154815290600101906020018083116136df57829003601f168201915b5050505050905083565b61370e613cc7565b5f805b335f90815260a460205260409020548110156139375761372f61349c565b335f90815260a46020526040902080548390811061374f5761374f614ba4565b905f5260205f209060030201600201541161392f57335f90815260a46020526040902080548290811061378457613784614ba4565b905f5260205f209060030201600101548261379f9190614c11565b335f90815260a46020526040902054909250600110156138ac57335f90815260a46020526040902080546137d590600190614bfe565b815481106137e5576137e5614ba4565b905f5260205f20906003020160a45f6137fb3390565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20828154811061384557613845614ba4565b5f9182526020909120825460039092020180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091178155600180830154908201556002918201549101555b335f90815260a4602052604090208054806138c9576138c9614c24565b5f8281526020812060037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019283020180547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600181018290556002015590555b600101613711565b505f81116139a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6e6f204d6f72706820746f6b656e20746f20636c61696d0000000000000000006044820152606401610840565b6139ab33826142af565b60405181815233907fcc3089abc79631b3c0c81414a72e237c08559073a970cf474e36ae965e382fb39060200160405180910390a2506130e76001606555565b6139f3613c46565b73ffffffffffffffffffffffffffffffffffffffff8116613a96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610840565b611bc981614239565b60995460975460ff1615613ac357609954609c541015613abe5750609c545b613ad4565b609954609d541015613ad45750609d545b5f8167ffffffffffffffff811115613aee57613aee614cab565b604051908082528060200260200182016040528015613b17578160200160208202803683370190505b5090505f5b82811015613b9e57609d8181548110613b3757613b37614ba4565b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828281518110613b7157613b71614ba4565b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600101613b1c565b506040517f9b8201a400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690639b8201a490613c11908490600401614a29565b5f604051808303815f87803b158015613c28575f80fd5b505af1158015613c3a573d5f803e3d5ffd5b50509151609b55505050565b60335473ffffffffffffffffffffffffffffffffffffffff1633146130e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610840565b600260655403613d33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610840565b6002606555565b6001606555565b5f805b73ffffffffffffffffffffffffffffffffffffffff84165f90815260a46020526040902054811015613de85773ffffffffffffffffffffffffffffffffffffffff8481165f90815260a46020526040902080549185169183908110613dab57613dab614ba4565b5f91825260209091206003909102015473ffffffffffffffffffffffffffffffffffffffff1603613de0576001915050611393565b600101613d44565b505f9392505050565b5f613e128373ffffffffffffffffffffffffffffffffffffffff8416614554565b9392505050565b5f611393825490565b5f613e128373ffffffffffffffffffffffffffffffffffffffff8416614637565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015613ed1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ef5919061509b565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301528581166024830152604482018590529192507f0000000000000000000000000000000000000000000000000000000000000000909116906323b872dd906064016020604051808303815f875af1158015613f94573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613fb891906150b2565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015614047573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061406b919061509b565b90505f831180156140845750826140828383614bfe565b145b6140ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f6d6f72706820746f6b656e207472616e73666572206661696c656400000000006044820152606401610840565b5050505050565b60605f613e1283614683565b5f54610100900460ff16614193576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610840565b6130e76146dc565b5f54610100900460ff16614231576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610840565b6130e761477b565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa15801561433d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614361919061509b565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303815f875af11580156143f8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061441c91906150b2565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa1580156144ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906144cf919061509b565b90505f831180156144e85750826144e68383614bfe565b145b61454e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f6d6f72706820746f6b656e207472616e73666572206661696c656400000000006044820152606401610840565b50505050565b5f818152600183016020526040812054801561462e575f614576600183614bfe565b85549091505f9061458990600190614bfe565b90508181146145e8575f865f0182815481106145a7576145a7614ba4565b905f5260205f200154905080875f0184815481106145c7576145c7614ba4565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806145f9576145f9614c24565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050611393565b5f915050611393565b5f81815260018301602052604081205461467c57508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155611393565b505f611393565b6060815f018054806020026020016040519081016040528092919081815260200182805480156146d057602002820191905f5260205f20905b8154815260200190600101908083116146bc575b50505050509050919050565b5f54610100900460ff16614772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610840565b6130e733614239565b5f54610100900460ff16613d3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610840565b5f8083601f840112614821575f80fd5b50813567ffffffffffffffff811115614838575f80fd5b6020830191508360208260051b8501011115614852575f80fd5b9250929050565b5f806020838503121561486a575f80fd5b823567ffffffffffffffff811115614880575f80fd5b61488c85828601614811565b90969095509350505050565b5f602082840312156148a8575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114611bc9575f80fd5b5f80604083850312156148e1575f80fd5b82356148ec816148af565b946020939093013593505050565b5f81518084525f5b8181101561491e57602081850181015186830182015201614902565b505f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b83811015614a00578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00185528151805173ffffffffffffffffffffffffffffffffffffffff168452878101518885015286015160608785018190526149ec818601836148fa565b968901969450505090860190600101614982565b509098975050505050505050565b5f60208284031215614a1e575f80fd5b8135613e12816148af565b602080825282518282018190525f9190848201906040850190845b81811015614a7657835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101614a44565b50909695505050505050565b5f805f805f60808688031215614a96575f80fd5b853594506020860135935060408601359250606086013567ffffffffffffffff811115614ac1575f80fd5b614acd88828901614811565b969995985093965092949392505050565b5f60208284031215614aee575f80fd5b813567ffffffffffffffff811115614b04575f80fd5b820160608185031215613e12575f80fd5b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201525f614b4960608301846148fa565b95945050505050565b5f8060408385031215614b63575f80fd5b8235614b6e816148af565b91506020830135614b7e816148af565b809150509250929050565b5f60208284031215614b99575f80fd5b8151613e12816148af565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561139357611393614bd1565b8082018082111561139357611393614bd1565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b60208082528181018390525f908460408401835b86811015614ca0578235614c78816148af565b73ffffffffffffffffffffffffffffffffffffffff1682529183019190830190600101614c65565b509695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b600181811c90821680614cec57607f821691505b60208210810361274a577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f81614d3157614d31614bd1565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f82614d9257614d92614d57565b500690565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112614dc9575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614e06575f80fd5b83018035915067ffffffffffffffff821115614e20575f80fd5b602001915036819003821315614852575f80fd5b601f821115610cd157805f5260205f20601f840160051c81016020851015614e595750805b601f840160051c820191505b818110156140ea575f8155600101614e65565b8135614e83816148af565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550600160208084013560018401556002830160408501357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1863603018112614f07575f80fd5b8501803567ffffffffffffffff811115614f1f575f80fd5b8036038483011315614f2f575f80fd5b614f4381614f3d8554614cd8565b85614e34565b5f601f821160018114614f95575f8315614f5f57508382018601355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b17855561502a565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015614fe157868501890135825593880193908901908801614fc2565b508482101561501e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88660031b161c198885880101351681555b505060018360011b0185555b505050505050505050565b83815260406020820152816040820152818360608301375f818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b5f8261509657615096614d57565b500490565b5f602082840312156150ab575f80fd5b5051919050565b5f602082840312156150c2575f80fd5b81518015158114613e12575f80fdfea164736f6c6343000818000a" +var L2StakingDeployedBin = "0x608060405234801561000f575f80fd5b506004361061029d575f3560e01c80636d454d51116101715780639168ae72116100d2578063c64814dd11610088578063e10911b11161006e578063e10911b114610651578063f0261bc214610659578063f2fde38b14610662575f80fd5b8063c64814dd14610600578063d55771411461062a575f80fd5b8063927ede2d116100b8578063927ede2d146105ad57806396ab994d146105d4578063b5d2e0dc146105e1575f80fd5b80639168ae721461056c57806391bd43a41461058e575f80fd5b8063831cfb58116101275780638da5cb5b1161010d5780638da5cb5b146105145780638e21d5fb146105325780638eca493a14610559575f80fd5b8063831cfb58146104ca57806384d7d1d4146104f1575f80fd5b8063746c8ae111610157578063746c8ae11461049b57806376671808146104a35780637b05afb5146104ab575f80fd5b80636d454d5114610480578063715018a614610493575f80fd5b80633385ccc21161021b57806340b5c837116101d1578063459598a2116101b7578063459598a21461043a57806368e763461461044d5780636bda1b991461046d575f80fd5b806340b5c8371461041f57806343352d6114610432575f80fd5b80633c323a1b116102015780633c323a1b1461039e5780633cb747bf146103b15780633d9353fe146103f8575f80fd5b80633385ccc2146103825780633b80242114610395575f80fd5b8063174e31c4116102705780632cc138be116102565780632cc138be146103505780632e787be31461035957806330158eea14610362575f80fd5b8063174e31c41461032a57806319fac8fd1461033d575f80fd5b80630be67fcc146102a15780630eb573af146102b65780630f3b7059146102c957806312a3e94714610313575b5f80fd5b6102b46102af36600461485a565b610675565b005b6102b46102c4366004614899565b610c63565b6102dc6102d73660046148d1565b610d61565b6040805173ffffffffffffffffffffffffffffffffffffffff90941684526020840192909252908201526060015b60405180910390f35b61031c609a5481565b60405190815260200161030a565b6102b46103383660046148d1565b610db6565b6102b461034b366004614899565b610f6b565b61031c60985481565b61031c60995481565b61037561037036600461485a565b6110c1565b60405161030a919061495c565b6102b4610390366004614a0f565b61132b565b61031c609c5481565b6102b46103ac3660046148d1565b611b5f565b7f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161030a565b6103d37f000000000000000000000000000000000000000000000000000000000000000081565b6102b461042d366004614899565b612332565b610375612486565b6103d3610448366004614899565b6126e3565b61046061045b366004614a0f565b612718565b60405161030a9190614a2a565b6102b461047b366004614a83565b612748565b6102b461048e366004614adf565b612cd5565b6102b4613069565b6102b461307c565b61031c61342f565b61031c6104b9366004614a0f565b60a06020525f908152604090205481565b6103d37f000000000000000000000000000000000000000000000000000000000000000081565b6105046104ff366004614a0f565b6134bd565b604051901515815260200161030a565b60335473ffffffffffffffffffffffffffffffffffffffff166103d3565b6103d37f000000000000000000000000000000000000000000000000000000000000000081565b6102b4610567366004614899565b6134f4565b61057f61057a366004614a0f565b613638565b60405161030a93929190614b16565b61031c61059c366004614a0f565b60a16020525f908152604090205481565b6103d37f000000000000000000000000000000000000000000000000000000000000000081565b6097546105049060ff1681565b61031c6105ef366004614a0f565b609e6020525f908152604090205481565b61031c61060e366004614b53565b60a360209081525f928352604080842090915290825290205481565b6103d37f000000000000000000000000000000000000000000000000000000000000000081565b6102b46136f7565b61031c609b5481565b6102b4610670366004614a0f565b6139ec565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614801561079157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610755573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107799190614b8a565b73ffffffffffffffffffffffffffffffffffffffff16145b610849576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526044602482018190527f5374616b696e673a2066756e6374696f6e2063616e206f6e6c79206265206361908201527f6c6c65642066726f6d20746865206f74686572207374616b696e6720636f6e7460648201527f7261637400000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b5f805b82811015610c1657609b54609e5f86868581811061086c5761086c614ba5565b90506020020160208101906108819190614a0f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054116108c557600191505b5f609e5f8686858181106108db576108db614ba5565b90506020020160208101906108f09190614a0f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541115610c0e575f6001609e5f87878681811061094857610948614ba5565b905060200201602081019061095d9190614a0f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546109a19190614bff565b90505b609d546109b390600190614bff565b811015610ab957609d6109c7826001614c12565b815481106109d7576109d7614ba5565b5f91825260209091200154609d805473ffffffffffffffffffffffffffffffffffffffff9092169183908110610a0f57610a0f614ba5565b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001609e5f609d8481548110610a6c57610a6c614ba5565b5f91825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400181208054909190610aac908490614bff565b90915550506001016109a4565b50609d805480610acb57610acb614c25565b5f8281526020812082017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055909101909155609e90858584818110610b3a57610b3a614ba5565b9050602002016020810190610b4f9190614a0f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f90555f60a15f868685818110610ba157610ba1614ba5565b9050602002016020810190610bb69190614a0f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541115610c0e576001609c5f828254610c089190614bff565b90915550505b60010161084c565b507f3511bf213f9290ba907e91e12a43e8471251e1879580ae5509292a3514c23f618383604051610c48929190614c52565b60405180910390a18015610c5e57610c5e613aa0565b505050565b610c6b613c47565b5f81118015610c7c57506099548114155b610d08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f696e76616c6964206e65772073657175656e63657220736574206d617820736960448201527f7a650000000000000000000000000000000000000000000000000000000000006064820152608401610840565b609980549082905560408051828152602081018490527f98b982a120d9be7d9c68d85a1aed8158d1d52e517175bfb3eb4280692f19b1ed910160405180910390a1609b546099541015610d5d57610d5d613aa0565b5050565b60a4602052815f5260405f208181548110610d7a575f80fd5b5f91825260209091206003909102018054600182015460029092015473ffffffffffffffffffffffffffffffffffffffff909116935090915083565b610dbe613cc8565b73ffffffffffffffffffffffffffffffffffffffff8216610e9b5773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016635cf20c7b336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018490526044015f604051808303815f87803b158015610e80575f80fd5b505af1158015610e92573d5f803e3d5ffd5b50505050610f61565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663996cba6883336040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152604481018490526064015f604051808303815f87803b158015610f4a575f80fd5b505af1158015610f5c573d5f803e3d5ffd5b505050505b610d5d6001606555565b335f908152609e6020526040902054610fe0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f6f6e6c79207374616b657220616c6c6f776564000000000000000000000000006044820152606401610840565b601481111561104b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f696e76616c696420636f6d6d697373696f6e00000000000000000000000000006044820152606401610840565b335f90815260a06020526040812082905560975460ff1661106c575f61107f565b61107461342f565b61107f906001614c12565b604080518481526020810183905291925033917f6e500db30ce535d38852e318f333e9be41a3fec6c65d234ebb06203c896db9a5910160405180910390a25050565b60605f8267ffffffffffffffff8111156110dd576110dd614cac565b60405190808252806020026020018201604052801561112957816020015b60408051606080820183525f8083526020830152918101919091528152602001906001900390816110fb5790505b5090505f5b83811015611321576040518060600160405280609f5f88888681811061115657611156614ba5565b905060200201602081019061116b9190614a0f565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409091015f908120549091168352910190609f908888868181106111b5576111b5614ba5565b90506020020160208101906111ca9190614a0f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101548152602001609f5f88888681811061122157611221614ba5565b90506020020160208101906112369190614a0f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600201805461127d90614cd9565b80601f01602080910402602001604051908101604052809291908181526020018280546112a990614cd9565b80156112f45780601f106112cb576101008083540402835291602001916112f4565b820191905f5260205f20905b8154815290600101906020018083116112d757829003601f168201915b505050505081525082828151811061130e5761130e614ba5565b602090810291909101015260010161112e565b5090505b92915050565b611333613cc8565b61133d3382613d42565b156113a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f756e64656c65676174696f6e20756e636c61696d6564000000000000000000006044820152606401610840565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260a36020908152604080832033845290915290205461143a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f7374616b696e6720616d6f756e74206973207a65726f000000000000000000006044820152606401610840565b73ffffffffffffffffffffffffffffffffffffffff81165f908152609e60205260408120546097549015919060ff16611473575f611486565b61147b61342f565b611486906001614c12565b6097549091505f9060ff16801561149b575082155b6114a557816114b2565b609a546114b29083614c12565b6040805160608101825273ffffffffffffffffffffffffffffffffffffffff8781168083525f81815260a36020908152858220338084528183528784208054848901908152888a018b815283875260a486528a87208054600180820183559189528789208c5160039092020180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909b16178a558251908a015551600290980197909755908452908252829055925191815260a190925292812080549495509193611581908490614bff565b909155505073ffffffffffffffffffffffffffffffffffffffff85165f90815260a2602052604090206115b49033613df2565b5073ffffffffffffffffffffffffffffffffffffffff85165f908152609e6020526040902054841580156115ea575060975460ff165b80156115f75750609c5481105b156118e35773ffffffffffffffffffffffffffffffffffffffff86165f908152609e602052604081205461162d90600190614bff565b90505b6001609c5461163f9190614bff565b8110156118e15760a15f609d838154811061165c5761165c614ba5565b5f91825260208083209091015473ffffffffffffffffffffffffffffffffffffffff1683528201929092526040018120549060a190609d61169e856001614c12565b815481106116ae576116ae614ba5565b5f91825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205411156118d9575f609d82815481106116f9576116f9614ba5565b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff169050609d611729836001614c12565b8154811061173957611739614ba5565b5f91825260209091200154609d805473ffffffffffffffffffffffffffffffffffffffff909216918490811061177157611771614ba5565b5f91825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905580609d6117cc846001614c12565b815481106117dc576117dc614ba5565b5f91825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055611834826001614c12565b609e5f609d858154811061184a5761184a614ba5565b5f91825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001902055611886826002614c12565b609e5f609d611896866001614c12565b815481106118a6576118a6614ba5565b5f91825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001902055505b600101611630565b505b84158015611913575073ffffffffffffffffffffffffffffffffffffffff86165f90815260a16020526040902054155b15611930576001609c5f82825461192a9190614bff565b90915550505b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663ad8e1223873373ffffffffffffffffffffffffffffffffffffffff8a165f90815260a1602090815260408083205460a29092529091208991906119aa90613e1a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815273ffffffffffffffffffffffffffffffffffffffff958616600482015294909316602485015260448401919091526064830152608482015260a4015f604051808303815f87803b158015611a28575f80fd5b505af1158015611a3a573d5f803e3d5ffd5b50505050611a453390565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f92039db29d8c0a1aa1433fe109c69488c8c5e51b23c9de7d303ad80c1fef778c84602001518787604051611aba939291909283526020830191909152604082015260600190565b60405180910390a384158015611ad2575060975460ff165b8015611ae05750609b548111155b8015611b405750609b5473ffffffffffffffffffffffffffffffffffffffff87165f908152609e60205260409020541180611b405750609c5473ffffffffffffffffffffffffffffffffffffffff87165f908152609e6020526040902054115b15611b4d57611b4d613aa0565b5050505050611b5c6001606555565b50565b73ffffffffffffffffffffffffffffffffffffffff82165f908152609e60205260409020548290611bec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6e6f74207374616b6572000000000000000000000000000000000000000000006044820152606401610840565b611bf4613cc8565b5f8211611c5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c6964207374616b6520616d6f756e740000000000000000000000006044820152606401610840565b611c673384613d42565b15611cce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f756e64656c65676174696f6e20756e636c61696d6564000000000000000000006044820152606401610840565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260a1602052604081208054849290611d02908490614c12565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f90815260a36020908152604080832033845290915281208054849290611d46908490614c12565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f90815260a260205260409020611d799033613e23565b5073ffffffffffffffffffffffffffffffffffffffff83165f90815260a16020526040902054829003611dbe576001609c5f828254611db89190614c12565b90915550505b73ffffffffffffffffffffffffffffffffffffffff83165f908152609e602052604090205460975460ff168015611df55750600181115b156120d5575f611e06600183614bff565b90505b80156120d35760a15f609d611e1f600185614bff565b81548110611e2f57611e2f614ba5565b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460a15f609d8481548110611ea757611ea7614ba5565b5f91825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205411156120c1575f609d611eec600184614bff565b81548110611efc57611efc614ba5565b5f91825260209091200154609d805473ffffffffffffffffffffffffffffffffffffffff90921692509083908110611f3657611f36614ba5565b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff16609d611f64600185614bff565b81548110611f7457611f74614ba5565b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080609d8381548110611fcd57611fcd614ba5565b5f918252602082200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff93909316929092179091558290609e90609d61202c600185614bff565b8154811061203c5761203c614ba5565b5f91825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001902055612078826001614c12565b609e5f609d858154811061208e5761208e614ba5565b5f91825260208083209091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001902055505b806120cb81614d24565b915050611e09565b505b6097545f9060ff166120e7575f6120fa565b6120ef61342f565b6120fa906001614c12565b73ffffffffffffffffffffffffffffffffffffffff86165f81815260a3602090815260408083203380855290835292819020548151908152918201859052805194955091937f24d7bda8602b916d64417f0dbfe2e2e88ec9b1157bd9f596dfdb91ba26624e04929181900390910190a373ffffffffffffffffffffffffffffffffffffffff8581165f81815260a360209081526040808320338085529083528184205494845260a183528184205460a290935292207f00000000000000000000000000000000000000000000000000000000000000009094169363e16bcc32938a939287926121e890613e1a565b73ffffffffffffffffffffffffffffffffffffffff8d165f90815260a3602052604081208d913373ffffffffffffffffffffffffffffffffffffffff9081168252602082019290925260409081015f205490517fffffffff0000000000000000000000000000000000000000000000000000000060e08c901b16815298821660048a01529616602488015260448701949094526064860192909252608485015260a48401521460c482015260e4015f604051808303815f87803b1580156122ad575f80fd5b505af11580156122bf573d5f803e3d5ffd5b505050506122d46122cd3390565b3086613e44565b60975460ff1680156122e75750609b5482115b8015612319575060995473ffffffffffffffffffffffffffffffffffffffff86165f908152609e602052604090205411155b1561232657612326613aa0565b5050610c5e6001606555565b61233a613c47565b60975460ff1615801561234e575042609854115b6123b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f72657761726420616c72656164792073746172746564000000000000000000006044820152606401610840565b42811180156123cd57506123cb6201518082614d85565b155b80156123db57506098548114155b612441576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f696e76616c6964207265776172642073746172742074696d65000000000000006044820152606401610840565b609880549082905560408051828152602081018490527f91c38708087fb4ba51bd0e6a106cc1fbaf340479a2e81d18f2341e8c78f97555910160405180910390a15050565b609d546060905f9067ffffffffffffffff8111156124a6576124a6614cac565b6040519080825280602002602001820160405280156124f257816020015b60408051606080820183525f8083526020830152918101919091528152602001906001900390816124c45790505b5090505f5b609d548110156126dd576040518060600160405280609f5f609d858154811061252257612522614ba5565b5f91825260208083209091015473ffffffffffffffffffffffffffffffffffffffff90811684528382019490945260409092018120549092168352609d80549390910192609f9291908690811061257b5761257b614ba5565b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101548152602001609f5f609d85815481106125fb576125fb614ba5565b5f91825260208083209091015473ffffffffffffffffffffffffffffffffffffffff1683528201929092526040019020600201805461263990614cd9565b80601f016020809104026020016040519081016040528092919081815260200182805461266590614cd9565b80156126b05780601f10612687576101008083540402835291602001916126b0565b820191905f5260205f20905b81548152906001019060200180831161269357829003601f168201915b50505050508152508282815181106126ca576126ca614ba5565b60209081029190910101526001016124f7565b50919050565b609d81815481106126f2575f80fd5b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260a260205260409020606090611325906140f2565b5f54610100900460ff161580801561276657505f54600160ff909116105b8061277f5750303b15801561277f57505f5460ff166001145b61280b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610840565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015612867575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b5f86116128f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f73657175656e6365727353697a65206d7573742067726561746572207468616e60448201527f20300000000000000000000000000000000000000000000000000000000000006064820152608401610840565b5f851161295f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f696e76616c696420756e64656c65676174654c6f636b45706f636873000000006044820152606401610840565b428411801561297857506129766201518085614d85565b155b6129de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f696e76616c6964207265776172642073746172742074696d65000000000000006044820152606401610840565b81612a45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f696e76616c696420696e697469616c207374616b6572730000000000000000006044820152606401610840565b612a4d6140fe565b612a5561419c565b6099869055609a8590556098849055609b8290555f5b609b54811015612bf857838382818110612a8757612a87614ba5565b9050602002810190612a999190614d98565b609f5f868685818110612aae57612aae614ba5565b9050602002810190612ac09190614d98565b612ace906020810190614a0f565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f20612afd8282614e79565b905050609d848483818110612b1457612b14614ba5565b9050602002810190612b269190614d98565b612b34906020810190614a0f565b8154600180820184555f93845260209093200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055612b95908290614c12565b609e5f868685818110612baa57612baa614ba5565b9050602002810190612bbc9190614d98565b612bca906020810190614a0f565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2055600101612a6b565b50604080515f8152602081018890527f98b982a120d9be7d9c68d85a1aed8158d1d52e517175bfb3eb4280692f19b1ed910160405180910390a1604080515f8152602081018690527f91c38708087fb4ba51bd0e6a106cc1fbaf340479a2e81d18f2341e8c78f97555910160405180910390a18015612ccd575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016148015612df157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b8152600401602060405180830381865afa158015612db5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612dd99190614b8a565b73ffffffffffffffffffffffffffffffffffffffff16145b612ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526044602482018190527f5374616b696e673a2066756e6374696f6e2063616e206f6e6c79206265206361908201527f6c6c65642066726f6d20746865206f74686572207374616b696e6720636f6e7460648201527f7261637400000000000000000000000000000000000000000000000000000000608482015260a401610840565b609e5f612eb46020840184614a0f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20545f03612f9557609d612f036020830183614a0f565b81546001810183555f928352602080842090910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9390931692909217909155609d5491609e91612f6e90850185614a0f565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f20555b80609f5f612fa66020840184614a0f565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f20612fd58282614e79565b50612fe590506020820182614a0f565b73ffffffffffffffffffffffffffffffffffffffff167f058ecb29c230cd5df283c89e996187ed521393fe4546cd1b097921c4b2de293d602083013561302e6040850185614dd4565b60405161303d93929190615036565b60405180910390a260975460ff1615801561305c5750609954609d5411155b15611b5c57611b5c613aa0565b613071613c47565b61307a5f61423a565b565b613084613c47565b609854421015613115576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f63616e2774207374617274206265666f7265207265776172642073746172742060448201527f74696d65000000000000000000000000000000000000000000000000000000006064820152608401610840565b5f609c5411613180576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f6e6f6e652063616e6469646174650000000000000000000000000000000000006044820152606401610840565b609780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091555b609d548110156133bf575f5b818110156133b65760a15f609d83815481106131d9576131d9614ba5565b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460a15f609d858154811061325157613251614ba5565b5f91825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205411156133ae575f609d828154811061329c5761329c614ba5565b5f91825260209091200154609d805473ffffffffffffffffffffffffffffffffffffffff909216925090849081106132d6576132d6614ba5565b5f91825260209091200154609d805473ffffffffffffffffffffffffffffffffffffffff909216918490811061330e5761330e614ba5565b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080609d848154811061336757613367614ba5565b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b6001016131bb565b506001016131af565b505f5b609d54811015613426576133d7816001614c12565b609e5f609d84815481106133ed576133ed614ba5565b5f91825260208083209091015473ffffffffffffffffffffffffffffffffffffffff1683528201929092526040019020556001016133c2565b5061307a613aa0565b5f60985442101561349c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f726577617264206973206e6f74207374617274656420796574000000000000006044820152606401610840565b62015180609854426134ae9190614bff565b6134b89190615089565b905090565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260a3602090815260408083203384529091528120541515611325565b335f908152609e6020526040902054613569576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f6f6e6c79207374616b657220616c6c6f776564000000000000000000000000006044820152606401610840565b613571613cc8565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166341302560336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018490526044015f604051808303815f87803b158015613618575f80fd5b505af115801561362a573d5f803e3d5ffd5b50505050611b5c6001606555565b609f6020525f908152604090208054600182015460028301805473ffffffffffffffffffffffffffffffffffffffff90931693919261367690614cd9565b80601f01602080910402602001604051908101604052809291908181526020018280546136a290614cd9565b80156136ed5780601f106136c4576101008083540402835291602001916136ed565b820191905f5260205f20905b8154815290600101906020018083116136d057829003601f168201915b5050505050905083565b6136ff613cc8565b5f805b335f90815260a460205260409020548110156139385760975460ff161580613760575061372d61342f565b335f90815260a46020526040902080548390811061374d5761374d614ba5565b905f5260205f2090600302016002015411155b1561393057335f90815260a46020526040902080548290811061378557613785614ba5565b905f5260205f20906003020160010154826137a09190614c12565b335f90815260a46020526040902054909250600110156138ad57335f90815260a46020526040902080546137d690600190614bff565b815481106137e6576137e6614ba5565b905f5260205f20906003020160a45f6137fc3390565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20828154811061384657613846614ba5565b5f9182526020909120825460039092020180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091178155600180830154908201556002918201549101555b335f90815260a4602052604090208054806138ca576138ca614c25565b5f8281526020812060037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019283020180547fffffffffffffffffffffffff0000000000000000000000000000000000000000168155600181018290556002015590555b600101613702565b505f81116139a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6e6f204d6f72706820746f6b656e20746f20636c61696d0000000000000000006044820152606401610840565b6139ac33826142b0565b60405181815233907fcc3089abc79631b3c0c81414a72e237c08559073a970cf474e36ae965e382fb39060200160405180910390a25061307a6001606555565b6139f4613c47565b73ffffffffffffffffffffffffffffffffffffffff8116613a97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610840565b611b5c8161423a565b60995460975460ff1615613ac457609954609c541015613abf5750609c545b613ad5565b609954609d541015613ad55750609d545b5f8167ffffffffffffffff811115613aef57613aef614cac565b604051908082528060200260200182016040528015613b18578160200160208202803683370190505b5090505f5b82811015613b9f57609d8181548110613b3857613b38614ba5565b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828281518110613b7257613b72614ba5565b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600101613b1d565b506040517f9b8201a400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690639b8201a490613c12908490600401614a2a565b5f604051808303815f87803b158015613c29575f80fd5b505af1158015613c3b573d5f803e3d5ffd5b50509151609b55505050565b60335473ffffffffffffffffffffffffffffffffffffffff16331461307a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610840565b600260655403613d34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610840565b6002606555565b6001606555565b5f805b73ffffffffffffffffffffffffffffffffffffffff84165f90815260a46020526040902054811015613de95773ffffffffffffffffffffffffffffffffffffffff8481165f90815260a46020526040902080549185169183908110613dac57613dac614ba5565b5f91825260209091206003909102015473ffffffffffffffffffffffffffffffffffffffff1603613de1576001915050611325565b600101613d45565b505f9392505050565b5f613e138373ffffffffffffffffffffffffffffffffffffffff8416614555565b9392505050565b5f611325825490565b5f613e138373ffffffffffffffffffffffffffffffffffffffff8416614638565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015613ed2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ef6919061509c565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301528581166024830152604482018590529192507f0000000000000000000000000000000000000000000000000000000000000000909116906323b872dd906064016020604051808303815f875af1158015613f95573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613fb991906150b3565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa158015614048573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061406c919061509c565b90505f831180156140855750826140838383614bff565b145b6140eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f6d6f72706820746f6b656e207472616e73666572206661696c656400000000006044820152606401610840565b5050505050565b60605f613e1383614684565b5f54610100900460ff16614194576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610840565b61307a6146dd565b5f54610100900460ff16614232576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610840565b61307a61477c565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa15801561433e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614362919061509c565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303815f875af11580156143f9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061441d91906150b3565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301525f917f0000000000000000000000000000000000000000000000000000000000000000909116906370a0823190602401602060405180830381865afa1580156144ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906144d0919061509c565b90505f831180156144e95750826144e78383614bff565b145b61454f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f6d6f72706820746f6b656e207472616e73666572206661696c656400000000006044820152606401610840565b50505050565b5f818152600183016020526040812054801561462f575f614577600183614bff565b85549091505f9061458a90600190614bff565b90508181146145e9575f865f0182815481106145a8576145a8614ba5565b905f5260205f200154905080875f0184815481106145c8576145c8614ba5565b5f918252602080832090910192909255918252600188019052604090208390555b85548690806145fa576145fa614c25565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050611325565b5f915050611325565b5f81815260018301602052604081205461467d57508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155611325565b505f611325565b6060815f018054806020026020016040519081016040528092919081815260200182805480156146d157602002820191905f5260205f20905b8154815260200190600101908083116146bd575b50505050509050919050565b5f54610100900460ff16614773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610840565b61307a3361423a565b5f54610100900460ff16613d3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610840565b5f8083601f840112614822575f80fd5b50813567ffffffffffffffff811115614839575f80fd5b6020830191508360208260051b8501011115614853575f80fd5b9250929050565b5f806020838503121561486b575f80fd5b823567ffffffffffffffff811115614881575f80fd5b61488d85828601614812565b90969095509350505050565b5f602082840312156148a9575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114611b5c575f80fd5b5f80604083850312156148e2575f80fd5b82356148ed816148b0565b946020939093013593505050565b5f81518084525f5b8181101561491f57602081850181015186830182015201614903565b505f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b83811015614a01578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00185528151805173ffffffffffffffffffffffffffffffffffffffff168452878101518885015286015160608785018190526149ed818601836148fb565b968901969450505090860190600101614983565b509098975050505050505050565b5f60208284031215614a1f575f80fd5b8135613e13816148b0565b602080825282518282018190525f9190848201906040850190845b81811015614a7757835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101614a45565b50909695505050505050565b5f805f805f60808688031215614a97575f80fd5b853594506020860135935060408601359250606086013567ffffffffffffffff811115614ac2575f80fd5b614ace88828901614812565b969995985093965092949392505050565b5f60208284031215614aef575f80fd5b813567ffffffffffffffff811115614b05575f80fd5b820160608185031215613e13575f80fd5b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201525f614b4a60608301846148fb565b95945050505050565b5f8060408385031215614b64575f80fd5b8235614b6f816148b0565b91506020830135614b7f816148b0565b809150509250929050565b5f60208284031215614b9a575f80fd5b8151613e13816148b0565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561132557611325614bd2565b8082018082111561132557611325614bd2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b60208082528181018390525f908460408401835b86811015614ca1578235614c79816148b0565b73ffffffffffffffffffffffffffffffffffffffff1682529183019190830190600101614c66565b509695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b600181811c90821680614ced57607f821691505b6020821081036126dd577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f81614d3257614d32614bd2565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f82614d9357614d93614d58565b500690565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112614dca575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614e07575f80fd5b83018035915067ffffffffffffffff821115614e21575f80fd5b602001915036819003821315614853575f80fd5b601f821115610c5e57805f5260205f20601f840160051c81016020851015614e5a5750805b601f840160051c820191505b818110156140eb575f8155600101614e66565b8135614e84816148b0565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550600160208084013560018401556002830160408501357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1863603018112614f08575f80fd5b8501803567ffffffffffffffff811115614f20575f80fd5b8036038483011315614f30575f80fd5b614f4481614f3e8554614cd9565b85614e35565b5f601f821160018114614f96575f8315614f6057508382018601355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b17855561502b565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015614fe257868501890135825593880193908901908801614fc3565b508482101561501f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88660031b161c198885880101351681555b505060018360011b0185555b505050505050505050565b83815260406020820152816040820152818360608301375f818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b5f8261509757615097614d58565b500490565b5f602082840312156150ac575f80fd5b5051919050565b5f602082840312156150c3575f80fd5b81518015158114613e13575f80fdfea164736f6c6343000818000a" func init() { if err := json.Unmarshal([]byte(L2StakingStorageLayoutJSON), L2StakingStorageLayout); err != nil { diff --git a/bindings/bindings/l2txfeevault.go b/bindings/bindings/l2txfeevault.go index 5f026aed0..430065f8d 100644 --- a/bindings/bindings/l2txfeevault.go +++ b/bindings/bindings/l2txfeevault.go @@ -31,7 +31,7 @@ var ( // L2TxFeeVaultMetaData contains all meta data concerning the L2TxFeeVault contract. var L2TxFeeVaultMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_minWithdrawalAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_oldOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldMessenger\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newMessenger\",\"type\":\"address\"}],\"name\":\"UpdateMessenger\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldMinWithdrawAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newMinWithdrawAmount\",\"type\":\"uint256\"}],\"name\":\"UpdateMinWithdrawAmount\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldRecipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newRecipient\",\"type\":\"address\"}],\"name\":\"UpdateRecipient\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"messenger\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minWithdrawAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"recipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalProcessed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newMessenger\",\"type\":\"address\"}],\"name\":\"updateMessenger\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newMinWithdrawAmount\",\"type\":\"uint256\"}],\"name\":\"updateMinWithdrawAmount\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newRecipient\",\"type\":\"address\"}],\"name\":\"updateRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x608060405234801561000f575f80fd5b50604051610b8f380380610b8f83398101604081905261002e916100ca565b61003783610060565b600155600380546001600160a01b0319166001600160a01b039290921691909117905550610103565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146100c5575f80fd5b919050565b5f805f606084860312156100dc575f80fd5b6100e5846100af565b92506100f3602085016100af565b9150604084015190509250925092565b610a7f806101105f395ff3fe6080604052600436106100c6575f3560e01c806384411d6511610071578063f2fde38b1161004c578063f2fde38b1461021e578063feec756c1461023d578063ff4f35461461025c575f80fd5b806384411d65146101bf5780638da5cb5b146101d45780639e7adc79146101ff575f80fd5b8063457e1a49116100a1578063457e1a491461015c57806366d003ac1461017f578063715018a6146101ab575f80fd5b80632e1a7d4d146100d15780633cb747bf146100f25780633ccfd60b14610148575f80fd5b366100cd57005b5f80fd5b3480156100dc575f80fd5b506100f06100eb36600461098b565b61027b565b005b3480156100fd575f80fd5b5060025461011e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b348015610153575f80fd5b506100f06104c8565b348015610167575f80fd5b5061017160015481565b60405190815260200161013f565b34801561018a575f80fd5b5060035461011e9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101b6575f80fd5b506100f06104d5565b3480156101ca575f80fd5b5061017160045481565b3480156101df575f80fd5b505f5461011e9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561020a575f80fd5b506100f06102193660046109a2565b610560565b348015610229575f80fd5b506100f06102383660046109a2565b610656565b348015610248575f80fd5b506100f06102573660046109a2565b61075c565b348015610267575f80fd5b506100f061027636600461098b565b610852565b600154811015610338576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f4665655661756c743a207769746864726177616c20616d6f756e74206d75737460448201527f2062652067726561746572207468616e206d696e696d756d207769746864726160648201527f77616c20616d6f756e7400000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b47808211156103c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4665655661756c743a20696e73756666696369656e742062616c616e6365207460448201527f6f20776974686472617700000000000000000000000000000000000000000000606482015260840161032f565b60048054830190556003546040805184815273ffffffffffffffffffffffffffffffffffffffff90921660208301523382820152517fc8a211cc64b6ed1b50595a9fcb1932b6d1e5a6e8ef15b60e5b1f988ea9086bba9181900360600190a1600254600354604080516020810182525f80825291517fb2267a7b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9485169463b2267a7b9488946104969491909216928592906004016109dc565b5f604051808303818588803b1580156104ad575f80fd5b505af11580156104bf573d5f803e3d5ffd5b50505050505050565b476104d28161027b565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161032f565b61055e5f610917565b565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146105e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161032f565b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f1c928c417a10a21c3cddad148c5dba5d710e4b1442d6d8a36de345935ad84612905f90a35050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146106d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161032f565b73ffffffffffffffffffffffffffffffffffffffff8116610753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6e6577206f776e657220697320746865207a65726f2061646472657373000000604482015260640161032f565b6104d281610917565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146107dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161032f565b6003805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f7e1e96961a397c8aa26162fe259cc837afc95e33aad4945ddc61c18dabb7a6ad905f90a35050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146108d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161032f565b600180549082905560408051828152602081018490527f0d3c80219fe57713b9f9c83d1e51426792d0c14d8e330e65b102571816140965910160405180910390a15050565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f6020828403121561099b575f80fd5b5035919050565b5f602082840312156109b2575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146109d5575f80fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff851681525f60208560208401526080604084015284518060808501525f5b81811015610a2b5786810183015185820160a001528201610a0f565b505f60a0828601015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050508260608301529594505050505056fea164736f6c6343000818000a", + Bin: "0x608060405234801561000f575f80fd5b50604051610c8f380380610c8f83398101604081905261002e916100ca565b61003783610060565b600155600380546001600160a01b0319166001600160a01b039290921691909117905550610103565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146100c5575f80fd5b919050565b5f805f606084860312156100dc575f80fd5b6100e5846100af565b92506100f3602085016100af565b9150604084015190509250925092565b610b7f806101105f395ff3fe6080604052600436106100c6575f3560e01c806384411d6511610071578063f2fde38b1161004c578063f2fde38b1461021e578063feec756c1461023d578063ff4f35461461025c575f80fd5b806384411d65146101bf5780638da5cb5b146101d45780639e7adc79146101ff575f80fd5b8063457e1a49116100a1578063457e1a491461015c57806366d003ac1461017f578063715018a6146101ab575f80fd5b80632e1a7d4d146100d15780633cb747bf146100f25780633ccfd60b14610148575f80fd5b366100cd57005b5f80fd5b3480156100dc575f80fd5b506100f06100eb366004610a8b565b61027b565b005b3480156100fd575f80fd5b5060025461011e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b348015610153575f80fd5b506100f0610548565b348015610167575f80fd5b5061017160015481565b60405190815260200161013f565b34801561018a575f80fd5b5060035461011e9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101b6575f80fd5b506100f06105d5565b3480156101ca575f80fd5b5061017160045481565b3480156101df575f80fd5b505f5461011e9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561020a575f80fd5b506100f0610219366004610aa2565b610660565b348015610229575f80fd5b506100f0610238366004610aa2565b610756565b348015610248575f80fd5b506100f0610257366004610aa2565b61085c565b348015610267575f80fd5b506100f0610276366004610a8b565b610952565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610300576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064015b60405180910390fd5b6001548110156103b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f4665655661756c743a207769746864726177616c20616d6f756e74206d75737460448201527f2062652067726561746572207468616e206d696e696d756d207769746864726160648201527f77616c20616d6f756e7400000000000000000000000000000000000000000000608482015260a4016102f7565b4780821115610449576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4665655661756c743a20696e73756666696369656e742062616c616e6365207460448201527f6f2077697468647261770000000000000000000000000000000000000000000060648201526084016102f7565b60048054830190556003546040805184815273ffffffffffffffffffffffffffffffffffffffff90921660208301523382820152517fc8a211cc64b6ed1b50595a9fcb1932b6d1e5a6e8ef15b60e5b1f988ea9086bba9181900360600190a1600254600354604080516020810182525f80825291517fb2267a7b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9485169463b2267a7b948894610516949190921692859290600401610adc565b5f604051808303818588803b15801561052d575f80fd5b505af115801561053f573d5f803e3d5ffd5b50505050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146105c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016102f7565b476105d28161027b565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016102f7565b61065e5f610a17565b565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146106e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016102f7565b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f1c928c417a10a21c3cddad148c5dba5d710e4b1442d6d8a36de345935ad84612905f90a35050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146107d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016102f7565b73ffffffffffffffffffffffffffffffffffffffff8116610853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6e6577206f776e657220697320746865207a65726f206164647265737300000060448201526064016102f7565b6105d281610a17565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146108dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016102f7565b6003805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f7e1e96961a397c8aa26162fe259cc837afc95e33aad4945ddc61c18dabb7a6ad905f90a35050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146109d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016102f7565b600180549082905560408051828152602081018490527f0d3c80219fe57713b9f9c83d1e51426792d0c14d8e330e65b102571816140965910160405180910390a15050565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f60208284031215610a9b575f80fd5b5035919050565b5f60208284031215610ab2575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610ad5575f80fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff851681525f60208560208401526080604084015284518060808501525f5b81811015610b2b5786810183015185820160a001528201610b0f565b505f60a0828601015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050508260608301529594505050505056fea164736f6c6343000818000a", } // L2TxFeeVaultABI is the input ABI used to generate the binding from. diff --git a/bindings/bindings/l2txfeevault_more.go b/bindings/bindings/l2txfeevault_more.go index 9a5ae77c2..01d4990dc 100644 --- a/bindings/bindings/l2txfeevault_more.go +++ b/bindings/bindings/l2txfeevault_more.go @@ -13,7 +13,7 @@ const L2TxFeeVaultStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract\ var L2TxFeeVaultStorageLayout = new(solc.StorageLayout) -var L2TxFeeVaultDeployedBin = "0x6080604052600436106100c6575f3560e01c806384411d6511610071578063f2fde38b1161004c578063f2fde38b1461021e578063feec756c1461023d578063ff4f35461461025c575f80fd5b806384411d65146101bf5780638da5cb5b146101d45780639e7adc79146101ff575f80fd5b8063457e1a49116100a1578063457e1a491461015c57806366d003ac1461017f578063715018a6146101ab575f80fd5b80632e1a7d4d146100d15780633cb747bf146100f25780633ccfd60b14610148575f80fd5b366100cd57005b5f80fd5b3480156100dc575f80fd5b506100f06100eb36600461098b565b61027b565b005b3480156100fd575f80fd5b5060025461011e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b348015610153575f80fd5b506100f06104c8565b348015610167575f80fd5b5061017160015481565b60405190815260200161013f565b34801561018a575f80fd5b5060035461011e9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101b6575f80fd5b506100f06104d5565b3480156101ca575f80fd5b5061017160045481565b3480156101df575f80fd5b505f5461011e9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561020a575f80fd5b506100f06102193660046109a2565b610560565b348015610229575f80fd5b506100f06102383660046109a2565b610656565b348015610248575f80fd5b506100f06102573660046109a2565b61075c565b348015610267575f80fd5b506100f061027636600461098b565b610852565b600154811015610338576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f4665655661756c743a207769746864726177616c20616d6f756e74206d75737460448201527f2062652067726561746572207468616e206d696e696d756d207769746864726160648201527f77616c20616d6f756e7400000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b47808211156103c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4665655661756c743a20696e73756666696369656e742062616c616e6365207460448201527f6f20776974686472617700000000000000000000000000000000000000000000606482015260840161032f565b60048054830190556003546040805184815273ffffffffffffffffffffffffffffffffffffffff90921660208301523382820152517fc8a211cc64b6ed1b50595a9fcb1932b6d1e5a6e8ef15b60e5b1f988ea9086bba9181900360600190a1600254600354604080516020810182525f80825291517fb2267a7b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9485169463b2267a7b9488946104969491909216928592906004016109dc565b5f604051808303818588803b1580156104ad575f80fd5b505af11580156104bf573d5f803e3d5ffd5b50505050505050565b476104d28161027b565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161032f565b61055e5f610917565b565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146105e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161032f565b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f1c928c417a10a21c3cddad148c5dba5d710e4b1442d6d8a36de345935ad84612905f90a35050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146106d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161032f565b73ffffffffffffffffffffffffffffffffffffffff8116610753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6e6577206f776e657220697320746865207a65726f2061646472657373000000604482015260640161032f565b6104d281610917565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146107dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161032f565b6003805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f7e1e96961a397c8aa26162fe259cc837afc95e33aad4945ddc61c18dabb7a6ad905f90a35050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146108d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015260640161032f565b600180549082905560408051828152602081018490527f0d3c80219fe57713b9f9c83d1e51426792d0c14d8e330e65b102571816140965910160405180910390a15050565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f6020828403121561099b575f80fd5b5035919050565b5f602082840312156109b2575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146109d5575f80fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff851681525f60208560208401526080604084015284518060808501525f5b81811015610a2b5786810183015185820160a001528201610a0f565b505f60a0828601015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050508260608301529594505050505056fea164736f6c6343000818000a" +var L2TxFeeVaultDeployedBin = "0x6080604052600436106100c6575f3560e01c806384411d6511610071578063f2fde38b1161004c578063f2fde38b1461021e578063feec756c1461023d578063ff4f35461461025c575f80fd5b806384411d65146101bf5780638da5cb5b146101d45780639e7adc79146101ff575f80fd5b8063457e1a49116100a1578063457e1a491461015c57806366d003ac1461017f578063715018a6146101ab575f80fd5b80632e1a7d4d146100d15780633cb747bf146100f25780633ccfd60b14610148575f80fd5b366100cd57005b5f80fd5b3480156100dc575f80fd5b506100f06100eb366004610a8b565b61027b565b005b3480156100fd575f80fd5b5060025461011e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b348015610153575f80fd5b506100f0610548565b348015610167575f80fd5b5061017160015481565b60405190815260200161013f565b34801561018a575f80fd5b5060035461011e9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101b6575f80fd5b506100f06105d5565b3480156101ca575f80fd5b5061017160045481565b3480156101df575f80fd5b505f5461011e9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561020a575f80fd5b506100f0610219366004610aa2565b610660565b348015610229575f80fd5b506100f0610238366004610aa2565b610756565b348015610248575f80fd5b506100f0610257366004610aa2565b61085c565b348015610267575f80fd5b506100f0610276366004610a8b565b610952565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610300576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064015b60405180910390fd5b6001548110156103b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f4665655661756c743a207769746864726177616c20616d6f756e74206d75737460448201527f2062652067726561746572207468616e206d696e696d756d207769746864726160648201527f77616c20616d6f756e7400000000000000000000000000000000000000000000608482015260a4016102f7565b4780821115610449576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4665655661756c743a20696e73756666696369656e742062616c616e6365207460448201527f6f2077697468647261770000000000000000000000000000000000000000000060648201526084016102f7565b60048054830190556003546040805184815273ffffffffffffffffffffffffffffffffffffffff90921660208301523382820152517fc8a211cc64b6ed1b50595a9fcb1932b6d1e5a6e8ef15b60e5b1f988ea9086bba9181900360600190a1600254600354604080516020810182525f80825291517fb2267a7b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9485169463b2267a7b948894610516949190921692859290600401610adc565b5f604051808303818588803b15801561052d575f80fd5b505af115801561053f573d5f803e3d5ffd5b50505050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146105c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016102f7565b476105d28161027b565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016102f7565b61065e5f610a17565b565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146106e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016102f7565b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f1c928c417a10a21c3cddad148c5dba5d710e4b1442d6d8a36de345935ad84612905f90a35050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146107d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016102f7565b73ffffffffffffffffffffffffffffffffffffffff8116610853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6e6577206f776e657220697320746865207a65726f206164647265737300000060448201526064016102f7565b6105d281610a17565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146108dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016102f7565b6003805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f7e1e96961a397c8aa26162fe259cc837afc95e33aad4945ddc61c18dabb7a6ad905f90a35050565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146109d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016102f7565b600180549082905560408051828152602081018490527f0d3c80219fe57713b9f9c83d1e51426792d0c14d8e330e65b102571816140965910160405180910390a15050565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f60208284031215610a9b575f80fd5b5035919050565b5f60208284031215610ab2575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610ad5575f80fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff851681525f60208560208401526080604084015284518060808501525f5b81811015610b2b5786810183015185820160a001528201610b0f565b505f60a0828601015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050508260608301529594505050505056fea164736f6c6343000818000a" func init() { if err := json.Unmarshal([]byte(L2TxFeeVaultStorageLayoutJSON), L2TxFeeVaultStorageLayout); err != nil { diff --git a/bindings/bindings/morphtoken.go b/bindings/bindings/morphtoken.go index 59e0047fa..a37afae18 100644 --- a/bindings/bindings/morphtoken.go +++ b/bindings/bindings/morphtoken.go @@ -28,16 +28,16 @@ var ( _ = event.NewSubscription ) -// IMorphTokenDailyInflationRate is an auto generated low-level Go binding around an user-defined struct. -type IMorphTokenDailyInflationRate struct { - Rate *big.Int - EffectiveDayIndex *big.Int +// IMorphTokenEpochInflationRate is an auto generated low-level Go binding around an user-defined struct. +type IMorphTokenEpochInflationRate struct { + Rate *big.Int + EffectiveEpochIndex *big.Int } // MorphTokenMetaData contains all meta data concerning the MorphToken contract. var MorphTokenMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"dayIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"InflationMinted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"effectiveDayIndex\",\"type\":\"uint256\"}],\"name\":\"UpdateDailyInflationRate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DISTRIBUTE_CONTRACT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"L2_STAKING_CONTRACT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RECORD_CONTRACT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"dailyInflationRates\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"effectiveDayIndex\",\"type\":\"uint256\"}],\"internalType\":\"structIMorphToken.DailyInflationRate\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"dayIndex\",\"type\":\"uint256\"}],\"name\":\"inflation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inflationMintedDays\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inflationRatesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"initialSupply_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dailyInflationRate_\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upToDayIndex\",\"type\":\"uint256\"}],\"name\":\"mintInflations\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"effectiveDayIndex\",\"type\":\"uint256\"}],\"name\":\"updateRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60e060405234801561000f575f80fd5b5073530000000000000000000000000000000000001260805273530000000000000000000000000000000000001160a05273530000000000000000000000000000000000000560c05260805160a05160c051611a316100975f395f81816103b4015261095001525f818161024e0152610c2c01525f818161030701526109d90152611a315ff3fe608060405234801561000f575f80fd5b506004361061018f575f3560e01c8063715018a6116100dd578063a457c2d711610088578063cd4281d011610063578063cd4281d0146103af578063dd62ed3e146103d6578063f2fde38b1461041b575f80fd5b8063a457c2d714610381578063a9059cbb14610394578063c553f7b3146103a7575f80fd5b8063944fa746116100b8578063944fa7461461034757806395d89b4114610366578063a29bfb2c1461036e575f80fd5b8063715018a6146102fa578063807de443146103025780638da5cb5b14610329575f80fd5b8063395093511161013d5780635ea94e6f116101185780635ea94e6f146102aa5780636fe0e395146102b257806370a08231146102c5575f80fd5b806339509351146102365780633d9353fe14610249578063405abb4114610295575f80fd5b806318160ddd1161016d57806318160ddd1461020257806323b872dd14610214578063313ce56714610227575f80fd5b806306fdde0314610193578063095ea7b3146101b15780630cb92c13146101d4575b5f80fd5b61019b61042e565b6040516101a8919061145f565b60405180910390f35b6101c46101bf3660046114f1565b6104be565b60405190151581526020016101a8565b6101e76101e2366004611519565b6104d7565b604080518251815260209283015192810192909252016101a8565b6067545b6040519081526020016101a8565b6101c4610222366004611530565b61052e565b604051601281526020016101a8565b6101c46102443660046114f1565b610551565b6102707f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a8565b6102a86102a3366004611569565b61059c565b005b606c54610206565b6102a86102c036600461165d565b6106f2565b6102066102d33660046116cc565b73ffffffffffffffffffffffffffffffffffffffff165f9081526068602052604090205490565b6102a861092b565b6102707f000000000000000000000000000000000000000000000000000000000000000081565b60335473ffffffffffffffffffffffffffffffffffffffff16610270565b610206610355366004611519565b5f908152606b602052604090205490565b61019b61093e565b6102a861037c366004611519565b61094d565b6101c461038f3660046114f1565b610cc2565b6101c46103a23660046114f1565b610d52565b606a54610206565b6102707f000000000000000000000000000000000000000000000000000000000000000081565b6102066103e43660046116ec565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260696020908152604080832093909416825291909152205490565b6102a86104293660046116cc565b610d5f565b60606065805461043d9061171d565b80601f01602080910402602001604051908101604052809291908181526020018280546104699061171d565b80156104b45780601f1061048b576101008083540402835291602001916104b4565b820191905f5260205f20905b81548152906001019060200180831161049757829003601f168201915b5050505050905090565b5f336104cb818585610dfc565b60019150505b92915050565b604080518082019091525f8082526020820152606a82815481106104fd576104fd61176e565b905f5260205f2090600202016040518060400160405290815f82015481526020016001820154815250509050919050565b5f3361053b858285610f2f565b610546858585610feb565b506001949350505050565b335f81815260696020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104cb90829086906105979087906117c8565b610dfc565b6105a46111a0565b606a80546105b4906001906117db565b815481106105c4576105c461176e565b905f5260205f20906002020160010154811161064d5760405162461bcd60e51b815260206004820152603060248201527f6566666563746976652064617973206166746572206d7573742062652067726560448201527f61746572207468616e206265666f72650000000000000000000000000000000060648201526084015b60405180910390fd5b60408051808201825283815260208101838152606a80546001810182555f91825292517f116fea137db6e131133e7f2bab296045d8f41cc5607279db17b218cab0929a5160029094029384015590517f116fea137db6e131133e7f2bab296045d8f41cc5607279db17b218cab0929a52909201919091559051829184917fceb8faf32dab6cac28ca92d86325e14aa7016715513ad8b353b7de90fb7f02cf9190a35050565b5f54610100900460ff161580801561071057505f54600160ff909116105b806107295750303b15801561072957505f5460ff166001145b61079b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610644565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156107f7575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6107ff611207565b606561080b8682611837565b5060666108188582611837565b50610823338461128b565b6040805180820182528381525f60208201818152606a805460018101825590835292517f116fea137db6e131133e7f2bab296045d8f41cc5607279db17b218cab0929a51600290940293840155517f116fea137db6e131133e7f2bab296045d8f41cc5607279db17b218cab0929a5290920191909155905183907fceb8faf32dab6cac28ca92d86325e14aa7016715513ad8b353b7de90fb7f02cf908390a38015610924575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6109336111a0565b61093c5f611364565b565b60606066805461043d9061171d565b337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16146109d25760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c79207265636f726420636f6e747261637420616c6c6f776564000000006044820152606401610644565b5f620151807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632cc138be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a40573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a649190611953565b610a6e90426117db565b610a78919061196a565b610a839060016117c8565b9050818111610afa5760405162461bcd60e51b815260206004820152602b60248201527f746865207370656369666965642074696d6520686173206e6f7420796574206260448201527f65656e20726561636865640000000000000000000000000000000000000000006064820152608401610644565b606c54821015610b4c5760405162461bcd60e51b815260206004820152601560248201527f616c6c20696e666c6174696f6e73206d696e74656400000000000000000000006044820152606401610644565b606c545b828111610caf575f606a5f81548110610b6b57610b6b61176e565b5f9182526020822060029091020154606a54909250610b8c906001906117db565b90505b8015610bf55782606a8281548110610ba957610ba961176e565b905f5260205f2090600202016001015411610be357606a8181548110610bd157610bd161176e565b905f5260205f2090600202015f015491505b80610bed816119a2565b915050610b8f565b50662386f26fc1000081606754610c0c91906119d6565b610c16919061196a565b5f838152606b60205260409020819055610c51907f00000000000000000000000000000000000000000000000000000000000000009061128b565b817f0d82c0920038b8dc7f633e18585f37092ba957b84876fcf833d6841f69eaa327606b5f8581526020019081526020015f2054604051610c9491815260200190565b60405180910390a25080610ca7816119ed565b915050610b50565b50610cbb8260016117c8565b606c555050565b335f81815260696020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610d455760405162461bcd60e51b815260206004820152601e60248201527f64656372656173656420616c6c6f77616e63652062656c6f77207a65726f00006044820152606401610644565b6105468286868403610dfc565b5f336104cb818585610feb565b610d676111a0565b73ffffffffffffffffffffffffffffffffffffffff8116610df05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610644565b610df981611364565b50565b73ffffffffffffffffffffffffffffffffffffffff8316610e5f5760405162461bcd60e51b815260206004820152601d60248201527f617070726f76652066726f6d20746865207a65726f20616464726573730000006044820152606401610644565b73ffffffffffffffffffffffffffffffffffffffff8216610ec25760405162461bcd60e51b815260206004820152601b60248201527f617070726f766520746f20746865207a65726f206164647265737300000000006044820152606401610644565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526069602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381165f908152606960209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610fe55781811015610fd85760405162461bcd60e51b815260206004820152601660248201527f696e73756666696369656e7420616c6c6f77616e6365000000000000000000006044820152606401610644565b610fe58484848403610dfc565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661104e5760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f206164647265737300006044820152606401610644565b73ffffffffffffffffffffffffffffffffffffffff82166110b15760405162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f2061646472657373000000006044820152606401610644565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260686020526040902054818110156111265760405162461bcd60e51b815260206004820152601f60248201527f7472616e7366657220616d6f756e7420657863656564732062616c616e6365006044820152606401610644565b73ffffffffffffffffffffffffffffffffffffffff8085165f8181526068602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111929086815260200190565b60405180910390a350505050565b60335473ffffffffffffffffffffffffffffffffffffffff16331461093c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610644565b5f54610100900460ff166112835760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610644565b61093c6113da565b73ffffffffffffffffffffffffffffffffffffffff82166112ee5760405162461bcd60e51b815260206004820152601860248201527f6d696e7420746f20746865207a65726f206164647265737300000000000000006044820152606401610644565b8060675f8282546112ff91906117c8565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f818152606860209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166114565760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610644565b61093c33611364565b5f602080835283518060208501525f5b8181101561148b5785810183015185820160400152820161146f565b505f6040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146114ec575f80fd5b919050565b5f8060408385031215611502575f80fd5b61150b836114c9565b946020939093013593505050565b5f60208284031215611529575f80fd5b5035919050565b5f805f60608486031215611542575f80fd5b61154b846114c9565b9250611559602085016114c9565b9150604084013590509250925092565b5f806040838503121561157a575f80fd5b50508035926020909101359150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f8301126115c5575f80fd5b813567ffffffffffffffff808211156115e0576115e0611589565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561162657611626611589565b8160405283815286602085880101111561163e575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f805f8060808587031215611670575f80fd5b843567ffffffffffffffff80821115611687575f80fd5b611693888389016115b6565b955060208701359150808211156116a8575f80fd5b506116b5878288016115b6565b949794965050505060408301359260600135919050565b5f602082840312156116dc575f80fd5b6116e5826114c9565b9392505050565b5f80604083850312156116fd575f80fd5b611706836114c9565b9150611714602084016114c9565b90509250929050565b600181811c9082168061173157607f821691505b602082108103611768577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156104d1576104d161179b565b818103818111156104d1576104d161179b565b601f82111561183257805f5260205f20601f840160051c810160208510156118135750805b601f840160051c820191505b81811015610924575f815560010161181f565b505050565b815167ffffffffffffffff81111561185157611851611589565b6118658161185f845461171d565b846117ee565b602080601f8311600181146118b7575f84156118815750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855561194b565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015611903578886015182559484019460019091019084016118e4565b508582101561193f57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f60208284031215611963575f80fd5b5051919050565b5f8261199d577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f816119b0576119b061179b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b80820281158282048414176104d1576104d161179b565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611a1d57611a1d61179b565b506001019056fea164736f6c6343000818000a", + ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"epochIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"InflationMinted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"effectiveEpochIndex\",\"type\":\"uint256\"}],\"name\":\"UpdateEpochInflationRate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DISTRIBUTE_CONTRACT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"L2_STAKING_CONTRACT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RECORD_CONTRACT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"epochInflationRates\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"effectiveEpochIndex\",\"type\":\"uint256\"}],\"internalType\":\"structIMorphToken.EpochInflationRate\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epochIndex\",\"type\":\"uint256\"}],\"name\":\"inflation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inflationMintedEpochs\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inflationRatesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"initialSupply_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dailyInflationRate_\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"upToEpochIndex\",\"type\":\"uint256\"}],\"name\":\"mintInflations\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newRate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"effectiveEpochIndex\",\"type\":\"uint256\"}],\"name\":\"updateRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x60e060405234801561000f575f80fd5b5073530000000000000000000000000000000000001560805273530000000000000000000000000000000000001460a05273530000000000000000000000000000000000001260c05260805160a05160c051611a096100975f395f81816103b4015261095001525f81816102280152610c0501525f818161030701526109d50152611a095ff3fe608060405234801561000f575f80fd5b506004361061018f575f3560e01c8063715018a6116100dd578063a457c2d711610088578063cd4281d011610063578063cd4281d0146103af578063dd62ed3e146103d6578063f2fde38b1461041b575f80fd5b8063a457c2d714610381578063a9059cbb14610394578063c553f7b3146103a7575f80fd5b8063944fa746116100b8578063944fa7461461034757806395d89b4114610366578063a29bfb2c1461036e575f80fd5b8063715018a6146102fa578063807de443146103025780638da5cb5b14610329575f80fd5b8063395093511161013d5780636d0c4a26116101185780636d0c4a26146102845780636fe0e395146102b257806370a08231146102c5575f80fd5b806339509351146102105780633d9353fe14610223578063405abb411461026f575f80fd5b806318160ddd1161016d57806318160ddd146101e657806323b872dd146101ee578063313ce56714610201575f80fd5b806306fdde0314610193578063095ea7b3146101b15780630b88a984146101d4575b5f80fd5b61019b61042e565b6040516101a89190611437565b60405180910390f35b6101c46101bf3660046114c9565b6104be565b60405190151581526020016101a8565b606c545b6040519081526020016101a8565b6067546101d8565b6101c46101fc3660046114f1565b6104d7565b604051601281526020016101a8565b6101c461021e3660046114c9565b6104fa565b61024a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a8565b61028261027d36600461152a565b610545565b005b61029761029236600461154a565b61069b565b604080518251815260209283015192810192909252016101a8565b6102826102c0366004611635565b6106f2565b6101d86102d33660046116a4565b73ffffffffffffffffffffffffffffffffffffffff165f9081526068602052604090205490565b61028261092b565b61024a7f000000000000000000000000000000000000000000000000000000000000000081565b60335473ffffffffffffffffffffffffffffffffffffffff1661024a565b6101d861035536600461154a565b5f908152606b602052604090205490565b61019b61093e565b61028261037c36600461154a565b61094d565b6101c461038f3660046114c9565b610c9a565b6101c46103a23660046114c9565b610d2a565b606a546101d8565b61024a7f000000000000000000000000000000000000000000000000000000000000000081565b6101d86103e43660046116c4565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260696020908152604080832093909416825291909152205490565b6102826104293660046116a4565b610d37565b60606065805461043d906116f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610469906116f5565b80156104b45780601f1061048b576101008083540402835291602001916104b4565b820191905f5260205f20905b81548152906001019060200180831161049757829003601f168201915b5050505050905090565b5f336104cb818585610dd4565b60019150505b92915050565b5f336104e4858285610f07565b6104ef858585610fc3565b506001949350505050565b335f81815260696020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104cb9082908690610540908790611773565b610dd4565b61054d611178565b606a805461055d90600190611786565b8154811061056d5761056d611799565b905f5260205f2090600202016001015481116105f65760405162461bcd60e51b815260206004820152603260248201527f6566666563746976652065706f636873206166746572206d757374206265206760448201527f726561746572207468616e206265666f7265000000000000000000000000000060648201526084015b60405180910390fd5b60408051808201825283815260208101838152606a80546001810182555f91825292517f116fea137db6e131133e7f2bab296045d8f41cc5607279db17b218cab0929a5160029094029384015590517f116fea137db6e131133e7f2bab296045d8f41cc5607279db17b218cab0929a52909201919091559051829184917fbe80a5653ecb34691beafb0fb70004d50f9032b798f68a2f73a137c4f98ab3f49190a35050565b604080518082019091525f8082526020820152606a82815481106106c1576106c1611799565b905f5260205f2090600202016040518060400160405290815f82015481526020016001820154815250509050919050565b5f54610100900460ff161580801561071057505f54600160ff909116105b806107295750303b15801561072957505f5460ff166001145b61079b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016105ed565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156107f7575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6107ff6111df565b606561080b868261180f565b506066610818858261180f565b506108233384611263565b6040805180820182528381525f60208201818152606a805460018101825590835292517f116fea137db6e131133e7f2bab296045d8f41cc5607279db17b218cab0929a51600290940293840155517f116fea137db6e131133e7f2bab296045d8f41cc5607279db17b218cab0929a5290920191909155905183907fbe80a5653ecb34691beafb0fb70004d50f9032b798f68a2f73a137c4f98ab3f4908390a38015610924575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b610933611178565b61093c5f61133c565b565b60606066805461043d906116f5565b337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16146109d25760405162461bcd60e51b815260206004820152601c60248201527f6f6e6c79207265636f726420636f6e747261637420616c6c6f7765640000000060448201526064016105ed565b807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663766718086040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a60919061192b565b11610ad35760405162461bcd60e51b815260206004820152602b60248201527f746865207370656369666965642074696d6520686173206e6f7420796574206260448201527f65656e207265616368656400000000000000000000000000000000000000000060648201526084016105ed565b606c54811015610b255760405162461bcd60e51b815260206004820152601560248201527f616c6c20696e666c6174696f6e73206d696e746564000000000000000000000060448201526064016105ed565b606c545b818111610c88575f606a5f81548110610b4457610b44611799565b5f9182526020822060029091020154606a54909250610b6590600190611786565b90505b8015610bce5782606a8281548110610b8257610b82611799565b905f5260205f2090600202016001015411610bbc57606a8181548110610baa57610baa611799565b905f5260205f2090600202015f015491505b80610bc681611942565b915050610b68565b50662386f26fc1000081606754610be59190611976565b610bef919061198d565b5f838152606b60205260409020819055610c2a907f000000000000000000000000000000000000000000000000000000000000000090611263565b817f0d82c0920038b8dc7f633e18585f37092ba957b84876fcf833d6841f69eaa327606b5f8581526020019081526020015f2054604051610c6d91815260200190565b60405180910390a25080610c80816119c5565b915050610b29565b50610c94816001611773565b606c5550565b335f81815260696020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610d1d5760405162461bcd60e51b815260206004820152601e60248201527f64656372656173656420616c6c6f77616e63652062656c6f77207a65726f000060448201526064016105ed565b6104ef8286868403610dd4565b5f336104cb818585610fc3565b610d3f611178565b73ffffffffffffffffffffffffffffffffffffffff8116610dc85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016105ed565b610dd18161133c565b50565b73ffffffffffffffffffffffffffffffffffffffff8316610e375760405162461bcd60e51b815260206004820152601d60248201527f617070726f76652066726f6d20746865207a65726f206164647265737300000060448201526064016105ed565b73ffffffffffffffffffffffffffffffffffffffff8216610e9a5760405162461bcd60e51b815260206004820152601b60248201527f617070726f766520746f20746865207a65726f2061646472657373000000000060448201526064016105ed565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526069602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381165f908152606960209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610fbd5781811015610fb05760405162461bcd60e51b815260206004820152601660248201527f696e73756666696369656e7420616c6c6f77616e63650000000000000000000060448201526064016105ed565b610fbd8484848403610dd4565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166110265760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f2061646472657373000060448201526064016105ed565b73ffffffffffffffffffffffffffffffffffffffff82166110895760405162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f20616464726573730000000060448201526064016105ed565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260686020526040902054818110156110fe5760405162461bcd60e51b815260206004820152601f60248201527f7472616e7366657220616d6f756e7420657863656564732062616c616e63650060448201526064016105ed565b73ffffffffffffffffffffffffffffffffffffffff8085165f8181526068602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061116a9086815260200190565b60405180910390a350505050565b60335473ffffffffffffffffffffffffffffffffffffffff16331461093c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105ed565b5f54610100900460ff1661125b5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016105ed565b61093c6113b2565b73ffffffffffffffffffffffffffffffffffffffff82166112c65760405162461bcd60e51b815260206004820152601860248201527f6d696e7420746f20746865207a65726f2061646472657373000000000000000060448201526064016105ed565b8060675f8282546112d79190611773565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f818152606860209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff1661142e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016105ed565b61093c3361133c565b5f602080835283518060208501525f5b8181101561146357858101830151858201604001528201611447565b505f6040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146114c4575f80fd5b919050565b5f80604083850312156114da575f80fd5b6114e3836114a1565b946020939093013593505050565b5f805f60608486031215611503575f80fd5b61150c846114a1565b925061151a602085016114a1565b9150604084013590509250925092565b5f806040838503121561153b575f80fd5b50508035926020909101359150565b5f6020828403121561155a575f80fd5b5035919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f83011261159d575f80fd5b813567ffffffffffffffff808211156115b8576115b8611561565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156115fe576115fe611561565b81604052838152866020858801011115611616575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f805f8060808587031215611648575f80fd5b843567ffffffffffffffff8082111561165f575f80fd5b61166b8883890161158e565b95506020870135915080821115611680575f80fd5b5061168d8782880161158e565b949794965050505060408301359260600135919050565b5f602082840312156116b4575f80fd5b6116bd826114a1565b9392505050565b5f80604083850312156116d5575f80fd5b6116de836114a1565b91506116ec602084016114a1565b90509250929050565b600181811c9082168061170957607f821691505b602082108103611740577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156104d1576104d1611746565b818103818111156104d1576104d1611746565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b601f82111561180a57805f5260205f20601f840160051c810160208510156117eb5750805b601f840160051c820191505b81811015610924575f81556001016117f7565b505050565b815167ffffffffffffffff81111561182957611829611561565b61183d8161183784546116f5565b846117c6565b602080601f83116001811461188f575f84156118595750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555611923565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156118db578886015182559484019460019091019084016118bc565b508582101561191757878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f6020828403121561193b575f80fd5b5051919050565b5f8161195057611950611746565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b80820281158282048414176104d1576104d1611746565b5f826119c0577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036119f5576119f5611746565b506001019056fea164736f6c6343000818000a", } // MorphTokenABI is the input ABI used to generate the binding from. @@ -362,74 +362,74 @@ func (_MorphToken *MorphTokenCallerSession) BalanceOf(account common.Address) (* return _MorphToken.Contract.BalanceOf(&_MorphToken.CallOpts, account) } -// DailyInflationRates is a free data retrieval call binding the contract method 0x0cb92c13. +// Decimals is a free data retrieval call binding the contract method 0x313ce567. // -// Solidity: function dailyInflationRates(uint256 index) view returns((uint256,uint256)) -func (_MorphToken *MorphTokenCaller) DailyInflationRates(opts *bind.CallOpts, index *big.Int) (IMorphTokenDailyInflationRate, error) { +// Solidity: function decimals() pure returns(uint8) +func (_MorphToken *MorphTokenCaller) Decimals(opts *bind.CallOpts) (uint8, error) { var out []interface{} - err := _MorphToken.contract.Call(opts, &out, "dailyInflationRates", index) + err := _MorphToken.contract.Call(opts, &out, "decimals") if err != nil { - return *new(IMorphTokenDailyInflationRate), err + return *new(uint8), err } - out0 := *abi.ConvertType(out[0], new(IMorphTokenDailyInflationRate)).(*IMorphTokenDailyInflationRate) + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) return out0, err } -// DailyInflationRates is a free data retrieval call binding the contract method 0x0cb92c13. +// Decimals is a free data retrieval call binding the contract method 0x313ce567. // -// Solidity: function dailyInflationRates(uint256 index) view returns((uint256,uint256)) -func (_MorphToken *MorphTokenSession) DailyInflationRates(index *big.Int) (IMorphTokenDailyInflationRate, error) { - return _MorphToken.Contract.DailyInflationRates(&_MorphToken.CallOpts, index) +// Solidity: function decimals() pure returns(uint8) +func (_MorphToken *MorphTokenSession) Decimals() (uint8, error) { + return _MorphToken.Contract.Decimals(&_MorphToken.CallOpts) } -// DailyInflationRates is a free data retrieval call binding the contract method 0x0cb92c13. +// Decimals is a free data retrieval call binding the contract method 0x313ce567. // -// Solidity: function dailyInflationRates(uint256 index) view returns((uint256,uint256)) -func (_MorphToken *MorphTokenCallerSession) DailyInflationRates(index *big.Int) (IMorphTokenDailyInflationRate, error) { - return _MorphToken.Contract.DailyInflationRates(&_MorphToken.CallOpts, index) +// Solidity: function decimals() pure returns(uint8) +func (_MorphToken *MorphTokenCallerSession) Decimals() (uint8, error) { + return _MorphToken.Contract.Decimals(&_MorphToken.CallOpts) } -// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// EpochInflationRates is a free data retrieval call binding the contract method 0x6d0c4a26. // -// Solidity: function decimals() pure returns(uint8) -func (_MorphToken *MorphTokenCaller) Decimals(opts *bind.CallOpts) (uint8, error) { +// Solidity: function epochInflationRates(uint256 index) view returns((uint256,uint256)) +func (_MorphToken *MorphTokenCaller) EpochInflationRates(opts *bind.CallOpts, index *big.Int) (IMorphTokenEpochInflationRate, error) { var out []interface{} - err := _MorphToken.contract.Call(opts, &out, "decimals") + err := _MorphToken.contract.Call(opts, &out, "epochInflationRates", index) if err != nil { - return *new(uint8), err + return *new(IMorphTokenEpochInflationRate), err } - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + out0 := *abi.ConvertType(out[0], new(IMorphTokenEpochInflationRate)).(*IMorphTokenEpochInflationRate) return out0, err } -// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// EpochInflationRates is a free data retrieval call binding the contract method 0x6d0c4a26. // -// Solidity: function decimals() pure returns(uint8) -func (_MorphToken *MorphTokenSession) Decimals() (uint8, error) { - return _MorphToken.Contract.Decimals(&_MorphToken.CallOpts) +// Solidity: function epochInflationRates(uint256 index) view returns((uint256,uint256)) +func (_MorphToken *MorphTokenSession) EpochInflationRates(index *big.Int) (IMorphTokenEpochInflationRate, error) { + return _MorphToken.Contract.EpochInflationRates(&_MorphToken.CallOpts, index) } -// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// EpochInflationRates is a free data retrieval call binding the contract method 0x6d0c4a26. // -// Solidity: function decimals() pure returns(uint8) -func (_MorphToken *MorphTokenCallerSession) Decimals() (uint8, error) { - return _MorphToken.Contract.Decimals(&_MorphToken.CallOpts) +// Solidity: function epochInflationRates(uint256 index) view returns((uint256,uint256)) +func (_MorphToken *MorphTokenCallerSession) EpochInflationRates(index *big.Int) (IMorphTokenEpochInflationRate, error) { + return _MorphToken.Contract.EpochInflationRates(&_MorphToken.CallOpts, index) } // Inflation is a free data retrieval call binding the contract method 0x944fa746. // -// Solidity: function inflation(uint256 dayIndex) view returns(uint256) -func (_MorphToken *MorphTokenCaller) Inflation(opts *bind.CallOpts, dayIndex *big.Int) (*big.Int, error) { +// Solidity: function inflation(uint256 epochIndex) view returns(uint256) +func (_MorphToken *MorphTokenCaller) Inflation(opts *bind.CallOpts, epochIndex *big.Int) (*big.Int, error) { var out []interface{} - err := _MorphToken.contract.Call(opts, &out, "inflation", dayIndex) + err := _MorphToken.contract.Call(opts, &out, "inflation", epochIndex) if err != nil { return *new(*big.Int), err @@ -443,24 +443,24 @@ func (_MorphToken *MorphTokenCaller) Inflation(opts *bind.CallOpts, dayIndex *bi // Inflation is a free data retrieval call binding the contract method 0x944fa746. // -// Solidity: function inflation(uint256 dayIndex) view returns(uint256) -func (_MorphToken *MorphTokenSession) Inflation(dayIndex *big.Int) (*big.Int, error) { - return _MorphToken.Contract.Inflation(&_MorphToken.CallOpts, dayIndex) +// Solidity: function inflation(uint256 epochIndex) view returns(uint256) +func (_MorphToken *MorphTokenSession) Inflation(epochIndex *big.Int) (*big.Int, error) { + return _MorphToken.Contract.Inflation(&_MorphToken.CallOpts, epochIndex) } // Inflation is a free data retrieval call binding the contract method 0x944fa746. // -// Solidity: function inflation(uint256 dayIndex) view returns(uint256) -func (_MorphToken *MorphTokenCallerSession) Inflation(dayIndex *big.Int) (*big.Int, error) { - return _MorphToken.Contract.Inflation(&_MorphToken.CallOpts, dayIndex) +// Solidity: function inflation(uint256 epochIndex) view returns(uint256) +func (_MorphToken *MorphTokenCallerSession) Inflation(epochIndex *big.Int) (*big.Int, error) { + return _MorphToken.Contract.Inflation(&_MorphToken.CallOpts, epochIndex) } -// InflationMintedDays is a free data retrieval call binding the contract method 0x5ea94e6f. +// InflationMintedEpochs is a free data retrieval call binding the contract method 0x0b88a984. // -// Solidity: function inflationMintedDays() view returns(uint256) -func (_MorphToken *MorphTokenCaller) InflationMintedDays(opts *bind.CallOpts) (*big.Int, error) { +// Solidity: function inflationMintedEpochs() view returns(uint256) +func (_MorphToken *MorphTokenCaller) InflationMintedEpochs(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} - err := _MorphToken.contract.Call(opts, &out, "inflationMintedDays") + err := _MorphToken.contract.Call(opts, &out, "inflationMintedEpochs") if err != nil { return *new(*big.Int), err @@ -472,18 +472,18 @@ func (_MorphToken *MorphTokenCaller) InflationMintedDays(opts *bind.CallOpts) (* } -// InflationMintedDays is a free data retrieval call binding the contract method 0x5ea94e6f. +// InflationMintedEpochs is a free data retrieval call binding the contract method 0x0b88a984. // -// Solidity: function inflationMintedDays() view returns(uint256) -func (_MorphToken *MorphTokenSession) InflationMintedDays() (*big.Int, error) { - return _MorphToken.Contract.InflationMintedDays(&_MorphToken.CallOpts) +// Solidity: function inflationMintedEpochs() view returns(uint256) +func (_MorphToken *MorphTokenSession) InflationMintedEpochs() (*big.Int, error) { + return _MorphToken.Contract.InflationMintedEpochs(&_MorphToken.CallOpts) } -// InflationMintedDays is a free data retrieval call binding the contract method 0x5ea94e6f. +// InflationMintedEpochs is a free data retrieval call binding the contract method 0x0b88a984. // -// Solidity: function inflationMintedDays() view returns(uint256) -func (_MorphToken *MorphTokenCallerSession) InflationMintedDays() (*big.Int, error) { - return _MorphToken.Contract.InflationMintedDays(&_MorphToken.CallOpts) +// Solidity: function inflationMintedEpochs() view returns(uint256) +func (_MorphToken *MorphTokenCallerSession) InflationMintedEpochs() (*big.Int, error) { + return _MorphToken.Contract.InflationMintedEpochs(&_MorphToken.CallOpts) } // InflationRatesCount is a free data retrieval call binding the contract method 0xc553f7b3. @@ -727,23 +727,23 @@ func (_MorphToken *MorphTokenTransactorSession) Initialize(name_ string, symbol_ // MintInflations is a paid mutator transaction binding the contract method 0xa29bfb2c. // -// Solidity: function mintInflations(uint256 upToDayIndex) returns() -func (_MorphToken *MorphTokenTransactor) MintInflations(opts *bind.TransactOpts, upToDayIndex *big.Int) (*types.Transaction, error) { - return _MorphToken.contract.Transact(opts, "mintInflations", upToDayIndex) +// Solidity: function mintInflations(uint256 upToEpochIndex) returns() +func (_MorphToken *MorphTokenTransactor) MintInflations(opts *bind.TransactOpts, upToEpochIndex *big.Int) (*types.Transaction, error) { + return _MorphToken.contract.Transact(opts, "mintInflations", upToEpochIndex) } // MintInflations is a paid mutator transaction binding the contract method 0xa29bfb2c. // -// Solidity: function mintInflations(uint256 upToDayIndex) returns() -func (_MorphToken *MorphTokenSession) MintInflations(upToDayIndex *big.Int) (*types.Transaction, error) { - return _MorphToken.Contract.MintInflations(&_MorphToken.TransactOpts, upToDayIndex) +// Solidity: function mintInflations(uint256 upToEpochIndex) returns() +func (_MorphToken *MorphTokenSession) MintInflations(upToEpochIndex *big.Int) (*types.Transaction, error) { + return _MorphToken.Contract.MintInflations(&_MorphToken.TransactOpts, upToEpochIndex) } // MintInflations is a paid mutator transaction binding the contract method 0xa29bfb2c. // -// Solidity: function mintInflations(uint256 upToDayIndex) returns() -func (_MorphToken *MorphTokenTransactorSession) MintInflations(upToDayIndex *big.Int) (*types.Transaction, error) { - return _MorphToken.Contract.MintInflations(&_MorphToken.TransactOpts, upToDayIndex) +// Solidity: function mintInflations(uint256 upToEpochIndex) returns() +func (_MorphToken *MorphTokenTransactorSession) MintInflations(upToEpochIndex *big.Int) (*types.Transaction, error) { + return _MorphToken.Contract.MintInflations(&_MorphToken.TransactOpts, upToEpochIndex) } // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. @@ -832,23 +832,23 @@ func (_MorphToken *MorphTokenTransactorSession) TransferOwnership(newOwner commo // UpdateRate is a paid mutator transaction binding the contract method 0x405abb41. // -// Solidity: function updateRate(uint256 newRate, uint256 effectiveDayIndex) returns() -func (_MorphToken *MorphTokenTransactor) UpdateRate(opts *bind.TransactOpts, newRate *big.Int, effectiveDayIndex *big.Int) (*types.Transaction, error) { - return _MorphToken.contract.Transact(opts, "updateRate", newRate, effectiveDayIndex) +// Solidity: function updateRate(uint256 newRate, uint256 effectiveEpochIndex) returns() +func (_MorphToken *MorphTokenTransactor) UpdateRate(opts *bind.TransactOpts, newRate *big.Int, effectiveEpochIndex *big.Int) (*types.Transaction, error) { + return _MorphToken.contract.Transact(opts, "updateRate", newRate, effectiveEpochIndex) } // UpdateRate is a paid mutator transaction binding the contract method 0x405abb41. // -// Solidity: function updateRate(uint256 newRate, uint256 effectiveDayIndex) returns() -func (_MorphToken *MorphTokenSession) UpdateRate(newRate *big.Int, effectiveDayIndex *big.Int) (*types.Transaction, error) { - return _MorphToken.Contract.UpdateRate(&_MorphToken.TransactOpts, newRate, effectiveDayIndex) +// Solidity: function updateRate(uint256 newRate, uint256 effectiveEpochIndex) returns() +func (_MorphToken *MorphTokenSession) UpdateRate(newRate *big.Int, effectiveEpochIndex *big.Int) (*types.Transaction, error) { + return _MorphToken.Contract.UpdateRate(&_MorphToken.TransactOpts, newRate, effectiveEpochIndex) } // UpdateRate is a paid mutator transaction binding the contract method 0x405abb41. // -// Solidity: function updateRate(uint256 newRate, uint256 effectiveDayIndex) returns() -func (_MorphToken *MorphTokenTransactorSession) UpdateRate(newRate *big.Int, effectiveDayIndex *big.Int) (*types.Transaction, error) { - return _MorphToken.Contract.UpdateRate(&_MorphToken.TransactOpts, newRate, effectiveDayIndex) +// Solidity: function updateRate(uint256 newRate, uint256 effectiveEpochIndex) returns() +func (_MorphToken *MorphTokenTransactorSession) UpdateRate(newRate *big.Int, effectiveEpochIndex *big.Int) (*types.Transaction, error) { + return _MorphToken.Contract.UpdateRate(&_MorphToken.TransactOpts, newRate, effectiveEpochIndex) } // MorphTokenApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the MorphToken contract. @@ -1074,22 +1074,22 @@ func (it *MorphTokenInflationMintedIterator) Close() error { // MorphTokenInflationMinted represents a InflationMinted event raised by the MorphToken contract. type MorphTokenInflationMinted struct { - DayIndex *big.Int - Amount *big.Int - Raw types.Log // Blockchain specific contextual infos + EpochIndex *big.Int + Amount *big.Int + Raw types.Log // Blockchain specific contextual infos } // FilterInflationMinted is a free log retrieval operation binding the contract event 0x0d82c0920038b8dc7f633e18585f37092ba957b84876fcf833d6841f69eaa327. // -// Solidity: event InflationMinted(uint256 indexed dayIndex, uint256 amount) -func (_MorphToken *MorphTokenFilterer) FilterInflationMinted(opts *bind.FilterOpts, dayIndex []*big.Int) (*MorphTokenInflationMintedIterator, error) { +// Solidity: event InflationMinted(uint256 indexed epochIndex, uint256 amount) +func (_MorphToken *MorphTokenFilterer) FilterInflationMinted(opts *bind.FilterOpts, epochIndex []*big.Int) (*MorphTokenInflationMintedIterator, error) { - var dayIndexRule []interface{} - for _, dayIndexItem := range dayIndex { - dayIndexRule = append(dayIndexRule, dayIndexItem) + var epochIndexRule []interface{} + for _, epochIndexItem := range epochIndex { + epochIndexRule = append(epochIndexRule, epochIndexItem) } - logs, sub, err := _MorphToken.contract.FilterLogs(opts, "InflationMinted", dayIndexRule) + logs, sub, err := _MorphToken.contract.FilterLogs(opts, "InflationMinted", epochIndexRule) if err != nil { return nil, err } @@ -1098,15 +1098,15 @@ func (_MorphToken *MorphTokenFilterer) FilterInflationMinted(opts *bind.FilterOp // WatchInflationMinted is a free log subscription operation binding the contract event 0x0d82c0920038b8dc7f633e18585f37092ba957b84876fcf833d6841f69eaa327. // -// Solidity: event InflationMinted(uint256 indexed dayIndex, uint256 amount) -func (_MorphToken *MorphTokenFilterer) WatchInflationMinted(opts *bind.WatchOpts, sink chan<- *MorphTokenInflationMinted, dayIndex []*big.Int) (event.Subscription, error) { +// Solidity: event InflationMinted(uint256 indexed epochIndex, uint256 amount) +func (_MorphToken *MorphTokenFilterer) WatchInflationMinted(opts *bind.WatchOpts, sink chan<- *MorphTokenInflationMinted, epochIndex []*big.Int) (event.Subscription, error) { - var dayIndexRule []interface{} - for _, dayIndexItem := range dayIndex { - dayIndexRule = append(dayIndexRule, dayIndexItem) + var epochIndexRule []interface{} + for _, epochIndexItem := range epochIndex { + epochIndexRule = append(epochIndexRule, epochIndexItem) } - logs, sub, err := _MorphToken.contract.WatchLogs(opts, "InflationMinted", dayIndexRule) + logs, sub, err := _MorphToken.contract.WatchLogs(opts, "InflationMinted", epochIndexRule) if err != nil { return nil, err } @@ -1140,7 +1140,7 @@ func (_MorphToken *MorphTokenFilterer) WatchInflationMinted(opts *bind.WatchOpts // ParseInflationMinted is a log parse operation binding the contract event 0x0d82c0920038b8dc7f633e18585f37092ba957b84876fcf833d6841f69eaa327. // -// Solidity: event InflationMinted(uint256 indexed dayIndex, uint256 amount) +// Solidity: event InflationMinted(uint256 indexed epochIndex, uint256 amount) func (_MorphToken *MorphTokenFilterer) ParseInflationMinted(log types.Log) (*MorphTokenInflationMinted, error) { event := new(MorphTokenInflationMinted) if err := _MorphToken.contract.UnpackLog(event, "InflationMinted", log); err != nil { @@ -1591,9 +1591,9 @@ func (_MorphToken *MorphTokenFilterer) ParseTransfer(log types.Log) (*MorphToken return event, nil } -// MorphTokenUpdateDailyInflationRateIterator is returned from FilterUpdateDailyInflationRate and is used to iterate over the raw logs and unpacked data for UpdateDailyInflationRate events raised by the MorphToken contract. -type MorphTokenUpdateDailyInflationRateIterator struct { - Event *MorphTokenUpdateDailyInflationRate // Event containing the contract specifics and raw log +// MorphTokenUpdateEpochInflationRateIterator is returned from FilterUpdateEpochInflationRate and is used to iterate over the raw logs and unpacked data for UpdateEpochInflationRate events raised by the MorphToken contract. +type MorphTokenUpdateEpochInflationRateIterator struct { + Event *MorphTokenUpdateEpochInflationRate // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1607,7 +1607,7 @@ type MorphTokenUpdateDailyInflationRateIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *MorphTokenUpdateDailyInflationRateIterator) Next() bool { +func (it *MorphTokenUpdateEpochInflationRateIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1616,7 +1616,7 @@ func (it *MorphTokenUpdateDailyInflationRateIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(MorphTokenUpdateDailyInflationRate) + it.Event = new(MorphTokenUpdateEpochInflationRate) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1631,7 +1631,7 @@ func (it *MorphTokenUpdateDailyInflationRateIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(MorphTokenUpdateDailyInflationRate) + it.Event = new(MorphTokenUpdateEpochInflationRate) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1647,60 +1647,60 @@ func (it *MorphTokenUpdateDailyInflationRateIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *MorphTokenUpdateDailyInflationRateIterator) Error() error { +func (it *MorphTokenUpdateEpochInflationRateIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *MorphTokenUpdateDailyInflationRateIterator) Close() error { +func (it *MorphTokenUpdateEpochInflationRateIterator) Close() error { it.sub.Unsubscribe() return nil } -// MorphTokenUpdateDailyInflationRate represents a UpdateDailyInflationRate event raised by the MorphToken contract. -type MorphTokenUpdateDailyInflationRate struct { - Rate *big.Int - EffectiveDayIndex *big.Int - Raw types.Log // Blockchain specific contextual infos +// MorphTokenUpdateEpochInflationRate represents a UpdateEpochInflationRate event raised by the MorphToken contract. +type MorphTokenUpdateEpochInflationRate struct { + Rate *big.Int + EffectiveEpochIndex *big.Int + Raw types.Log // Blockchain specific contextual infos } -// FilterUpdateDailyInflationRate is a free log retrieval operation binding the contract event 0xceb8faf32dab6cac28ca92d86325e14aa7016715513ad8b353b7de90fb7f02cf. +// FilterUpdateEpochInflationRate is a free log retrieval operation binding the contract event 0xbe80a5653ecb34691beafb0fb70004d50f9032b798f68a2f73a137c4f98ab3f4. // -// Solidity: event UpdateDailyInflationRate(uint256 indexed rate, uint256 indexed effectiveDayIndex) -func (_MorphToken *MorphTokenFilterer) FilterUpdateDailyInflationRate(opts *bind.FilterOpts, rate []*big.Int, effectiveDayIndex []*big.Int) (*MorphTokenUpdateDailyInflationRateIterator, error) { +// Solidity: event UpdateEpochInflationRate(uint256 indexed rate, uint256 indexed effectiveEpochIndex) +func (_MorphToken *MorphTokenFilterer) FilterUpdateEpochInflationRate(opts *bind.FilterOpts, rate []*big.Int, effectiveEpochIndex []*big.Int) (*MorphTokenUpdateEpochInflationRateIterator, error) { var rateRule []interface{} for _, rateItem := range rate { rateRule = append(rateRule, rateItem) } - var effectiveDayIndexRule []interface{} - for _, effectiveDayIndexItem := range effectiveDayIndex { - effectiveDayIndexRule = append(effectiveDayIndexRule, effectiveDayIndexItem) + var effectiveEpochIndexRule []interface{} + for _, effectiveEpochIndexItem := range effectiveEpochIndex { + effectiveEpochIndexRule = append(effectiveEpochIndexRule, effectiveEpochIndexItem) } - logs, sub, err := _MorphToken.contract.FilterLogs(opts, "UpdateDailyInflationRate", rateRule, effectiveDayIndexRule) + logs, sub, err := _MorphToken.contract.FilterLogs(opts, "UpdateEpochInflationRate", rateRule, effectiveEpochIndexRule) if err != nil { return nil, err } - return &MorphTokenUpdateDailyInflationRateIterator{contract: _MorphToken.contract, event: "UpdateDailyInflationRate", logs: logs, sub: sub}, nil + return &MorphTokenUpdateEpochInflationRateIterator{contract: _MorphToken.contract, event: "UpdateEpochInflationRate", logs: logs, sub: sub}, nil } -// WatchUpdateDailyInflationRate is a free log subscription operation binding the contract event 0xceb8faf32dab6cac28ca92d86325e14aa7016715513ad8b353b7de90fb7f02cf. +// WatchUpdateEpochInflationRate is a free log subscription operation binding the contract event 0xbe80a5653ecb34691beafb0fb70004d50f9032b798f68a2f73a137c4f98ab3f4. // -// Solidity: event UpdateDailyInflationRate(uint256 indexed rate, uint256 indexed effectiveDayIndex) -func (_MorphToken *MorphTokenFilterer) WatchUpdateDailyInflationRate(opts *bind.WatchOpts, sink chan<- *MorphTokenUpdateDailyInflationRate, rate []*big.Int, effectiveDayIndex []*big.Int) (event.Subscription, error) { +// Solidity: event UpdateEpochInflationRate(uint256 indexed rate, uint256 indexed effectiveEpochIndex) +func (_MorphToken *MorphTokenFilterer) WatchUpdateEpochInflationRate(opts *bind.WatchOpts, sink chan<- *MorphTokenUpdateEpochInflationRate, rate []*big.Int, effectiveEpochIndex []*big.Int) (event.Subscription, error) { var rateRule []interface{} for _, rateItem := range rate { rateRule = append(rateRule, rateItem) } - var effectiveDayIndexRule []interface{} - for _, effectiveDayIndexItem := range effectiveDayIndex { - effectiveDayIndexRule = append(effectiveDayIndexRule, effectiveDayIndexItem) + var effectiveEpochIndexRule []interface{} + for _, effectiveEpochIndexItem := range effectiveEpochIndex { + effectiveEpochIndexRule = append(effectiveEpochIndexRule, effectiveEpochIndexItem) } - logs, sub, err := _MorphToken.contract.WatchLogs(opts, "UpdateDailyInflationRate", rateRule, effectiveDayIndexRule) + logs, sub, err := _MorphToken.contract.WatchLogs(opts, "UpdateEpochInflationRate", rateRule, effectiveEpochIndexRule) if err != nil { return nil, err } @@ -1710,8 +1710,8 @@ func (_MorphToken *MorphTokenFilterer) WatchUpdateDailyInflationRate(opts *bind. select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(MorphTokenUpdateDailyInflationRate) - if err := _MorphToken.contract.UnpackLog(event, "UpdateDailyInflationRate", log); err != nil { + event := new(MorphTokenUpdateEpochInflationRate) + if err := _MorphToken.contract.UnpackLog(event, "UpdateEpochInflationRate", log); err != nil { return err } event.Raw = log @@ -1732,12 +1732,12 @@ func (_MorphToken *MorphTokenFilterer) WatchUpdateDailyInflationRate(opts *bind. }), nil } -// ParseUpdateDailyInflationRate is a log parse operation binding the contract event 0xceb8faf32dab6cac28ca92d86325e14aa7016715513ad8b353b7de90fb7f02cf. +// ParseUpdateEpochInflationRate is a log parse operation binding the contract event 0xbe80a5653ecb34691beafb0fb70004d50f9032b798f68a2f73a137c4f98ab3f4. // -// Solidity: event UpdateDailyInflationRate(uint256 indexed rate, uint256 indexed effectiveDayIndex) -func (_MorphToken *MorphTokenFilterer) ParseUpdateDailyInflationRate(log types.Log) (*MorphTokenUpdateDailyInflationRate, error) { - event := new(MorphTokenUpdateDailyInflationRate) - if err := _MorphToken.contract.UnpackLog(event, "UpdateDailyInflationRate", log); err != nil { +// Solidity: event UpdateEpochInflationRate(uint256 indexed rate, uint256 indexed effectiveEpochIndex) +func (_MorphToken *MorphTokenFilterer) ParseUpdateEpochInflationRate(log types.Log) (*MorphTokenUpdateEpochInflationRate, error) { + event := new(MorphTokenUpdateEpochInflationRate) + if err := _MorphToken.contract.UnpackLog(event, "UpdateEpochInflationRate", log); err != nil { return nil, err } event.Raw = log diff --git a/bindings/bindings/morphtoken_more.go b/bindings/bindings/morphtoken_more.go index 27d74215d..ad6a02723 100644 --- a/bindings/bindings/morphtoken_more.go +++ b/bindings/bindings/morphtoken_more.go @@ -9,11 +9,11 @@ import ( "morph-l2/bindings/solc" ) -const MorphTokenStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract\":\"contracts/l2/system/MorphToken.sol:MorphToken\",\"label\":\"_initialized\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_uint8\"},{\"astId\":1001,\"contract\":\"contracts/l2/system/MorphToken.sol:MorphToken\",\"label\":\"_initializing\",\"offset\":1,\"slot\":\"0\",\"type\":\"t_bool\"},{\"astId\":1002,\"contract\":\"contracts/l2/system/MorphToken.sol:MorphToken\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_array(t_uint256)1016_storage\"},{\"astId\":1003,\"contract\":\"contracts/l2/system/MorphToken.sol:MorphToken\",\"label\":\"_owner\",\"offset\":0,\"slot\":\"51\",\"type\":\"t_address\"},{\"astId\":1004,\"contract\":\"contracts/l2/system/MorphToken.sol:MorphToken\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"52\",\"type\":\"t_array(t_uint256)1015_storage\"},{\"astId\":1005,\"contract\":\"contracts/l2/system/MorphToken.sol:MorphToken\",\"label\":\"_name\",\"offset\":0,\"slot\":\"101\",\"type\":\"t_string_storage\"},{\"astId\":1006,\"contract\":\"contracts/l2/system/MorphToken.sol:MorphToken\",\"label\":\"_symbol\",\"offset\":0,\"slot\":\"102\",\"type\":\"t_string_storage\"},{\"astId\":1007,\"contract\":\"contracts/l2/system/MorphToken.sol:MorphToken\",\"label\":\"_totalSupply\",\"offset\":0,\"slot\":\"103\",\"type\":\"t_uint256\"},{\"astId\":1008,\"contract\":\"contracts/l2/system/MorphToken.sol:MorphToken\",\"label\":\"_balances\",\"offset\":0,\"slot\":\"104\",\"type\":\"t_mapping(t_address,t_uint256)\"},{\"astId\":1009,\"contract\":\"contracts/l2/system/MorphToken.sol:MorphToken\",\"label\":\"_allowances\",\"offset\":0,\"slot\":\"105\",\"type\":\"t_mapping(t_address,t_mapping(t_address,t_uint256))\"},{\"astId\":1010,\"contract\":\"contracts/l2/system/MorphToken.sol:MorphToken\",\"label\":\"_dailyInflationRates\",\"offset\":0,\"slot\":\"106\",\"type\":\"t_array(t_struct(DailyInflationRate)1017_storage)dyn_storage\"},{\"astId\":1011,\"contract\":\"contracts/l2/system/MorphToken.sol:MorphToken\",\"label\":\"_inflations\",\"offset\":0,\"slot\":\"107\",\"type\":\"t_mapping(t_uint256,t_uint256)\"},{\"astId\":1012,\"contract\":\"contracts/l2/system/MorphToken.sol:MorphToken\",\"label\":\"_inflationMintedDays\",\"offset\":0,\"slot\":\"108\",\"type\":\"t_uint256\"},{\"astId\":1013,\"contract\":\"contracts/l2/system/MorphToken.sol:MorphToken\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"109\",\"type\":\"t_array(t_uint256)1014_storage\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"},\"t_array(t_struct(DailyInflationRate)1017_storage)dyn_storage\":{\"encoding\":\"dynamic_array\",\"label\":\"struct IMorphToken.DailyInflationRate[]\",\"numberOfBytes\":\"32\"},\"t_array(t_uint256)1014_storage\":{\"encoding\":\"inplace\",\"label\":\"uint256[38]\",\"numberOfBytes\":\"1216\"},\"t_array(t_uint256)1015_storage\":{\"encoding\":\"inplace\",\"label\":\"uint256[49]\",\"numberOfBytes\":\"1568\"},\"t_array(t_uint256)1016_storage\":{\"encoding\":\"inplace\",\"label\":\"uint256[50]\",\"numberOfBytes\":\"1600\"},\"t_bool\":{\"encoding\":\"inplace\",\"label\":\"bool\",\"numberOfBytes\":\"1\"},\"t_mapping(t_address,t_mapping(t_address,t_uint256))\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e mapping(address =\u003e uint256))\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_mapping(t_address,t_uint256)\"},\"t_mapping(t_address,t_uint256)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e uint256)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_uint256\"},\"t_mapping(t_uint256,t_uint256)\":{\"encoding\":\"mapping\",\"label\":\"mapping(uint256 =\u003e uint256)\",\"numberOfBytes\":\"32\",\"key\":\"t_uint256\",\"value\":\"t_uint256\"},\"t_string_storage\":{\"encoding\":\"bytes\",\"label\":\"string\",\"numberOfBytes\":\"32\"},\"t_struct(DailyInflationRate)1017_storage\":{\"encoding\":\"inplace\",\"label\":\"struct IMorphToken.DailyInflationRate\",\"numberOfBytes\":\"64\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"},\"t_uint8\":{\"encoding\":\"inplace\",\"label\":\"uint8\",\"numberOfBytes\":\"1\"}}}" +const MorphTokenStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract\":\"contracts/l2/system/MorphToken.sol:MorphToken\",\"label\":\"_initialized\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_uint8\"},{\"astId\":1001,\"contract\":\"contracts/l2/system/MorphToken.sol:MorphToken\",\"label\":\"_initializing\",\"offset\":1,\"slot\":\"0\",\"type\":\"t_bool\"},{\"astId\":1002,\"contract\":\"contracts/l2/system/MorphToken.sol:MorphToken\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_array(t_uint256)1016_storage\"},{\"astId\":1003,\"contract\":\"contracts/l2/system/MorphToken.sol:MorphToken\",\"label\":\"_owner\",\"offset\":0,\"slot\":\"51\",\"type\":\"t_address\"},{\"astId\":1004,\"contract\":\"contracts/l2/system/MorphToken.sol:MorphToken\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"52\",\"type\":\"t_array(t_uint256)1015_storage\"},{\"astId\":1005,\"contract\":\"contracts/l2/system/MorphToken.sol:MorphToken\",\"label\":\"_name\",\"offset\":0,\"slot\":\"101\",\"type\":\"t_string_storage\"},{\"astId\":1006,\"contract\":\"contracts/l2/system/MorphToken.sol:MorphToken\",\"label\":\"_symbol\",\"offset\":0,\"slot\":\"102\",\"type\":\"t_string_storage\"},{\"astId\":1007,\"contract\":\"contracts/l2/system/MorphToken.sol:MorphToken\",\"label\":\"_totalSupply\",\"offset\":0,\"slot\":\"103\",\"type\":\"t_uint256\"},{\"astId\":1008,\"contract\":\"contracts/l2/system/MorphToken.sol:MorphToken\",\"label\":\"_balances\",\"offset\":0,\"slot\":\"104\",\"type\":\"t_mapping(t_address,t_uint256)\"},{\"astId\":1009,\"contract\":\"contracts/l2/system/MorphToken.sol:MorphToken\",\"label\":\"_allowances\",\"offset\":0,\"slot\":\"105\",\"type\":\"t_mapping(t_address,t_mapping(t_address,t_uint256))\"},{\"astId\":1010,\"contract\":\"contracts/l2/system/MorphToken.sol:MorphToken\",\"label\":\"_epochInflationRates\",\"offset\":0,\"slot\":\"106\",\"type\":\"t_array(t_struct(EpochInflationRate)1017_storage)dyn_storage\"},{\"astId\":1011,\"contract\":\"contracts/l2/system/MorphToken.sol:MorphToken\",\"label\":\"_inflations\",\"offset\":0,\"slot\":\"107\",\"type\":\"t_mapping(t_uint256,t_uint256)\"},{\"astId\":1012,\"contract\":\"contracts/l2/system/MorphToken.sol:MorphToken\",\"label\":\"_inflationMintedEpochs\",\"offset\":0,\"slot\":\"108\",\"type\":\"t_uint256\"},{\"astId\":1013,\"contract\":\"contracts/l2/system/MorphToken.sol:MorphToken\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"109\",\"type\":\"t_array(t_uint256)1014_storage\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"},\"t_array(t_struct(EpochInflationRate)1017_storage)dyn_storage\":{\"encoding\":\"dynamic_array\",\"label\":\"struct IMorphToken.EpochInflationRate[]\",\"numberOfBytes\":\"32\"},\"t_array(t_uint256)1014_storage\":{\"encoding\":\"inplace\",\"label\":\"uint256[38]\",\"numberOfBytes\":\"1216\"},\"t_array(t_uint256)1015_storage\":{\"encoding\":\"inplace\",\"label\":\"uint256[49]\",\"numberOfBytes\":\"1568\"},\"t_array(t_uint256)1016_storage\":{\"encoding\":\"inplace\",\"label\":\"uint256[50]\",\"numberOfBytes\":\"1600\"},\"t_bool\":{\"encoding\":\"inplace\",\"label\":\"bool\",\"numberOfBytes\":\"1\"},\"t_mapping(t_address,t_mapping(t_address,t_uint256))\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e mapping(address =\u003e uint256))\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_mapping(t_address,t_uint256)\"},\"t_mapping(t_address,t_uint256)\":{\"encoding\":\"mapping\",\"label\":\"mapping(address =\u003e uint256)\",\"numberOfBytes\":\"32\",\"key\":\"t_address\",\"value\":\"t_uint256\"},\"t_mapping(t_uint256,t_uint256)\":{\"encoding\":\"mapping\",\"label\":\"mapping(uint256 =\u003e uint256)\",\"numberOfBytes\":\"32\",\"key\":\"t_uint256\",\"value\":\"t_uint256\"},\"t_string_storage\":{\"encoding\":\"bytes\",\"label\":\"string\",\"numberOfBytes\":\"32\"},\"t_struct(EpochInflationRate)1017_storage\":{\"encoding\":\"inplace\",\"label\":\"struct IMorphToken.EpochInflationRate\",\"numberOfBytes\":\"64\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"},\"t_uint8\":{\"encoding\":\"inplace\",\"label\":\"uint8\",\"numberOfBytes\":\"1\"}}}" var MorphTokenStorageLayout = new(solc.StorageLayout) -var MorphTokenDeployedBin = "0x608060405234801561000f575f80fd5b506004361061018f575f3560e01c8063715018a6116100dd578063a457c2d711610088578063cd4281d011610063578063cd4281d0146103af578063dd62ed3e146103d6578063f2fde38b1461041b575f80fd5b8063a457c2d714610381578063a9059cbb14610394578063c553f7b3146103a7575f80fd5b8063944fa746116100b8578063944fa7461461034757806395d89b4114610366578063a29bfb2c1461036e575f80fd5b8063715018a6146102fa578063807de443146103025780638da5cb5b14610329575f80fd5b8063395093511161013d5780635ea94e6f116101185780635ea94e6f146102aa5780636fe0e395146102b257806370a08231146102c5575f80fd5b806339509351146102365780633d9353fe14610249578063405abb4114610295575f80fd5b806318160ddd1161016d57806318160ddd1461020257806323b872dd14610214578063313ce56714610227575f80fd5b806306fdde0314610193578063095ea7b3146101b15780630cb92c13146101d4575b5f80fd5b61019b61042e565b6040516101a89190611619565b60405180910390f35b6101c46101bf3660046116ab565b6104be565b60405190151581526020016101a8565b6101e76101e23660046116d3565b6104d7565b604080518251815260209283015192810192909252016101a8565b6067545b6040519081526020016101a8565b6101c46102223660046116ea565b61052e565b604051601281526020016101a8565b6101c46102443660046116ab565b610551565b6102707f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a8565b6102a86102a3366004611723565b61059c565b005b606c54610206565b6102a86102c0366004611817565b61070c565b6102066102d3366004611886565b73ffffffffffffffffffffffffffffffffffffffff165f9081526068602052604090205490565b6102a861095f565b6102707f000000000000000000000000000000000000000000000000000000000000000081565b60335473ffffffffffffffffffffffffffffffffffffffff16610270565b6102066103553660046116d3565b5f908152606b602052604090205490565b61019b610972565b6102a861037c3660046116d3565b610981565b6101c461038f3660046116ab565b610d44565b6101c46103a23660046116ab565b610dee565b606a54610206565b6102707f000000000000000000000000000000000000000000000000000000000000000081565b6102066103e43660046118a6565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260696020908152604080832093909416825291909152205490565b6102a8610429366004611886565b610dfb565b60606065805461043d906118d7565b80601f0160208091040260200160405190810160405280929190818152602001828054610469906118d7565b80156104b45780601f1061048b576101008083540402835291602001916104b4565b820191905f5260205f20905b81548152906001019060200180831161049757829003601f168201915b5050505050905090565b5f336104cb818585610eb2565b60019150505b92915050565b604080518082019091525f8082526020820152606a82815481106104fd576104fd611928565b905f5260205f2090600202016040518060400160405290815f82015481526020016001820154815250509050919050565b5f3361053b858285611019565b6105468585856110ef565b506001949350505050565b335f81815260696020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104cb9082908690610597908790611982565b610eb2565b6105a46112f2565b606a80546105b490600190611995565b815481106105c4576105c4611928565b905f5260205f209060020201600101548111610667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f6566666563746976652064617973206166746572206d7573742062652067726560448201527f61746572207468616e206265666f72650000000000000000000000000000000060648201526084015b60405180910390fd5b60408051808201825283815260208101838152606a80546001810182555f91825292517f116fea137db6e131133e7f2bab296045d8f41cc5607279db17b218cab0929a5160029094029384015590517f116fea137db6e131133e7f2bab296045d8f41cc5607279db17b218cab0929a52909201919091559051829184917fceb8faf32dab6cac28ca92d86325e14aa7016715513ad8b353b7de90fb7f02cf9190a35050565b5f54610100900460ff161580801561072a57505f54600160ff909116105b806107435750303b15801561074357505f5460ff166001145b6107cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161065e565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561082b575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610833611373565b606561083f86826119f1565b50606661084c85826119f1565b506108573384611411565b6040805180820182528381525f60208201818152606a805460018101825590835292517f116fea137db6e131133e7f2bab296045d8f41cc5607279db17b218cab0929a51600290940293840155517f116fea137db6e131133e7f2bab296045d8f41cc5607279db17b218cab0929a5290920191909155905183907fceb8faf32dab6cac28ca92d86325e14aa7016715513ad8b353b7de90fb7f02cf908390a38015610958575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6109676112f2565b6109705f611504565b565b60606066805461043d906118d7565b337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614610a20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6f6e6c79207265636f726420636f6e747261637420616c6c6f77656400000000604482015260640161065e565b5f620151807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632cc138be6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a8e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab29190611b0d565b610abc9042611995565b610ac69190611b24565b610ad1906001611982565b9050818111610b62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f746865207370656369666965642074696d6520686173206e6f7420796574206260448201527f65656e2072656163686564000000000000000000000000000000000000000000606482015260840161065e565b606c54821015610bce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f616c6c20696e666c6174696f6e73206d696e7465640000000000000000000000604482015260640161065e565b606c545b828111610d31575f606a5f81548110610bed57610bed611928565b5f9182526020822060029091020154606a54909250610c0e90600190611995565b90505b8015610c775782606a8281548110610c2b57610c2b611928565b905f5260205f2090600202016001015411610c6557606a8181548110610c5357610c53611928565b905f5260205f2090600202015f015491505b80610c6f81611b5c565b915050610c11565b50662386f26fc1000081606754610c8e9190611b90565b610c989190611b24565b5f838152606b60205260409020819055610cd3907f000000000000000000000000000000000000000000000000000000000000000090611411565b817f0d82c0920038b8dc7f633e18585f37092ba957b84876fcf833d6841f69eaa327606b5f8581526020019081526020015f2054604051610d1691815260200190565b60405180910390a25080610d2981611ba7565b915050610bd2565b50610d3d826001611982565b606c555050565b335f81815260696020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610de1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f64656372656173656420616c6c6f77616e63652062656c6f77207a65726f0000604482015260640161065e565b6105468286868403610eb2565b5f336104cb8185856110ef565b610e036112f2565b73ffffffffffffffffffffffffffffffffffffffff8116610ea6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161065e565b610eaf81611504565b50565b73ffffffffffffffffffffffffffffffffffffffff8316610f2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f617070726f76652066726f6d20746865207a65726f2061646472657373000000604482015260640161065e565b73ffffffffffffffffffffffffffffffffffffffff8216610fac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f617070726f766520746f20746865207a65726f20616464726573730000000000604482015260640161065e565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526069602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381165f908152606960209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110e957818110156110dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f696e73756666696369656e7420616c6c6f77616e636500000000000000000000604482015260640161065e565b6110e98484848403610eb2565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661116c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f20616464726573730000604482015260640161065e565b73ffffffffffffffffffffffffffffffffffffffff82166111e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f206164647265737300000000604482015260640161065e565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526068602052604090205481811015611278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f7472616e7366657220616d6f756e7420657863656564732062616c616e636500604482015260640161065e565b73ffffffffffffffffffffffffffffffffffffffff8085165f8181526068602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112e49086815260200190565b60405180910390a350505050565b60335473ffffffffffffffffffffffffffffffffffffffff163314610970576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161065e565b5f54610100900460ff16611409576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161065e565b61097061157a565b73ffffffffffffffffffffffffffffffffffffffff821661148e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6d696e7420746f20746865207a65726f20616464726573730000000000000000604482015260640161065e565b8060675f82825461149f9190611982565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f818152606860209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16611610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161065e565b61097033611504565b5f602080835283518060208501525f5b8181101561164557858101830151858201604001528201611629565b505f6040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146116a6575f80fd5b919050565b5f80604083850312156116bc575f80fd5b6116c583611683565b946020939093013593505050565b5f602082840312156116e3575f80fd5b5035919050565b5f805f606084860312156116fc575f80fd5b61170584611683565b925061171360208501611683565b9150604084013590509250925092565b5f8060408385031215611734575f80fd5b50508035926020909101359150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f83011261177f575f80fd5b813567ffffffffffffffff8082111561179a5761179a611743565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156117e0576117e0611743565b816040528381528660208588010111156117f8575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f805f806080858703121561182a575f80fd5b843567ffffffffffffffff80821115611841575f80fd5b61184d88838901611770565b95506020870135915080821115611862575f80fd5b5061186f87828801611770565b949794965050505060408301359260600135919050565b5f60208284031215611896575f80fd5b61189f82611683565b9392505050565b5f80604083850312156118b7575f80fd5b6118c083611683565b91506118ce60208401611683565b90509250929050565b600181811c908216806118eb57607f821691505b602082108103611922577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156104d1576104d1611955565b818103818111156104d1576104d1611955565b601f8211156119ec57805f5260205f20601f840160051c810160208510156119cd5750805b601f840160051c820191505b81811015610958575f81556001016119d9565b505050565b815167ffffffffffffffff811115611a0b57611a0b611743565b611a1f81611a1984546118d7565b846119a8565b602080601f831160018114611a71575f8415611a3b5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555611b05565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015611abd57888601518255948401946001909101908401611a9e565b5085821015611af957878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f60208284031215611b1d575f80fd5b5051919050565b5f82611b57577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f81611b6a57611b6a611955565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b80820281158282048414176104d1576104d1611955565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611bd757611bd7611955565b506001019056fea164736f6c6343000818000a" +var MorphTokenDeployedBin = "0x608060405234801561000f575f80fd5b506004361061018f575f3560e01c8063715018a6116100dd578063a457c2d711610088578063cd4281d011610063578063cd4281d0146103af578063dd62ed3e146103d6578063f2fde38b1461041b575f80fd5b8063a457c2d714610381578063a9059cbb14610394578063c553f7b3146103a7575f80fd5b8063944fa746116100b8578063944fa7461461034757806395d89b4114610366578063a29bfb2c1461036e575f80fd5b8063715018a6146102fa578063807de443146103025780638da5cb5b14610329575f80fd5b8063395093511161013d5780636d0c4a26116101185780636d0c4a26146102845780636fe0e395146102b257806370a08231146102c5575f80fd5b806339509351146102105780633d9353fe14610223578063405abb411461026f575f80fd5b806318160ddd1161016d57806318160ddd146101e657806323b872dd146101ee578063313ce56714610201575f80fd5b806306fdde0314610193578063095ea7b3146101b15780630b88a984146101d4575b5f80fd5b61019b61042e565b6040516101a891906115f1565b60405180910390f35b6101c46101bf366004611683565b6104be565b60405190151581526020016101a8565b606c545b6040519081526020016101a8565b6067546101d8565b6101c46101fc3660046116ab565b6104d7565b604051601281526020016101a8565b6101c461021e366004611683565b6104fa565b61024a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a8565b61028261027d3660046116e4565b610545565b005b610297610292366004611704565b6106b5565b604080518251815260209283015192810192909252016101a8565b6102826102c03660046117ef565b61070c565b6101d86102d336600461185e565b73ffffffffffffffffffffffffffffffffffffffff165f9081526068602052604090205490565b61028261095f565b61024a7f000000000000000000000000000000000000000000000000000000000000000081565b60335473ffffffffffffffffffffffffffffffffffffffff1661024a565b6101d8610355366004611704565b5f908152606b602052604090205490565b61019b610972565b61028261037c366004611704565b610981565b6101c461038f366004611683565b610d1c565b6101c46103a2366004611683565b610dc6565b606a546101d8565b61024a7f000000000000000000000000000000000000000000000000000000000000000081565b6101d86103e436600461187e565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260696020908152604080832093909416825291909152205490565b61028261042936600461185e565b610dd3565b60606065805461043d906118af565b80601f0160208091040260200160405190810160405280929190818152602001828054610469906118af565b80156104b45780601f1061048b576101008083540402835291602001916104b4565b820191905f5260205f20905b81548152906001019060200180831161049757829003601f168201915b5050505050905090565b5f336104cb818585610e8a565b60019150505b92915050565b5f336104e4858285610ff1565b6104ef8585856110c7565b506001949350505050565b335f81815260696020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104cb908290869061054090879061192d565b610e8a565b61054d6112ca565b606a805461055d90600190611940565b8154811061056d5761056d611953565b905f5260205f209060020201600101548111610610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f6566666563746976652065706f636873206166746572206d757374206265206760448201527f726561746572207468616e206265666f7265000000000000000000000000000060648201526084015b60405180910390fd5b60408051808201825283815260208101838152606a80546001810182555f91825292517f116fea137db6e131133e7f2bab296045d8f41cc5607279db17b218cab0929a5160029094029384015590517f116fea137db6e131133e7f2bab296045d8f41cc5607279db17b218cab0929a52909201919091559051829184917fbe80a5653ecb34691beafb0fb70004d50f9032b798f68a2f73a137c4f98ab3f49190a35050565b604080518082019091525f8082526020820152606a82815481106106db576106db611953565b905f5260205f2090600202016040518060400160405290815f82015481526020016001820154815250509050919050565b5f54610100900460ff161580801561072a57505f54600160ff909116105b806107435750303b15801561074357505f5460ff166001145b6107cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610607565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561082b575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61083361134b565b606561083f86826119c9565b50606661084c85826119c9565b5061085733846113e9565b6040805180820182528381525f60208201818152606a805460018101825590835292517f116fea137db6e131133e7f2bab296045d8f41cc5607279db17b218cab0929a51600290940293840155517f116fea137db6e131133e7f2bab296045d8f41cc5607279db17b218cab0929a5290920191909155905183907fbe80a5653ecb34691beafb0fb70004d50f9032b798f68a2f73a137c4f98ab3f4908390a38015610958575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6109676112ca565b6109705f6114dc565b565b60606066805461043d906118af565b337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614610a20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6f6e6c79207265636f726420636f6e747261637420616c6c6f776564000000006044820152606401610607565b807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663766718086040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a8a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aae9190611ae5565b11610b3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f746865207370656369666965642074696d6520686173206e6f7420796574206260448201527f65656e20726561636865640000000000000000000000000000000000000000006064820152608401610607565b606c54811015610ba7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f616c6c20696e666c6174696f6e73206d696e74656400000000000000000000006044820152606401610607565b606c545b818111610d0a575f606a5f81548110610bc657610bc6611953565b5f9182526020822060029091020154606a54909250610be790600190611940565b90505b8015610c505782606a8281548110610c0457610c04611953565b905f5260205f2090600202016001015411610c3e57606a8181548110610c2c57610c2c611953565b905f5260205f2090600202015f015491505b80610c4881611afc565b915050610bea565b50662386f26fc1000081606754610c679190611b30565b610c719190611b47565b5f838152606b60205260409020819055610cac907f0000000000000000000000000000000000000000000000000000000000000000906113e9565b817f0d82c0920038b8dc7f633e18585f37092ba957b84876fcf833d6841f69eaa327606b5f8581526020019081526020015f2054604051610cef91815260200190565b60405180910390a25080610d0281611b7f565b915050610bab565b50610d1681600161192d565b606c5550565b335f81815260696020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610db9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f64656372656173656420616c6c6f77616e63652062656c6f77207a65726f00006044820152606401610607565b6104ef8286868403610e8a565b5f336104cb8185856110c7565b610ddb6112ca565b73ffffffffffffffffffffffffffffffffffffffff8116610e7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610607565b610e87816114dc565b50565b73ffffffffffffffffffffffffffffffffffffffff8316610f07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f617070726f76652066726f6d20746865207a65726f20616464726573730000006044820152606401610607565b73ffffffffffffffffffffffffffffffffffffffff8216610f84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f617070726f766520746f20746865207a65726f206164647265737300000000006044820152606401610607565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526069602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381165f908152606960209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110c157818110156110b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f696e73756666696369656e7420616c6c6f77616e6365000000000000000000006044820152606401610607565b6110c18484848403610e8a565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316611144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f206164647265737300006044820152606401610607565b73ffffffffffffffffffffffffffffffffffffffff82166111c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f2061646472657373000000006044820152606401610607565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526068602052604090205481811015611250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f7472616e7366657220616d6f756e7420657863656564732062616c616e6365006044820152606401610607565b73ffffffffffffffffffffffffffffffffffffffff8085165f8181526068602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112bc9086815260200190565b60405180910390a350505050565b60335473ffffffffffffffffffffffffffffffffffffffff163314610970576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610607565b5f54610100900460ff166113e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610607565b610970611552565b73ffffffffffffffffffffffffffffffffffffffff8216611466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f6d696e7420746f20746865207a65726f206164647265737300000000000000006044820152606401610607565b8060675f828254611477919061192d565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f818152606860209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166115e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610607565b610970336114dc565b5f602080835283518060208501525f5b8181101561161d57858101830151858201604001528201611601565b505f6040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461167e575f80fd5b919050565b5f8060408385031215611694575f80fd5b61169d8361165b565b946020939093013593505050565b5f805f606084860312156116bd575f80fd5b6116c68461165b565b92506116d46020850161165b565b9150604084013590509250925092565b5f80604083850312156116f5575f80fd5b50508035926020909101359150565b5f60208284031215611714575f80fd5b5035919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f830112611757575f80fd5b813567ffffffffffffffff808211156117725761177261171b565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156117b8576117b861171b565b816040528381528660208588010111156117d0575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f805f8060808587031215611802575f80fd5b843567ffffffffffffffff80821115611819575f80fd5b61182588838901611748565b9550602087013591508082111561183a575f80fd5b5061184787828801611748565b949794965050505060408301359260600135919050565b5f6020828403121561186e575f80fd5b6118778261165b565b9392505050565b5f806040838503121561188f575f80fd5b6118988361165b565b91506118a66020840161165b565b90509250929050565b600181811c908216806118c357607f821691505b6020821081036118fa577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156104d1576104d1611900565b818103818111156104d1576104d1611900565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b601f8211156119c457805f5260205f20601f840160051c810160208510156119a55750805b601f840160051c820191505b81811015610958575f81556001016119b1565b505050565b815167ffffffffffffffff8111156119e3576119e361171b565b6119f7816119f184546118af565b84611980565b602080601f831160018114611a49575f8415611a135750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555611add565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015611a9557888601518255948401946001909101908401611a76565b5085821015611ad157878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f60208284031215611af5575f80fd5b5051919050565b5f81611b0a57611b0a611900565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b80820281158282048414176104d1576104d1611900565b5f82611b7a577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611baf57611baf611900565b506001019056fea164736f6c6343000818000a" func init() { if err := json.Unmarshal([]byte(MorphTokenStorageLayoutJSON), MorphTokenStorageLayout); err != nil { diff --git a/bindings/bindings/record.go b/bindings/bindings/record.go index 8c1cce0f4..bd8a0ab7a 100644 --- a/bindings/bindings/record.go +++ b/bindings/bindings/record.go @@ -60,7 +60,7 @@ type IRecordRollupEpochInfo struct { // RecordMetaData contains all meta data concerning the Record contract. var RecordMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"dataLength\",\"type\":\"uint256\"}],\"name\":\"BatchSubmissionsUploaded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"dataLength\",\"type\":\"uint256\"}],\"name\":\"RewardEpochsUploaded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"dataLength\",\"type\":\"uint256\"}],\"name\":\"RollupEpochsUploaded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DISTRIBUTE_CONTRACT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GOV_CONTRACT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"L2_STAKING_CONTRACT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MORPH_TOKEN_CONTRACT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SEQUENCER_CONTRACT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"batchIndex\",\"type\":\"uint256\"}],\"name\":\"batchSubmissions\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"submitter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"startBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rollupTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rollupBlock\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"end\",\"type\":\"uint256\"}],\"name\":\"getBatchSubmissions\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"submitter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"startBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rollupTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rollupBlock\",\"type\":\"uint256\"}],\"internalType\":\"structIRecord.BatchSubmission[]\",\"name\":\"res\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"end\",\"type\":\"uint256\"}],\"name\":\"getRewardEpochs\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockCount\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"sequencers\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"sequencerBlocks\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"sequencerRatios\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"sequencerCommissions\",\"type\":\"uint256[]\"}],\"internalType\":\"structIRecord.RewardEpochInfo[]\",\"name\":\"res\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"end\",\"type\":\"uint256\"}],\"name\":\"getRollupEpochs\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"submitter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endBlock\",\"type\":\"uint256\"}],\"internalType\":\"structIRecord.RollupEpochInfo[]\",\"name\":\"res\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oracle\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_nextBatchSubmissionIndex\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"latestRewardEpochBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextBatchSubmissionIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextRewardEpochIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextRollupEpochIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"submitter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"startBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rollupTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rollupBlock\",\"type\":\"uint256\"}],\"internalType\":\"structIRecord.BatchSubmission[]\",\"name\":\"_batchSubmissions\",\"type\":\"tuple[]\"}],\"name\":\"recordFinalizedBatchSubmissions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockCount\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"sequencers\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"sequencerBlocks\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"sequencerRatios\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"sequencerCommissions\",\"type\":\"uint256[]\"}],\"internalType\":\"structIRecord.RewardEpochInfo[]\",\"name\":\"_rewardEpochs\",\"type\":\"tuple[]\"}],\"name\":\"recordRewardEpochs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"submitter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endBlock\",\"type\":\"uint256\"}],\"internalType\":\"structIRecord.RollupEpochInfo[]\",\"name\":\"_rollupEpochs\",\"type\":\"tuple[]\"}],\"name\":\"recordRollupEpochs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rewardEpochIndex\",\"type\":\"uint256\"}],\"name\":\"rewardEpochs\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockCount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rollupEpochIndex\",\"type\":\"uint256\"}],\"name\":\"rollupEpochs\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"submitter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endBlock\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_latestBlock\",\"type\":\"uint256\"}],\"name\":\"setLatestRewardEpochBlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oracle\",\"type\":\"address\"}],\"name\":\"setOracleAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x610120604052348015610010575f80fd5b5073530000000000000000000000000000000000001060805273530000000000000000000000000000000000001260a05273530000000000000000000000000000000000000360c05273530000000000000000000000000000000000001160e0527353000000000000000000000000000000000000046101005260805160a05160c05160e05161010051612cfd6100e35f395f6102bc01525f81816101e6015261194301525f6103e301525f818161039e0152610ebd01525f818161050801528181610fb201526114ea0152612cfd5ff3fe608060405234801561000f575f80fd5b506004361061019a575f3560e01c80637828a905116100e8578063a24231e811610093578063cd6dc6871161006e578063cd6dc687146104f0578063d557714114610503578063f2fde38b1461052a578063fe49dbc91461053d575f80fd5b8063a24231e814610405578063a795f40914610495578063cb6293e8146104d0575f80fd5b8063807de443116100c3578063807de443146103995780638da5cb5b146103c05780638e21d5fb146103de575f80fd5b80637828a905146102b757806378f908e1146102de5780637dc0d1d014610379575f80fd5b8063484f8d0f1161014857806364b4abe31161012357806364b4abe31461027c5780636ea0396e1461029c578063715018a6146102af575f80fd5b8063484f8d0f146102405780634c69c00f146102495780634e3ca4061461025c575f80fd5b80632fbf6487116101785780632fbf6487146101d85780633d9353fe146101e157806341ed047f1461022d575f80fd5b80630776c0f71461019e57806310c9873f146101ba5780631511e1b1146101cf575b5f80fd5b6101a7606c5481565b6040519081526020015b60405180910390f35b6101cd6101c8366004612633565b610550565b005b6101a760695481565b6101a7606b5481565b6102087f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b1565b6101cd61023b36600461264a565b610676565b6101a7606a5481565b6101cd6102573660046126e1565b6109b5565b61026f61026a366004612701565b610a67565b6040516101b19190612721565b61028f61028a366004612701565b610bff565b6040516101b191906127a4565b6101cd6102aa366004612824565b610da0565b6101cd611a7d565b6102087f000000000000000000000000000000000000000000000000000000000000000081565b6103376102ec366004612633565b60666020525f9081526040902080546001820154600283015460038401546004850154600590950154939473ffffffffffffffffffffffffffffffffffffffff909316939192909186565b6040805196875273ffffffffffffffffffffffffffffffffffffffff9095166020870152938501929092526060840152608083015260a082015260c0016101b1565b6065546102089073ffffffffffffffffffffffffffffffffffffffff1681565b6102087f000000000000000000000000000000000000000000000000000000000000000081565b60335473ffffffffffffffffffffffffffffffffffffffff16610208565b6102087f000000000000000000000000000000000000000000000000000000000000000081565b610458610413366004612633565b60676020525f908152604090208054600182015460028301546003840154600490940154929373ffffffffffffffffffffffffffffffffffffffff9092169290919085565b6040805195865273ffffffffffffffffffffffffffffffffffffffff9094166020860152928401919091526060830152608082015260a0016101b1565b6104bb6104a3366004612633565b60686020525f90815260409020805460019091015482565b604080519283526020830191909152016101b1565b6104e36104de366004612701565b611a90565b6040516101b191906128bb565b6101cd6104fe3660046129e9565b611d44565b6102087f000000000000000000000000000000000000000000000000000000000000000081565b6101cd6105383660046126e1565b611fd5565b6101cd61054b366004612a11565b612072565b60655473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105d25760405162461bcd60e51b815260206004820152601360248201527f6f6e6c79206f7261636c6520616c6c6f7765640000000000000000000000000060448201526064015b60405180910390fd5b606c54156106225760405162461bcd60e51b815260206004820152600b60248201527f616c72656164792073657400000000000000000000000000000000000000000060448201526064016105c9565b5f81116106715760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964206c617465737420626c6f636b00000000000000000000000060448201526064016105c9565b606c55565b60655473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106f35760405162461bcd60e51b815260206004820152601360248201527f6f6e6c79206f7261636c6520616c6c6f7765640000000000000000000000000060448201526064016105c9565b806107405760405162461bcd60e51b815260206004820152601760248201527f656d707479206261746368207375626d697373696f6e7300000000000000000060448201526064016105c9565b5f5b8181101561096157806069546107589190612a9b565b83838381811061076a5761076a612ab4565b905060c002015f0135146107c05760405162461bcd60e51b815260206004820152600d60248201527f696e76616c696420696e6465780000000000000000000000000000000000000060448201526064016105c9565b6040518060c001604052808484848181106107dd576107dd612ab4565b905060c002015f013581526020018484848181106107fd576107fd612ab4565b905060c00201602001602081019061081591906126e1565b73ffffffffffffffffffffffffffffffffffffffff16815260200184848481811061084257610842612ab4565b905060c0020160400135815260200184848481811061086357610863612ab4565b905060c0020160600135815260200184848481811061088457610884612ab4565b905060c002016080013581526020018484848181106108a5576108a5612ab4565b905060c0020160a0013581525060665f8585858181106108c7576108c7612ab4565b60c002919091013582525060208082019290925260409081015f208351815591830151600180840180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90931692909217909155908301516002830155606083015160038301556080830151600483015560a09092015160059091015501610742565b506069546040518281527f1c517c9850aa84483b0b2434e58bab4c7967f0b1a34d8b18a6ad22436add010e9060200160405180910390a28181905060695f8282546109ac9190612a9b565b90915550505050565b6109bd61237d565b73ffffffffffffffffffffffffffffffffffffffff8116610a205760405162461bcd60e51b815260206004820152601660248201527f696e76616c6964206f7261636c6520616464726573730000000000000000000060448201526064016105c9565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b606082821015610ab95760405162461bcd60e51b815260206004820152600d60248201527f696e76616c696420696e6465780000000000000000000000000000000000000060448201526064016105c9565b610ac38383612ae1565b610ace906001612a9b565b67ffffffffffffffff811115610ae657610ae6612af4565b604051908082528060200260200182016040528015610b5a57816020015b610b476040518060a001604052805f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81525090565b815260200190600190039081610b045790505b509050825b828111610bf8575f81815260676020908152604091829020825160a08101845281548152600182015473ffffffffffffffffffffffffffffffffffffffff16928101929092526002810154928201929092526003820154606082015260049091015460808201528251839083908110610bda57610bda612ab4565b60200260200101819052508080610bf090612b21565b915050610b5f565b5092915050565b606082821015610c515760405162461bcd60e51b815260206004820152600d60248201527f696e76616c696420696e6465780000000000000000000000000000000000000060448201526064016105c9565b610c5b8383612ae1565b610c66906001612a9b565b67ffffffffffffffff811115610c7e57610c7e612af4565b604051908082528060200260200182016040528015610cf857816020015b610ce56040518060c001604052805f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f81525090565b815260200190600190039081610c9c5790505b509050825b828111610bf8575f81815260666020908152604091829020825160c08101845281548152600182015473ffffffffffffffffffffffffffffffffffffffff1692810192909252600281015492820192909252600382015460608201526004820154608082015260059091015460a08201528251839083908110610d8257610d82612ab4565b60200260200101819052508080610d9890612b21565b915050610cfd565b60655473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e1d5760405162461bcd60e51b815260206004820152601360248201527f6f6e6c79206f7261636c6520616c6c6f7765640000000000000000000000000060448201526064016105c9565b80610e6a5760405162461bcd60e51b815260206004820152601360248201527f656d707479207265776172642065706f6368730000000000000000000000000060448201526064016105c9565b5f606c5411610ebb5760405162461bcd60e51b815260206004820152601960248201527f737461727420626c6f636b2073686f756c64206265207365740000000000000060448201526064016105c9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663766718086040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f24573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f489190612b58565b606b54600190610f59908490612a9b565b610f639190612ae1565b10610fb05760405162461bcd60e51b815260206004820152601e60248201527f66757475726520646174612063616e6e6f742062652075706c6f61646564000060448201526064016105c9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a29bfb2c600184849050606b54610fff9190612a9b565b6110099190612ae1565b6040518263ffffffff1660e01b815260040161102791815260200190565b5f604051808303815f87803b15801561103e575f80fd5b505af1158015611050573d5f803e3d5ffd5b505f9250829150505b82811015611a12575f84848381811061107457611074612ab4565b90506020028101906110869190612b6f565b611094906040810190612bab565b905090505f8585848181106110ab576110ab612ab4565b90506020028101906110bd9190612b6f565b606b54903591506110cf908490612a9b565b811461111d5760405162461bcd60e51b815260206004820152601360248201527f696e76616c69642065706f636820696e6465780000000000000000000000000060448201526064016105c9565b8186868581811061113057611130612ab4565b90506020028101906111429190612b6f565b611150906060810190612bab565b905014801561119157508186868581811061116d5761116d612ab4565b905060200281019061117f9190612b6f565b61118d906080810190612bab565b9050145b80156111cf5750818686858181106111ab576111ab612ab4565b90506020028101906111bd9190612b6f565b6111cb9060a0810190612bab565b9050145b61121b5760405162461bcd60e51b815260206004820152601360248201527f696e76616c69642064617461206c656e6774680000000000000000000000000060448201526064016105c9565b85858481811061122d5761122d612ab4565b905060200281019061123f9190612b6f565b61124d906020013585612a9b565b93506040518060c0016040528082815260200187878681811061127257611272612ab4565b90506020028101906112849190612b6f565b60200135815260200187878681811061129f5761129f612ab4565b90506020028101906112b19190612b6f565b6112bf906040810190612bab565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050509082525060200187878681811061130757611307612ab4565b90506020028101906113199190612b6f565b611327906060810190612bab565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050509082525060200187878681811061136f5761136f612ab4565b90506020028101906113819190612b6f565b61138f906080810190612bab565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152505050908252506020018787868181106113d7576113d7612ab4565b90506020028101906113e99190612b6f565b6113f79060a0810190612bab565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201829052509390945250508381526068602090815260409182902084518155848201516001820155918401518051929350611462926002850192919091019061255e565b506060820151805161147e9160038401916020909101906125e6565b506080820151805161149a9160048401916020909101906125e6565b5060a082015180516114b69160058401916020909101906125e6565b50506040517f944fa746000000000000000000000000000000000000000000000000000000008152600481018390525f91507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063944fa74690602401602060405180830381865afa158015611544573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115689190612b58565b90505f805f8567ffffffffffffffff81111561158657611586612af4565b6040519080825280602002602001820160405280156115af578160200160208202803683370190505b5090505f8667ffffffffffffffff8111156115cc576115cc612af4565b6040519080825280602002602001820160405280156115f5578160200160208202803683370190505b5090505f5b878110156118765760148c8c8b81811061161657611616612ab4565b90506020028101906116289190612b6f565b6116369060a0810190612bab565b8381811061164657611646612ab4565b90506020020135111561169b5760405162461bcd60e51b815260206004820152601d60248201527f696e76616c69642073657175656e6365727320636f6d6d697373696f6e00000060448201526064016105c9565b8b8b8a8181106116ad576116ad612ab4565b90506020028101906116bf9190612b6f565b6116cd906080810190612bab565b828181106116dd576116dd612ab4565b90506020020135846116ef9190612a9b565b93508b8b8a81811061170357611703612ab4565b90506020028101906117159190612b6f565b611723906060810190612bab565b8281811061173357611733612ab4565b90506020020135856117459190612a9b565b94505f6305f5e1008d8d8c81811061175f5761175f612ab4565b90506020028101906117719190612b6f565b61177f906080810190612bab565b8481811061178f5761178f612ab4565b90506020020135886117a19190612c16565b6117ab9190612c2d565b905060648d8d8c8181106117c1576117c1612ab4565b90506020028101906117d39190612b6f565b6117e19060a0810190612bab565b848181106117f1576117f1612ab4565b90506020020135826118039190612c16565b61180d9190612c2d565b83838151811061181f5761181f612ab4565b60200260200101818152505082828151811061183d5761183d612ab4565b6020026020010151816118509190612ae1565b84838151811061186257611862612ab4565b6020908102919091010152506001016115fa565b508a8a8981811061188957611889612ab4565b905060200281019061189b9190612b6f565b6020013584146118ed5760405162461bcd60e51b815260206004820152601960248201527f696e76616c69642073657175656e6365727320626c6f636b730000000000000060448201526064016105c9565b6305f5e1008311156119415760405162461bcd60e51b815260206004820152601960248201527f696e76616c69642073657175656e6365727320726174696f730000000000000060448201526064016105c9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663cdd0c50e878d8d8c81811061199057611990612ab4565b90506020028101906119a29190612b6f565b6119b0906040810190612bab565b86866040518663ffffffff1660e01b81526004016119d2959493929190612c65565b5f604051808303815f87803b1580156119e9575f80fd5b505af11580156119fb573d5f803e3d5ffd5b505060019099019850611059975050505050505050565b50606b546040518381527f4aa68efd05426e59a9d43654a55a2a74c3e8840894d6e291f8f83085e3a6d1ea9060200160405180910390a280606c5f828254611a5a9190612a9b565b9091555050606b80548391905f90611a73908490612a9b565b9091555050505050565b611a8561237d565b611a8e5f6123e4565b565b606082821015611ae25760405162461bcd60e51b815260206004820152600d60248201527f696e76616c696420696e6465780000000000000000000000000000000000000060448201526064016105c9565b611aec8383612ae1565b611af7906001612a9b565b67ffffffffffffffff811115611b0f57611b0f612af4565b604051908082528060200260200182016040528015611b7757816020015b611b646040518060c001604052805f81526020015f8152602001606081526020016060815260200160608152602001606081525090565b815260200190600190039081611b2d5790505b509050825b828111610bf8575f81815260686020908152604091829020825160c0810184528154815260018201548184015260028201805485518186028101860187528181529295939493860193830182828015611c0957602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611bde575b5050505050815260200160038201805480602002602001604051908101604052809291908181526020018280548015611c5f57602002820191905f5260205f20905b815481526020019060010190808311611c4b575b5050505050815260200160048201805480602002602001604051908101604052809291908181526020018280548015611cb557602002820191905f5260205f20905b815481526020019060010190808311611ca1575b5050505050815260200160058201805480602002602001604051908101604052809291908181526020018280548015611d0b57602002820191905f5260205f20905b815481526020019060010190808311611cf7575b505050505081525050828281518110611d2657611d26612ab4565b60200260200101819052508080611d3c90612b21565b915050611b7c565b5f54610100900460ff1615808015611d6257505f54600160ff909116105b80611d7b5750303b158015611d7b57505f5460ff166001145b611ded5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016105c9565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015611e49575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b815f03611ebe5760405162461bcd60e51b815260206004820152602360248201527f696e76616c6964206e657874206261746368207375626d697373696f6e20696e60448201527f646578000000000000000000000000000000000000000000000000000000000060648201526084016105c9565b73ffffffffffffffffffffffffffffffffffffffff8316611f215760405162461bcd60e51b815260206004820152601660248201527f696e76616c6964206f7261636c6520616464726573730000000000000000000060448201526064016105c9565b611f2961245a565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851617905560698290558015611fd0575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b611fdd61237d565b73ffffffffffffffffffffffffffffffffffffffff81166120665760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016105c9565b61206f816123e4565b50565b60655473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120ef5760405162461bcd60e51b815260206004820152601360248201527f6f6e6c79206f7261636c6520616c6c6f7765640000000000000000000000000060448201526064016105c9565b8061213c5760405162461bcd60e51b815260206004820152601360248201527f656d70747920726f6c6c75702065706f6368730000000000000000000000000060448201526064016105c9565b5f5b818110156123325780606a546121549190612a9b565b83838381811061216657612166612ab4565b905060a002015f0135146121bc5760405162461bcd60e51b815260206004820152600d60248201527f696e76616c696420696e6465780000000000000000000000000000000000000060448201526064016105c9565b6040518060a001604052808484848181106121d9576121d9612ab4565b905060a002015f013581526020018484848181106121f9576121f9612ab4565b905060a00201602001602081019061221191906126e1565b73ffffffffffffffffffffffffffffffffffffffff16815260200184848481811061223e5761223e612ab4565b905060a0020160400135815260200184848481811061225f5761225f612ab4565b905060a0020160600135815260200184848481811061228057612280612ab4565b905060a002016080013581525060675f8585858181106122a2576122a2612ab4565b60a002919091013582525060208082019290925260409081015f208351815591830151600180840180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90931692909217909155908301516002830155606083015160038301556080909201516004909101550161213e565b50606a546040518281527f0c53377f3eed25c9883c67adabc3f817b4fdcde29f550a6a26c0676ed29929299060200160405180910390a281819050606a5f8282546109ac9190612a9b565b60335473ffffffffffffffffffffffffffffffffffffffff163314611a8e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105c9565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166124d65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016105c9565b611a8e5f54610100900460ff166125555760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016105c9565b611a8e336123e4565b828054828255905f5260205f209081019282156125d6579160200282015b828111156125d657825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90911617825560209092019160019091019061257c565b506125e292915061261f565b5090565b828054828255905f5260205f209081019282156125d6579160200282015b828111156125d6578251825591602001919060010190612604565b5b808211156125e2575f8155600101612620565b5f60208284031215612643575f80fd5b5035919050565b5f806020838503121561265b575f80fd5b823567ffffffffffffffff80821115612672575f80fd5b818501915085601f830112612685575f80fd5b813581811115612693575f80fd5b86602060c0830285010111156126a7575f80fd5b60209290920196919550909350505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146126dc575f80fd5b919050565b5f602082840312156126f1575f80fd5b6126fa826126b9565b9392505050565b5f8060408385031215612712575f80fd5b50508035926020909101359150565b602080825282518282018190525f919060409081850190868401855b82811015612797578151805185528681015173ffffffffffffffffffffffffffffffffffffffff16878601528581015186860152606080820151908601526080908101519085015260a0909301929085019060010161273d565b5091979650505050505050565b602080825282518282018190525f919060409081850190868401855b82811015612797578151805185528681015173ffffffffffffffffffffffffffffffffffffffff16878601528581015186860152606080820151908601526080808201519086015260a0908101519085015260c090930192908501906001016127c0565b5f8060208385031215612835575f80fd5b823567ffffffffffffffff8082111561284c575f80fd5b818501915085601f83011261285f575f80fd5b81358181111561286d575f80fd5b8660208260051b85010111156126a7575f80fd5b5f815180845260208085019450602084015f5b838110156128b057815187529582019590820190600101612894565b509495945050505050565b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b838110156129db578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc001855281518051845287810151888501528681015160c0888601819052815190860181905260e08601918a01905f905b8082101561297457825173ffffffffffffffffffffffffffffffffffffffff168452928b0192918b01916001919091019061293e565b5050506060808301518683038288015261298e8382612881565b92505050608080830151868303828801526129a98382612881565b9250505060a080830151925085820381870152506129c78183612881565b9689019694505050908601906001016128e2565b509098975050505050505050565b5f80604083850312156129fa575f80fd5b612a03836126b9565b946020939093013593505050565b5f8060208385031215612a22575f80fd5b823567ffffffffffffffff80821115612a39575f80fd5b818501915085601f830112612a4c575f80fd5b813581811115612a5a575f80fd5b86602060a0830285010111156126a7575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115612aae57612aae612a6e565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b81810381811115612aae57612aae612a6e565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612b5157612b51612a6e565b5060010190565b5f60208284031215612b68575f80fd5b5051919050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41833603018112612ba1575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612bde575f80fd5b83018035915067ffffffffffffffff821115612bf8575f80fd5b6020019150600581901b3603821315612c0f575f80fd5b9250929050565b8082028115828204841417612aae57612aae612a6e565b5f82612c60577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b858152608060208083018290529082018590525f90869060a08401835b88811015612cbb5773ffffffffffffffffffffffffffffffffffffffff612ca8856126b9565b1682529282019290820190600101612c82565b508481036040860152612cce8188612881565b925050508281036060840152612ce48185612881565b9897505050505050505056fea164736f6c6343000818000a", + Bin: "0x610120604052348015610010575f80fd5b5073530000000000000000000000000000000000001360805273530000000000000000000000000000000000001560a05273530000000000000000000000000000000000000360c05273530000000000000000000000000000000000001460e0527353000000000000000000000000000000000000046101005260805160a05160c05160e05161010051612d226100e35f395f6102bc01525f81816101e6015261196801525f6103e301525f818161039e0152610ebd01525f818161050801528181610fd7015261150f0152612d225ff3fe608060405234801561000f575f80fd5b506004361061019a575f3560e01c80637828a905116100e8578063a24231e811610093578063cd6dc6871161006e578063cd6dc687146104f0578063d557714114610503578063f2fde38b1461052a578063fe49dbc91461053d575f80fd5b8063a24231e814610405578063a795f40914610495578063cb6293e8146104d0575f80fd5b8063807de443116100c3578063807de443146103995780638da5cb5b146103c05780638e21d5fb146103de575f80fd5b80637828a905146102b757806378f908e1146102de5780637dc0d1d014610379575f80fd5b8063484f8d0f1161014857806364b4abe31161012357806364b4abe31461027c5780636ea0396e1461029c578063715018a6146102af575f80fd5b8063484f8d0f146102405780634c69c00f146102495780634e3ca4061461025c575f80fd5b80632fbf6487116101785780632fbf6487146101d85780633d9353fe146101e157806341ed047f1461022d575f80fd5b80630776c0f71461019e57806310c9873f146101ba5780631511e1b1146101cf575b5f80fd5b6101a7606c5481565b6040519081526020015b60405180910390f35b6101cd6101c8366004612658565b610550565b005b6101a760695481565b6101a7606b5481565b6102087f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b1565b6101cd61023b36600461266f565b610676565b6101a7606a5481565b6101cd610257366004612706565b6109b5565b61026f61026a366004612726565b610a67565b6040516101b19190612746565b61028f61028a366004612726565b610bff565b6040516101b191906127c9565b6101cd6102aa366004612849565b610da0565b6101cd611aa2565b6102087f000000000000000000000000000000000000000000000000000000000000000081565b6103376102ec366004612658565b60666020525f9081526040902080546001820154600283015460038401546004850154600590950154939473ffffffffffffffffffffffffffffffffffffffff909316939192909186565b6040805196875273ffffffffffffffffffffffffffffffffffffffff9095166020870152938501929092526060840152608083015260a082015260c0016101b1565b6065546102089073ffffffffffffffffffffffffffffffffffffffff1681565b6102087f000000000000000000000000000000000000000000000000000000000000000081565b60335473ffffffffffffffffffffffffffffffffffffffff16610208565b6102087f000000000000000000000000000000000000000000000000000000000000000081565b610458610413366004612658565b60676020525f908152604090208054600182015460028301546003840154600490940154929373ffffffffffffffffffffffffffffffffffffffff9092169290919085565b6040805195865273ffffffffffffffffffffffffffffffffffffffff9094166020860152928401919091526060830152608082015260a0016101b1565b6104bb6104a3366004612658565b60686020525f90815260409020805460019091015482565b604080519283526020830191909152016101b1565b6104e36104de366004612726565b611ab5565b6040516101b191906128e0565b6101cd6104fe366004612a0e565b611d69565b6102087f000000000000000000000000000000000000000000000000000000000000000081565b6101cd610538366004612706565b611ffa565b6101cd61054b366004612a36565b612097565b60655473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105d25760405162461bcd60e51b815260206004820152601360248201527f6f6e6c79206f7261636c6520616c6c6f7765640000000000000000000000000060448201526064015b60405180910390fd5b606c54156106225760405162461bcd60e51b815260206004820152600b60248201527f616c72656164792073657400000000000000000000000000000000000000000060448201526064016105c9565b5f81116106715760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964206c617465737420626c6f636b00000000000000000000000060448201526064016105c9565b606c55565b60655473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106f35760405162461bcd60e51b815260206004820152601360248201527f6f6e6c79206f7261636c6520616c6c6f7765640000000000000000000000000060448201526064016105c9565b806107405760405162461bcd60e51b815260206004820152601760248201527f656d707479206261746368207375626d697373696f6e7300000000000000000060448201526064016105c9565b5f5b8181101561096157806069546107589190612ac0565b83838381811061076a5761076a612ad9565b905060c002015f0135146107c05760405162461bcd60e51b815260206004820152600d60248201527f696e76616c696420696e6465780000000000000000000000000000000000000060448201526064016105c9565b6040518060c001604052808484848181106107dd576107dd612ad9565b905060c002015f013581526020018484848181106107fd576107fd612ad9565b905060c0020160200160208101906108159190612706565b73ffffffffffffffffffffffffffffffffffffffff16815260200184848481811061084257610842612ad9565b905060c0020160400135815260200184848481811061086357610863612ad9565b905060c0020160600135815260200184848481811061088457610884612ad9565b905060c002016080013581526020018484848181106108a5576108a5612ad9565b905060c0020160a0013581525060665f8585858181106108c7576108c7612ad9565b60c002919091013582525060208082019290925260409081015f208351815591830151600180840180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90931692909217909155908301516002830155606083015160038301556080830151600483015560a09092015160059091015501610742565b506069546040518281527f1c517c9850aa84483b0b2434e58bab4c7967f0b1a34d8b18a6ad22436add010e9060200160405180910390a28181905060695f8282546109ac9190612ac0565b90915550505050565b6109bd6123a2565b73ffffffffffffffffffffffffffffffffffffffff8116610a205760405162461bcd60e51b815260206004820152601660248201527f696e76616c6964206f7261636c6520616464726573730000000000000000000060448201526064016105c9565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b606082821015610ab95760405162461bcd60e51b815260206004820152600d60248201527f696e76616c696420696e6465780000000000000000000000000000000000000060448201526064016105c9565b610ac38383612b06565b610ace906001612ac0565b67ffffffffffffffff811115610ae657610ae6612b19565b604051908082528060200260200182016040528015610b5a57816020015b610b476040518060a001604052805f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81525090565b815260200190600190039081610b045790505b509050825b828111610bf8575f81815260676020908152604091829020825160a08101845281548152600182015473ffffffffffffffffffffffffffffffffffffffff16928101929092526002810154928201929092526003820154606082015260049091015460808201528251839083908110610bda57610bda612ad9565b60200260200101819052508080610bf090612b46565b915050610b5f565b5092915050565b606082821015610c515760405162461bcd60e51b815260206004820152600d60248201527f696e76616c696420696e6465780000000000000000000000000000000000000060448201526064016105c9565b610c5b8383612b06565b610c66906001612ac0565b67ffffffffffffffff811115610c7e57610c7e612b19565b604051908082528060200260200182016040528015610cf857816020015b610ce56040518060c001604052805f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f81525090565b815260200190600190039081610c9c5790505b509050825b828111610bf8575f81815260666020908152604091829020825160c08101845281548152600182015473ffffffffffffffffffffffffffffffffffffffff1692810192909252600281015492820192909252600382015460608201526004820154608082015260059091015460a08201528251839083908110610d8257610d82612ad9565b60200260200101819052508080610d9890612b46565b915050610cfd565b60655473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e1d5760405162461bcd60e51b815260206004820152601360248201527f6f6e6c79206f7261636c6520616c6c6f7765640000000000000000000000000060448201526064016105c9565b80610e6a5760405162461bcd60e51b815260206004820152601360248201527f656d707479207265776172642065706f6368730000000000000000000000000060448201526064016105c9565b5f606c5411610ebb5760405162461bcd60e51b815260206004820152601960248201527f737461727420626c6f636b2073686f756c64206265207365740000000000000060448201526064016105c9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663766718086040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f24573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f489190612b7d565b606b54600190610f59908490612ac0565b610f639190612b06565b10610fd55760405162461bcd60e51b8152602060048201526024808201527f756e66696e69736865642065706f6368732063616e6e6f742062652075706c6f60448201527f616465640000000000000000000000000000000000000000000000000000000060648201526084016105c9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a29bfb2c600184849050606b546110249190612ac0565b61102e9190612b06565b6040518263ffffffff1660e01b815260040161104c91815260200190565b5f604051808303815f87803b158015611063575f80fd5b505af1158015611075573d5f803e3d5ffd5b505f9250829150505b82811015611a37575f84848381811061109957611099612ad9565b90506020028101906110ab9190612b94565b6110b9906040810190612bd0565b905090505f8585848181106110d0576110d0612ad9565b90506020028101906110e29190612b94565b606b54903591506110f4908490612ac0565b81146111425760405162461bcd60e51b815260206004820152601360248201527f696e76616c69642065706f636820696e6465780000000000000000000000000060448201526064016105c9565b8186868581811061115557611155612ad9565b90506020028101906111679190612b94565b611175906060810190612bd0565b90501480156111b657508186868581811061119257611192612ad9565b90506020028101906111a49190612b94565b6111b2906080810190612bd0565b9050145b80156111f45750818686858181106111d0576111d0612ad9565b90506020028101906111e29190612b94565b6111f09060a0810190612bd0565b9050145b6112405760405162461bcd60e51b815260206004820152601360248201527f696e76616c69642064617461206c656e6774680000000000000000000000000060448201526064016105c9565b85858481811061125257611252612ad9565b90506020028101906112649190612b94565b611272906020013585612ac0565b93506040518060c0016040528082815260200187878681811061129757611297612ad9565b90506020028101906112a99190612b94565b6020013581526020018787868181106112c4576112c4612ad9565b90506020028101906112d69190612b94565b6112e4906040810190612bd0565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050509082525060200187878681811061132c5761132c612ad9565b905060200281019061133e9190612b94565b61134c906060810190612bd0565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050509082525060200187878681811061139457611394612ad9565b90506020028101906113a69190612b94565b6113b4906080810190612bd0565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152505050908252506020018787868181106113fc576113fc612ad9565b905060200281019061140e9190612b94565b61141c9060a0810190612bd0565b808060200260200160405190810160405280939291908181526020018383602002808284375f92018290525093909452505083815260686020908152604091829020845181558482015160018201559184015180519293506114879260028501929190910190612583565b50606082015180516114a391600384019160209091019061260b565b50608082015180516114bf91600484019160209091019061260b565b5060a082015180516114db91600584019160209091019061260b565b50506040517f944fa746000000000000000000000000000000000000000000000000000000008152600481018390525f91507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063944fa74690602401602060405180830381865afa158015611569573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061158d9190612b7d565b90505f805f8567ffffffffffffffff8111156115ab576115ab612b19565b6040519080825280602002602001820160405280156115d4578160200160208202803683370190505b5090505f8667ffffffffffffffff8111156115f1576115f1612b19565b60405190808252806020026020018201604052801561161a578160200160208202803683370190505b5090505f5b8781101561189b5760148c8c8b81811061163b5761163b612ad9565b905060200281019061164d9190612b94565b61165b9060a0810190612bd0565b8381811061166b5761166b612ad9565b9050602002013511156116c05760405162461bcd60e51b815260206004820152601d60248201527f696e76616c69642073657175656e6365727320636f6d6d697373696f6e00000060448201526064016105c9565b8b8b8a8181106116d2576116d2612ad9565b90506020028101906116e49190612b94565b6116f2906080810190612bd0565b8281811061170257611702612ad9565b90506020020135846117149190612ac0565b93508b8b8a81811061172857611728612ad9565b905060200281019061173a9190612b94565b611748906060810190612bd0565b8281811061175857611758612ad9565b905060200201358561176a9190612ac0565b94505f6305f5e1008d8d8c81811061178457611784612ad9565b90506020028101906117969190612b94565b6117a4906080810190612bd0565b848181106117b4576117b4612ad9565b90506020020135886117c69190612c3b565b6117d09190612c52565b905060648d8d8c8181106117e6576117e6612ad9565b90506020028101906117f89190612b94565b6118069060a0810190612bd0565b8481811061181657611816612ad9565b90506020020135826118289190612c3b565b6118329190612c52565b83838151811061184457611844612ad9565b60200260200101818152505082828151811061186257611862612ad9565b6020026020010151816118759190612b06565b84838151811061188757611887612ad9565b60209081029190910101525060010161161f565b508a8a898181106118ae576118ae612ad9565b90506020028101906118c09190612b94565b6020013584146119125760405162461bcd60e51b815260206004820152601960248201527f696e76616c69642073657175656e6365727320626c6f636b730000000000000060448201526064016105c9565b6305f5e1008311156119665760405162461bcd60e51b815260206004820152601960248201527f696e76616c69642073657175656e6365727320726174696f730000000000000060448201526064016105c9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663cdd0c50e878d8d8c8181106119b5576119b5612ad9565b90506020028101906119c79190612b94565b6119d5906040810190612bd0565b86866040518663ffffffff1660e01b81526004016119f7959493929190612c8a565b5f604051808303815f87803b158015611a0e575f80fd5b505af1158015611a20573d5f803e3d5ffd5b50506001909901985061107e975050505050505050565b50606b546040518381527f4aa68efd05426e59a9d43654a55a2a74c3e8840894d6e291f8f83085e3a6d1ea9060200160405180910390a280606c5f828254611a7f9190612ac0565b9091555050606b80548391905f90611a98908490612ac0565b9091555050505050565b611aaa6123a2565b611ab35f612409565b565b606082821015611b075760405162461bcd60e51b815260206004820152600d60248201527f696e76616c696420696e6465780000000000000000000000000000000000000060448201526064016105c9565b611b118383612b06565b611b1c906001612ac0565b67ffffffffffffffff811115611b3457611b34612b19565b604051908082528060200260200182016040528015611b9c57816020015b611b896040518060c001604052805f81526020015f8152602001606081526020016060815260200160608152602001606081525090565b815260200190600190039081611b525790505b509050825b828111610bf8575f81815260686020908152604091829020825160c0810184528154815260018201548184015260028201805485518186028101860187528181529295939493860193830182828015611c2e57602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611c03575b5050505050815260200160038201805480602002602001604051908101604052809291908181526020018280548015611c8457602002820191905f5260205f20905b815481526020019060010190808311611c70575b5050505050815260200160048201805480602002602001604051908101604052809291908181526020018280548015611cda57602002820191905f5260205f20905b815481526020019060010190808311611cc6575b5050505050815260200160058201805480602002602001604051908101604052809291908181526020018280548015611d3057602002820191905f5260205f20905b815481526020019060010190808311611d1c575b505050505081525050828281518110611d4b57611d4b612ad9565b60200260200101819052508080611d6190612b46565b915050611ba1565b5f54610100900460ff1615808015611d8757505f54600160ff909116105b80611da05750303b158015611da057505f5460ff166001145b611e125760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016105c9565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015611e6e575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b815f03611ee35760405162461bcd60e51b815260206004820152602360248201527f696e76616c6964206e657874206261746368207375626d697373696f6e20696e60448201527f646578000000000000000000000000000000000000000000000000000000000060648201526084016105c9565b73ffffffffffffffffffffffffffffffffffffffff8316611f465760405162461bcd60e51b815260206004820152601660248201527f696e76616c6964206f7261636c6520616464726573730000000000000000000060448201526064016105c9565b611f4e61247f565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851617905560698290558015611ff5575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6120026123a2565b73ffffffffffffffffffffffffffffffffffffffff811661208b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016105c9565b61209481612409565b50565b60655473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121145760405162461bcd60e51b815260206004820152601360248201527f6f6e6c79206f7261636c6520616c6c6f7765640000000000000000000000000060448201526064016105c9565b806121615760405162461bcd60e51b815260206004820152601360248201527f656d70747920726f6c6c75702065706f6368730000000000000000000000000060448201526064016105c9565b5f5b818110156123575780606a546121799190612ac0565b83838381811061218b5761218b612ad9565b905060a002015f0135146121e15760405162461bcd60e51b815260206004820152600d60248201527f696e76616c696420696e6465780000000000000000000000000000000000000060448201526064016105c9565b6040518060a001604052808484848181106121fe576121fe612ad9565b905060a002015f0135815260200184848481811061221e5761221e612ad9565b905060a0020160200160208101906122369190612706565b73ffffffffffffffffffffffffffffffffffffffff16815260200184848481811061226357612263612ad9565b905060a0020160400135815260200184848481811061228457612284612ad9565b905060a002016060013581526020018484848181106122a5576122a5612ad9565b905060a002016080013581525060675f8585858181106122c7576122c7612ad9565b60a002919091013582525060208082019290925260409081015f208351815591830151600180840180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909316929092179091559083015160028301556060830151600383015560809092015160049091015501612163565b50606a546040518281527f0c53377f3eed25c9883c67adabc3f817b4fdcde29f550a6a26c0676ed29929299060200160405180910390a281819050606a5f8282546109ac9190612ac0565b60335473ffffffffffffffffffffffffffffffffffffffff163314611ab35760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105c9565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166124fb5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016105c9565b611ab35f54610100900460ff1661257a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016105c9565b611ab333612409565b828054828255905f5260205f209081019282156125fb579160200282015b828111156125fb57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9091161782556020909201916001909101906125a1565b50612607929150612644565b5090565b828054828255905f5260205f209081019282156125fb579160200282015b828111156125fb578251825591602001919060010190612629565b5b80821115612607575f8155600101612645565b5f60208284031215612668575f80fd5b5035919050565b5f8060208385031215612680575f80fd5b823567ffffffffffffffff80821115612697575f80fd5b818501915085601f8301126126aa575f80fd5b8135818111156126b8575f80fd5b86602060c0830285010111156126cc575f80fd5b60209290920196919550909350505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114612701575f80fd5b919050565b5f60208284031215612716575f80fd5b61271f826126de565b9392505050565b5f8060408385031215612737575f80fd5b50508035926020909101359150565b602080825282518282018190525f919060409081850190868401855b828110156127bc578151805185528681015173ffffffffffffffffffffffffffffffffffffffff16878601528581015186860152606080820151908601526080908101519085015260a09093019290850190600101612762565b5091979650505050505050565b602080825282518282018190525f919060409081850190868401855b828110156127bc578151805185528681015173ffffffffffffffffffffffffffffffffffffffff16878601528581015186860152606080820151908601526080808201519086015260a0908101519085015260c090930192908501906001016127e5565b5f806020838503121561285a575f80fd5b823567ffffffffffffffff80821115612871575f80fd5b818501915085601f830112612884575f80fd5b813581811115612892575f80fd5b8660208260051b85010111156126cc575f80fd5b5f815180845260208085019450602084015f5b838110156128d5578151875295820195908201906001016128b9565b509495945050505050565b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b83811015612a00578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc001855281518051845287810151888501528681015160c0888601819052815190860181905260e08601918a01905f905b8082101561299957825173ffffffffffffffffffffffffffffffffffffffff168452928b0192918b019160019190910190612963565b505050606080830151868303828801526129b383826128a6565b92505050608080830151868303828801526129ce83826128a6565b9250505060a080830151925085820381870152506129ec81836128a6565b968901969450505090860190600101612907565b509098975050505050505050565b5f8060408385031215612a1f575f80fd5b612a28836126de565b946020939093013593505050565b5f8060208385031215612a47575f80fd5b823567ffffffffffffffff80821115612a5e575f80fd5b818501915085601f830112612a71575f80fd5b813581811115612a7f575f80fd5b86602060a0830285010111156126cc575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115612ad357612ad3612a93565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b81810381811115612ad357612ad3612a93565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612b7657612b76612a93565b5060010190565b5f60208284031215612b8d575f80fd5b5051919050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41833603018112612bc6575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612c03575f80fd5b83018035915067ffffffffffffffff821115612c1d575f80fd5b6020019150600581901b3603821315612c34575f80fd5b9250929050565b8082028115828204841417612ad357612ad3612a93565b5f82612c85577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b858152608060208083018290529082018590525f90869060a08401835b88811015612ce05773ffffffffffffffffffffffffffffffffffffffff612ccd856126de565b1682529282019290820190600101612ca7565b508481036040860152612cf381886128a6565b925050508281036060840152612d0981856128a6565b9897505050505050505056fea164736f6c6343000818000a", } // RecordABI is the input ABI used to generate the binding from. diff --git a/bindings/bindings/record_more.go b/bindings/bindings/record_more.go index 2a62b3e5a..39e310952 100644 --- a/bindings/bindings/record_more.go +++ b/bindings/bindings/record_more.go @@ -13,7 +13,7 @@ const RecordStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract\":\"co var RecordStorageLayout = new(solc.StorageLayout) -var RecordDeployedBin = "0x608060405234801561000f575f80fd5b506004361061019a575f3560e01c80637828a905116100e8578063a24231e811610093578063cd6dc6871161006e578063cd6dc687146104f0578063d557714114610503578063f2fde38b1461052a578063fe49dbc91461053d575f80fd5b8063a24231e814610405578063a795f40914610495578063cb6293e8146104d0575f80fd5b8063807de443116100c3578063807de443146103995780638da5cb5b146103c05780638e21d5fb146103de575f80fd5b80637828a905146102b757806378f908e1146102de5780637dc0d1d014610379575f80fd5b8063484f8d0f1161014857806364b4abe31161012357806364b4abe31461027c5780636ea0396e1461029c578063715018a6146102af575f80fd5b8063484f8d0f146102405780634c69c00f146102495780634e3ca4061461025c575f80fd5b80632fbf6487116101785780632fbf6487146101d85780633d9353fe146101e157806341ed047f1461022d575f80fd5b80630776c0f71461019e57806310c9873f146101ba5780631511e1b1146101cf575b5f80fd5b6101a7606c5481565b6040519081526020015b60405180910390f35b6101cd6101c8366004612925565b610550565b005b6101a760695481565b6101a7606b5481565b6102087f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b1565b6101cd61023b36600461293c565b6106c4565b6101a7606a5481565b6101cd6102573660046129d3565b610a51565b61026f61026a3660046129f3565b610b1d565b6040516101b19190612a13565b61028f61028a3660046129f3565b610ccf565b6040516101b19190612a96565b6101cd6102aa366004612b16565b610e8a565b6101cd611c51565b6102087f000000000000000000000000000000000000000000000000000000000000000081565b6103376102ec366004612925565b60666020525f9081526040902080546001820154600283015460038401546004850154600590950154939473ffffffffffffffffffffffffffffffffffffffff909316939192909186565b6040805196875273ffffffffffffffffffffffffffffffffffffffff9095166020870152938501929092526060840152608083015260a082015260c0016101b1565b6065546102089073ffffffffffffffffffffffffffffffffffffffff1681565b6102087f000000000000000000000000000000000000000000000000000000000000000081565b60335473ffffffffffffffffffffffffffffffffffffffff16610208565b6102087f000000000000000000000000000000000000000000000000000000000000000081565b610458610413366004612925565b60676020525f908152604090208054600182015460028301546003840154600490940154929373ffffffffffffffffffffffffffffffffffffffff9092169290919085565b6040805195865273ffffffffffffffffffffffffffffffffffffffff9094166020860152928401919091526060830152608082015260a0016101b1565b6104bb6104a3366004612925565b60686020525f90815260409020805460019091015482565b604080519283526020830191909152016101b1565b6104e36104de3660046129f3565b611c64565b6040516101b19190612bad565b6101cd6104fe366004612cdb565b611f32565b6102087f000000000000000000000000000000000000000000000000000000000000000081565b6101cd6105383660046129d3565b612211565b6101cd61054b366004612d03565b6122c8565b60655473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f6f6e6c79206f7261636c6520616c6c6f7765640000000000000000000000000060448201526064015b60405180910390fd5b606c5415610656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f616c72656164792073657400000000000000000000000000000000000000000060448201526064016105e3565b5f81116106bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c6964206c617465737420626c6f636b00000000000000000000000060448201526064016105e3565b606c55565b60655473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461075b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f6f6e6c79206f7261636c6520616c6c6f7765640000000000000000000000000060448201526064016105e3565b806107c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f656d707479206261746368207375626d697373696f6e7300000000000000000060448201526064016105e3565b5f5b818110156109fd57806069546107da9190612d8d565b8383838181106107ec576107ec612da6565b905060c002015f01351461085c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f696e76616c696420696e6465780000000000000000000000000000000000000060448201526064016105e3565b6040518060c0016040528084848481811061087957610879612da6565b905060c002015f0135815260200184848481811061089957610899612da6565b905060c0020160200160208101906108b191906129d3565b73ffffffffffffffffffffffffffffffffffffffff1681526020018484848181106108de576108de612da6565b905060c002016040013581526020018484848181106108ff576108ff612da6565b905060c0020160600135815260200184848481811061092057610920612da6565b905060c0020160800135815260200184848481811061094157610941612da6565b905060c0020160a0013581525060665f85858581811061096357610963612da6565b60c002919091013582525060208082019290925260409081015f208351815591830151600180840180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90931692909217909155908301516002830155606083015160038301556080830151600483015560a090920151600590910155016107c4565b506069546040518281527f1c517c9850aa84483b0b2434e58bab4c7967f0b1a34d8b18a6ad22436add010e9060200160405180910390a28181905060695f828254610a489190612d8d565b90915550505050565b610a59612621565b73ffffffffffffffffffffffffffffffffffffffff8116610ad6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f696e76616c6964206f7261636c6520616464726573730000000000000000000060448201526064016105e3565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b606082821015610b89576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f696e76616c696420696e6465780000000000000000000000000000000000000060448201526064016105e3565b610b938383612dd3565b610b9e906001612d8d565b67ffffffffffffffff811115610bb657610bb6612de6565b604051908082528060200260200182016040528015610c2a57816020015b610c176040518060a001604052805f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81525090565b815260200190600190039081610bd45790505b509050825b828111610cc8575f81815260676020908152604091829020825160a08101845281548152600182015473ffffffffffffffffffffffffffffffffffffffff16928101929092526002810154928201929092526003820154606082015260049091015460808201528251839083908110610caa57610caa612da6565b60200260200101819052508080610cc090612e13565b915050610c2f565b5092915050565b606082821015610d3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f696e76616c696420696e6465780000000000000000000000000000000000000060448201526064016105e3565b610d458383612dd3565b610d50906001612d8d565b67ffffffffffffffff811115610d6857610d68612de6565b604051908082528060200260200182016040528015610de257816020015b610dcf6040518060c001604052805f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f81525090565b815260200190600190039081610d865790505b509050825b828111610cc8575f81815260666020908152604091829020825160c08101845281548152600182015473ffffffffffffffffffffffffffffffffffffffff1692810192909252600281015492820192909252600382015460608201526004820154608082015260059091015460a08201528251839083908110610e6c57610e6c612da6565b60200260200101819052508080610e8290612e13565b915050610de7565b60655473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f6f6e6c79206f7261636c6520616c6c6f7765640000000000000000000000000060448201526064016105e3565b80610f88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f656d707479207265776172642065706f6368730000000000000000000000000060448201526064016105e3565b5f606c5411610ff3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f737461727420626c6f636b2073686f756c64206265207365740000000000000060448201526064016105e3565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663766718086040518163ffffffff1660e01b8152600401602060405180830381865afa15801561105c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110809190612e4a565b606b54600190611091908490612d8d565b61109b9190612dd3565b10611102576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f66757475726520646174612063616e6e6f742062652075706c6f61646564000060448201526064016105e3565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a29bfb2c600184849050606b546111519190612d8d565b61115b9190612dd3565b6040518263ffffffff1660e01b815260040161117991815260200190565b5f604051808303815f87803b158015611190575f80fd5b505af11580156111a2573d5f803e3d5ffd5b505f9250829150505b82811015611be6575f8484838181106111c6576111c6612da6565b90506020028101906111d89190612e61565b6111e6906040810190612e9d565b905090505f8585848181106111fd576111fd612da6565b905060200281019061120f9190612e61565b606b5490359150611221908490612d8d565b8114611289576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f696e76616c69642065706f636820696e6465780000000000000000000000000060448201526064016105e3565b8186868581811061129c5761129c612da6565b90506020028101906112ae9190612e61565b6112bc906060810190612e9d565b90501480156112fd5750818686858181106112d9576112d9612da6565b90506020028101906112eb9190612e61565b6112f9906080810190612e9d565b9050145b801561133b57508186868581811061131757611317612da6565b90506020028101906113299190612e61565b6113379060a0810190612e9d565b9050145b6113a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f696e76616c69642064617461206c656e6774680000000000000000000000000060448201526064016105e3565b8585848181106113b3576113b3612da6565b90506020028101906113c59190612e61565b6113d3906020013585612d8d565b93506040518060c001604052808281526020018787868181106113f8576113f8612da6565b905060200281019061140a9190612e61565b60200135815260200187878681811061142557611425612da6565b90506020028101906114379190612e61565b611445906040810190612e9d565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050509082525060200187878681811061148d5761148d612da6565b905060200281019061149f9190612e61565b6114ad906060810190612e9d565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152505050908252506020018787868181106114f5576114f5612da6565b90506020028101906115079190612e61565b611515906080810190612e9d565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050509082525060200187878681811061155d5761155d612da6565b905060200281019061156f9190612e61565b61157d9060a0810190612e9d565b808060200260200160405190810160405280939291908181526020018383602002808284375f92018290525093909452505083815260686020908152604091829020845181558482015160018201559184015180519293506115e89260028501929190910190612850565b50606082015180516116049160038401916020909101906128d8565b50608082015180516116209160048401916020909101906128d8565b5060a0820151805161163c9160058401916020909101906128d8565b50506040517f944fa746000000000000000000000000000000000000000000000000000000008152600481018390525f91507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063944fa74690602401602060405180830381865afa1580156116ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116ee9190612e4a565b90505f805f8567ffffffffffffffff81111561170c5761170c612de6565b604051908082528060200260200182016040528015611735578160200160208202803683370190505b5090505f8667ffffffffffffffff81111561175257611752612de6565b60405190808252806020026020018201604052801561177b578160200160208202803683370190505b5090505f5b87811015611a165760148c8c8b81811061179c5761179c612da6565b90506020028101906117ae9190612e61565b6117bc9060a0810190612e9d565b838181106117cc576117cc612da6565b90506020020135111561183b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f696e76616c69642073657175656e6365727320636f6d6d697373696f6e00000060448201526064016105e3565b8b8b8a81811061184d5761184d612da6565b905060200281019061185f9190612e61565b61186d906080810190612e9d565b8281811061187d5761187d612da6565b905060200201358461188f9190612d8d565b93508b8b8a8181106118a3576118a3612da6565b90506020028101906118b59190612e61565b6118c3906060810190612e9d565b828181106118d3576118d3612da6565b90506020020135856118e59190612d8d565b94505f6305f5e1008d8d8c8181106118ff576118ff612da6565b90506020028101906119119190612e61565b61191f906080810190612e9d565b8481811061192f5761192f612da6565b90506020020135886119419190612f08565b61194b9190612f1f565b905060648d8d8c81811061196157611961612da6565b90506020028101906119739190612e61565b6119819060a0810190612e9d565b8481811061199157611991612da6565b90506020020135826119a39190612f08565b6119ad9190612f1f565b8383815181106119bf576119bf612da6565b6020026020010181815250508282815181106119dd576119dd612da6565b6020026020010151816119f09190612dd3565b848381518110611a0257611a02612da6565b602090810291909101015250600101611780565b508a8a89818110611a2957611a29612da6565b9050602002810190611a3b9190612e61565b602001358414611aa7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f696e76616c69642073657175656e6365727320626c6f636b730000000000000060448201526064016105e3565b6305f5e100831115611b15576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f696e76616c69642073657175656e6365727320726174696f730000000000000060448201526064016105e3565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663cdd0c50e878d8d8c818110611b6457611b64612da6565b9050602002810190611b769190612e61565b611b84906040810190612e9d565b86866040518663ffffffff1660e01b8152600401611ba6959493929190612f57565b5f604051808303815f87803b158015611bbd575f80fd5b505af1158015611bcf573d5f803e3d5ffd5b5050600190990198506111ab975050505050505050565b50606b546040518381527f4aa68efd05426e59a9d43654a55a2a74c3e8840894d6e291f8f83085e3a6d1ea9060200160405180910390a280606c5f828254611c2e9190612d8d565b9091555050606b80548391905f90611c47908490612d8d565b9091555050505050565b611c59612621565b611c625f6126a2565b565b606082821015611cd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f696e76616c696420696e6465780000000000000000000000000000000000000060448201526064016105e3565b611cda8383612dd3565b611ce5906001612d8d565b67ffffffffffffffff811115611cfd57611cfd612de6565b604051908082528060200260200182016040528015611d6557816020015b611d526040518060c001604052805f81526020015f8152602001606081526020016060815260200160608152602001606081525090565b815260200190600190039081611d1b5790505b509050825b828111610cc8575f81815260686020908152604091829020825160c0810184528154815260018201548184015260028201805485518186028101860187528181529295939493860193830182828015611df757602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611dcc575b5050505050815260200160038201805480602002602001604051908101604052809291908181526020018280548015611e4d57602002820191905f5260205f20905b815481526020019060010190808311611e39575b5050505050815260200160048201805480602002602001604051908101604052809291908181526020018280548015611ea357602002820191905f5260205f20905b815481526020019060010190808311611e8f575b5050505050815260200160058201805480602002602001604051908101604052809291908181526020018280548015611ef957602002820191905f5260205f20905b815481526020019060010190808311611ee5575b505050505081525050828281518110611f1457611f14612da6565b60200260200101819052508080611f2a90612e13565b915050611d6a565b5f54610100900460ff1615808015611f5057505f54600160ff909116105b80611f695750303b158015611f6957505f5460ff166001145b611ff5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016105e3565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015612051575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b815f036120e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f696e76616c6964206e657874206261746368207375626d697373696f6e20696e60448201527f646578000000000000000000000000000000000000000000000000000000000060648201526084016105e3565b73ffffffffffffffffffffffffffffffffffffffff831661215d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f696e76616c6964206f7261636c6520616464726573730000000000000000000060448201526064016105e3565b612165612718565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85161790556069829055801561220c575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b612219612621565b73ffffffffffffffffffffffffffffffffffffffff81166122bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016105e3565b6122c5816126a2565b50565b60655473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461235f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f6f6e6c79206f7261636c6520616c6c6f7765640000000000000000000000000060448201526064016105e3565b806123c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f656d70747920726f6c6c75702065706f6368730000000000000000000000000060448201526064016105e3565b5f5b818110156125d65780606a546123de9190612d8d565b8383838181106123f0576123f0612da6565b905060a002015f013514612460576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f696e76616c696420696e6465780000000000000000000000000000000000000060448201526064016105e3565b6040518060a0016040528084848481811061247d5761247d612da6565b905060a002015f0135815260200184848481811061249d5761249d612da6565b905060a0020160200160208101906124b591906129d3565b73ffffffffffffffffffffffffffffffffffffffff1681526020018484848181106124e2576124e2612da6565b905060a0020160400135815260200184848481811061250357612503612da6565b905060a0020160600135815260200184848481811061252457612524612da6565b905060a002016080013581525060675f85858581811061254657612546612da6565b60a002919091013582525060208082019290925260409081015f208351815591830151600180840180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9093169290921790915590830151600283015560608301516003830155608090920151600490910155016123c8565b50606a546040518281527f0c53377f3eed25c9883c67adabc3f817b4fdcde29f550a6a26c0676ed29929299060200160405180910390a281819050606a5f828254610a489190612d8d565b60335473ffffffffffffffffffffffffffffffffffffffff163314611c62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105e3565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166127ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016105e3565b611c625f54610100900460ff16612847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016105e3565b611c62336126a2565b828054828255905f5260205f209081019282156128c8579160200282015b828111156128c857825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90911617825560209092019160019091019061286e565b506128d4929150612911565b5090565b828054828255905f5260205f209081019282156128c8579160200282015b828111156128c85782518255916020019190600101906128f6565b5b808211156128d4575f8155600101612912565b5f60208284031215612935575f80fd5b5035919050565b5f806020838503121561294d575f80fd5b823567ffffffffffffffff80821115612964575f80fd5b818501915085601f830112612977575f80fd5b813581811115612985575f80fd5b86602060c083028501011115612999575f80fd5b60209290920196919550909350505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146129ce575f80fd5b919050565b5f602082840312156129e3575f80fd5b6129ec826129ab565b9392505050565b5f8060408385031215612a04575f80fd5b50508035926020909101359150565b602080825282518282018190525f919060409081850190868401855b82811015612a89578151805185528681015173ffffffffffffffffffffffffffffffffffffffff16878601528581015186860152606080820151908601526080908101519085015260a09093019290850190600101612a2f565b5091979650505050505050565b602080825282518282018190525f919060409081850190868401855b82811015612a89578151805185528681015173ffffffffffffffffffffffffffffffffffffffff16878601528581015186860152606080820151908601526080808201519086015260a0908101519085015260c09093019290850190600101612ab2565b5f8060208385031215612b27575f80fd5b823567ffffffffffffffff80821115612b3e575f80fd5b818501915085601f830112612b51575f80fd5b813581811115612b5f575f80fd5b8660208260051b8501011115612999575f80fd5b5f815180845260208085019450602084015f5b83811015612ba257815187529582019590820190600101612b86565b509495945050505050565b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b83811015612ccd578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc001855281518051845287810151888501528681015160c0888601819052815190860181905260e08601918a01905f905b80821015612c6657825173ffffffffffffffffffffffffffffffffffffffff168452928b0192918b019160019190910190612c30565b50505060608083015186830382880152612c808382612b73565b9250505060808083015186830382880152612c9b8382612b73565b9250505060a08083015192508582038187015250612cb98183612b73565b968901969450505090860190600101612bd4565b509098975050505050505050565b5f8060408385031215612cec575f80fd5b612cf5836129ab565b946020939093013593505050565b5f8060208385031215612d14575f80fd5b823567ffffffffffffffff80821115612d2b575f80fd5b818501915085601f830112612d3e575f80fd5b813581811115612d4c575f80fd5b86602060a083028501011115612999575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115612da057612da0612d60565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b81810381811115612da057612da0612d60565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612e4357612e43612d60565b5060010190565b5f60208284031215612e5a575f80fd5b5051919050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41833603018112612e93575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612ed0575f80fd5b83018035915067ffffffffffffffff821115612eea575f80fd5b6020019150600581901b3603821315612f01575f80fd5b9250929050565b8082028115828204841417612da057612da0612d60565b5f82612f52577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b858152608060208083018290529082018590525f90869060a08401835b88811015612fad5773ffffffffffffffffffffffffffffffffffffffff612f9a856129ab565b1682529282019290820190600101612f74565b508481036040860152612fc08188612b73565b925050508281036060840152612fd68185612b73565b9897505050505050505056fea164736f6c6343000818000a" +var RecordDeployedBin = "0x608060405234801561000f575f80fd5b506004361061019a575f3560e01c80637828a905116100e8578063a24231e811610093578063cd6dc6871161006e578063cd6dc687146104f0578063d557714114610503578063f2fde38b1461052a578063fe49dbc91461053d575f80fd5b8063a24231e814610405578063a795f40914610495578063cb6293e8146104d0575f80fd5b8063807de443116100c3578063807de443146103995780638da5cb5b146103c05780638e21d5fb146103de575f80fd5b80637828a905146102b757806378f908e1146102de5780637dc0d1d014610379575f80fd5b8063484f8d0f1161014857806364b4abe31161012357806364b4abe31461027c5780636ea0396e1461029c578063715018a6146102af575f80fd5b8063484f8d0f146102405780634c69c00f146102495780634e3ca4061461025c575f80fd5b80632fbf6487116101785780632fbf6487146101d85780633d9353fe146101e157806341ed047f1461022d575f80fd5b80630776c0f71461019e57806310c9873f146101ba5780631511e1b1146101cf575b5f80fd5b6101a7606c5481565b6040519081526020015b60405180910390f35b6101cd6101c836600461294a565b610550565b005b6101a760695481565b6101a7606b5481565b6102087f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b1565b6101cd61023b366004612961565b6106c4565b6101a7606a5481565b6101cd6102573660046129f8565b610a51565b61026f61026a366004612a18565b610b1d565b6040516101b19190612a38565b61028f61028a366004612a18565b610ccf565b6040516101b19190612abb565b6101cd6102aa366004612b3b565b610e8a565b6101cd611c76565b6102087f000000000000000000000000000000000000000000000000000000000000000081565b6103376102ec36600461294a565b60666020525f9081526040902080546001820154600283015460038401546004850154600590950154939473ffffffffffffffffffffffffffffffffffffffff909316939192909186565b6040805196875273ffffffffffffffffffffffffffffffffffffffff9095166020870152938501929092526060840152608083015260a082015260c0016101b1565b6065546102089073ffffffffffffffffffffffffffffffffffffffff1681565b6102087f000000000000000000000000000000000000000000000000000000000000000081565b60335473ffffffffffffffffffffffffffffffffffffffff16610208565b6102087f000000000000000000000000000000000000000000000000000000000000000081565b61045861041336600461294a565b60676020525f908152604090208054600182015460028301546003840154600490940154929373ffffffffffffffffffffffffffffffffffffffff9092169290919085565b6040805195865273ffffffffffffffffffffffffffffffffffffffff9094166020860152928401919091526060830152608082015260a0016101b1565b6104bb6104a336600461294a565b60686020525f90815260409020805460019091015482565b604080519283526020830191909152016101b1565b6104e36104de366004612a18565b611c89565b6040516101b19190612bd2565b6101cd6104fe366004612d00565b611f57565b6102087f000000000000000000000000000000000000000000000000000000000000000081565b6101cd6105383660046129f8565b612236565b6101cd61054b366004612d28565b6122ed565b60655473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f6f6e6c79206f7261636c6520616c6c6f7765640000000000000000000000000060448201526064015b60405180910390fd5b606c5415610656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f616c72656164792073657400000000000000000000000000000000000000000060448201526064016105e3565b5f81116106bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c6964206c617465737420626c6f636b00000000000000000000000060448201526064016105e3565b606c55565b60655473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461075b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f6f6e6c79206f7261636c6520616c6c6f7765640000000000000000000000000060448201526064016105e3565b806107c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f656d707479206261746368207375626d697373696f6e7300000000000000000060448201526064016105e3565b5f5b818110156109fd57806069546107da9190612db2565b8383838181106107ec576107ec612dcb565b905060c002015f01351461085c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f696e76616c696420696e6465780000000000000000000000000000000000000060448201526064016105e3565b6040518060c0016040528084848481811061087957610879612dcb565b905060c002015f0135815260200184848481811061089957610899612dcb565b905060c0020160200160208101906108b191906129f8565b73ffffffffffffffffffffffffffffffffffffffff1681526020018484848181106108de576108de612dcb565b905060c002016040013581526020018484848181106108ff576108ff612dcb565b905060c0020160600135815260200184848481811061092057610920612dcb565b905060c0020160800135815260200184848481811061094157610941612dcb565b905060c0020160a0013581525060665f85858581811061096357610963612dcb565b60c002919091013582525060208082019290925260409081015f208351815591830151600180840180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90931692909217909155908301516002830155606083015160038301556080830151600483015560a090920151600590910155016107c4565b506069546040518281527f1c517c9850aa84483b0b2434e58bab4c7967f0b1a34d8b18a6ad22436add010e9060200160405180910390a28181905060695f828254610a489190612db2565b90915550505050565b610a59612646565b73ffffffffffffffffffffffffffffffffffffffff8116610ad6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f696e76616c6964206f7261636c6520616464726573730000000000000000000060448201526064016105e3565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b606082821015610b89576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f696e76616c696420696e6465780000000000000000000000000000000000000060448201526064016105e3565b610b938383612df8565b610b9e906001612db2565b67ffffffffffffffff811115610bb657610bb6612e0b565b604051908082528060200260200182016040528015610c2a57816020015b610c176040518060a001604052805f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81525090565b815260200190600190039081610bd45790505b509050825b828111610cc8575f81815260676020908152604091829020825160a08101845281548152600182015473ffffffffffffffffffffffffffffffffffffffff16928101929092526002810154928201929092526003820154606082015260049091015460808201528251839083908110610caa57610caa612dcb565b60200260200101819052508080610cc090612e38565b915050610c2f565b5092915050565b606082821015610d3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f696e76616c696420696e6465780000000000000000000000000000000000000060448201526064016105e3565b610d458383612df8565b610d50906001612db2565b67ffffffffffffffff811115610d6857610d68612e0b565b604051908082528060200260200182016040528015610de257816020015b610dcf6040518060c001604052805f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f81525090565b815260200190600190039081610d865790505b509050825b828111610cc8575f81815260666020908152604091829020825160c08101845281548152600182015473ffffffffffffffffffffffffffffffffffffffff1692810192909252600281015492820192909252600382015460608201526004820154608082015260059091015460a08201528251839083908110610e6c57610e6c612dcb565b60200260200101819052508080610e8290612e38565b915050610de7565b60655473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f6f6e6c79206f7261636c6520616c6c6f7765640000000000000000000000000060448201526064016105e3565b80610f88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f656d707479207265776172642065706f6368730000000000000000000000000060448201526064016105e3565b5f606c5411610ff3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f737461727420626c6f636b2073686f756c64206265207365740000000000000060448201526064016105e3565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663766718086040518163ffffffff1660e01b8152600401602060405180830381865afa15801561105c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110809190612e6f565b606b54600190611091908490612db2565b61109b9190612df8565b10611127576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f756e66696e69736865642065706f6368732063616e6e6f742062652075706c6f60448201527f616465640000000000000000000000000000000000000000000000000000000060648201526084016105e3565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a29bfb2c600184849050606b546111769190612db2565b6111809190612df8565b6040518263ffffffff1660e01b815260040161119e91815260200190565b5f604051808303815f87803b1580156111b5575f80fd5b505af11580156111c7573d5f803e3d5ffd5b505f9250829150505b82811015611c0b575f8484838181106111eb576111eb612dcb565b90506020028101906111fd9190612e86565b61120b906040810190612ec2565b905090505f85858481811061122257611222612dcb565b90506020028101906112349190612e86565b606b5490359150611246908490612db2565b81146112ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f696e76616c69642065706f636820696e6465780000000000000000000000000060448201526064016105e3565b818686858181106112c1576112c1612dcb565b90506020028101906112d39190612e86565b6112e1906060810190612ec2565b90501480156113225750818686858181106112fe576112fe612dcb565b90506020028101906113109190612e86565b61131e906080810190612ec2565b9050145b801561136057508186868581811061133c5761133c612dcb565b905060200281019061134e9190612e86565b61135c9060a0810190612ec2565b9050145b6113c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f696e76616c69642064617461206c656e6774680000000000000000000000000060448201526064016105e3565b8585848181106113d8576113d8612dcb565b90506020028101906113ea9190612e86565b6113f8906020013585612db2565b93506040518060c0016040528082815260200187878681811061141d5761141d612dcb565b905060200281019061142f9190612e86565b60200135815260200187878681811061144a5761144a612dcb565b905060200281019061145c9190612e86565b61146a906040810190612ec2565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152505050908252506020018787868181106114b2576114b2612dcb565b90506020028101906114c49190612e86565b6114d2906060810190612ec2565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050509082525060200187878681811061151a5761151a612dcb565b905060200281019061152c9190612e86565b61153a906080810190612ec2565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050509082525060200187878681811061158257611582612dcb565b90506020028101906115949190612e86565b6115a29060a0810190612ec2565b808060200260200160405190810160405280939291908181526020018383602002808284375f920182905250939094525050838152606860209081526040918290208451815584820151600182015591840151805192935061160d9260028501929190910190612875565b50606082015180516116299160038401916020909101906128fd565b50608082015180516116459160048401916020909101906128fd565b5060a082015180516116619160058401916020909101906128fd565b50506040517f944fa746000000000000000000000000000000000000000000000000000000008152600481018390525f91507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063944fa74690602401602060405180830381865afa1580156116ef573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117139190612e6f565b90505f805f8567ffffffffffffffff81111561173157611731612e0b565b60405190808252806020026020018201604052801561175a578160200160208202803683370190505b5090505f8667ffffffffffffffff81111561177757611777612e0b565b6040519080825280602002602001820160405280156117a0578160200160208202803683370190505b5090505f5b87811015611a3b5760148c8c8b8181106117c1576117c1612dcb565b90506020028101906117d39190612e86565b6117e19060a0810190612ec2565b838181106117f1576117f1612dcb565b905060200201351115611860576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f696e76616c69642073657175656e6365727320636f6d6d697373696f6e00000060448201526064016105e3565b8b8b8a81811061187257611872612dcb565b90506020028101906118849190612e86565b611892906080810190612ec2565b828181106118a2576118a2612dcb565b90506020020135846118b49190612db2565b93508b8b8a8181106118c8576118c8612dcb565b90506020028101906118da9190612e86565b6118e8906060810190612ec2565b828181106118f8576118f8612dcb565b905060200201358561190a9190612db2565b94505f6305f5e1008d8d8c81811061192457611924612dcb565b90506020028101906119369190612e86565b611944906080810190612ec2565b8481811061195457611954612dcb565b90506020020135886119669190612f2d565b6119709190612f44565b905060648d8d8c81811061198657611986612dcb565b90506020028101906119989190612e86565b6119a69060a0810190612ec2565b848181106119b6576119b6612dcb565b90506020020135826119c89190612f2d565b6119d29190612f44565b8383815181106119e4576119e4612dcb565b602002602001018181525050828281518110611a0257611a02612dcb565b602002602001015181611a159190612df8565b848381518110611a2757611a27612dcb565b6020908102919091010152506001016117a5565b508a8a89818110611a4e57611a4e612dcb565b9050602002810190611a609190612e86565b602001358414611acc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f696e76616c69642073657175656e6365727320626c6f636b730000000000000060448201526064016105e3565b6305f5e100831115611b3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f696e76616c69642073657175656e6365727320726174696f730000000000000060448201526064016105e3565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663cdd0c50e878d8d8c818110611b8957611b89612dcb565b9050602002810190611b9b9190612e86565b611ba9906040810190612ec2565b86866040518663ffffffff1660e01b8152600401611bcb959493929190612f7c565b5f604051808303815f87803b158015611be2575f80fd5b505af1158015611bf4573d5f803e3d5ffd5b5050600190990198506111d0975050505050505050565b50606b546040518381527f4aa68efd05426e59a9d43654a55a2a74c3e8840894d6e291f8f83085e3a6d1ea9060200160405180910390a280606c5f828254611c539190612db2565b9091555050606b80548391905f90611c6c908490612db2565b9091555050505050565b611c7e612646565b611c875f6126c7565b565b606082821015611cf5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f696e76616c696420696e6465780000000000000000000000000000000000000060448201526064016105e3565b611cff8383612df8565b611d0a906001612db2565b67ffffffffffffffff811115611d2257611d22612e0b565b604051908082528060200260200182016040528015611d8a57816020015b611d776040518060c001604052805f81526020015f8152602001606081526020016060815260200160608152602001606081525090565b815260200190600190039081611d405790505b509050825b828111610cc8575f81815260686020908152604091829020825160c0810184528154815260018201548184015260028201805485518186028101860187528181529295939493860193830182828015611e1c57602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611df1575b5050505050815260200160038201805480602002602001604051908101604052809291908181526020018280548015611e7257602002820191905f5260205f20905b815481526020019060010190808311611e5e575b5050505050815260200160048201805480602002602001604051908101604052809291908181526020018280548015611ec857602002820191905f5260205f20905b815481526020019060010190808311611eb4575b5050505050815260200160058201805480602002602001604051908101604052809291908181526020018280548015611f1e57602002820191905f5260205f20905b815481526020019060010190808311611f0a575b505050505081525050828281518110611f3957611f39612dcb565b60200260200101819052508080611f4f90612e38565b915050611d8f565b5f54610100900460ff1615808015611f7557505f54600160ff909116105b80611f8e5750303b158015611f8e57505f5460ff166001145b61201a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016105e3565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015612076575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b815f03612105576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f696e76616c6964206e657874206261746368207375626d697373696f6e20696e60448201527f646578000000000000000000000000000000000000000000000000000000000060648201526084016105e3565b73ffffffffffffffffffffffffffffffffffffffff8316612182576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f696e76616c6964206f7261636c6520616464726573730000000000000000000060448201526064016105e3565b61218a61273d565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851617905560698290558015612231575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61223e612646565b73ffffffffffffffffffffffffffffffffffffffff81166122e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016105e3565b6122ea816126c7565b50565b60655473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f6f6e6c79206f7261636c6520616c6c6f7765640000000000000000000000000060448201526064016105e3565b806123eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f656d70747920726f6c6c75702065706f6368730000000000000000000000000060448201526064016105e3565b5f5b818110156125fb5780606a546124039190612db2565b83838381811061241557612415612dcb565b905060a002015f013514612485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f696e76616c696420696e6465780000000000000000000000000000000000000060448201526064016105e3565b6040518060a001604052808484848181106124a2576124a2612dcb565b905060a002015f013581526020018484848181106124c2576124c2612dcb565b905060a0020160200160208101906124da91906129f8565b73ffffffffffffffffffffffffffffffffffffffff16815260200184848481811061250757612507612dcb565b905060a0020160400135815260200184848481811061252857612528612dcb565b905060a0020160600135815260200184848481811061254957612549612dcb565b905060a002016080013581525060675f85858581811061256b5761256b612dcb565b60a002919091013582525060208082019290925260409081015f208351815591830151600180840180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9093169290921790915590830151600283015560608301516003830155608090920151600490910155016123ed565b50606a546040518281527f0c53377f3eed25c9883c67adabc3f817b4fdcde29f550a6a26c0676ed29929299060200160405180910390a281819050606a5f828254610a489190612db2565b60335473ffffffffffffffffffffffffffffffffffffffff163314611c87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105e3565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166127d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016105e3565b611c875f54610100900460ff1661286c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016105e3565b611c87336126c7565b828054828255905f5260205f209081019282156128ed579160200282015b828111156128ed57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190612893565b506128f9929150612936565b5090565b828054828255905f5260205f209081019282156128ed579160200282015b828111156128ed57825182559160200191906001019061291b565b5b808211156128f9575f8155600101612937565b5f6020828403121561295a575f80fd5b5035919050565b5f8060208385031215612972575f80fd5b823567ffffffffffffffff80821115612989575f80fd5b818501915085601f83011261299c575f80fd5b8135818111156129aa575f80fd5b86602060c0830285010111156129be575f80fd5b60209290920196919550909350505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146129f3575f80fd5b919050565b5f60208284031215612a08575f80fd5b612a11826129d0565b9392505050565b5f8060408385031215612a29575f80fd5b50508035926020909101359150565b602080825282518282018190525f919060409081850190868401855b82811015612aae578151805185528681015173ffffffffffffffffffffffffffffffffffffffff16878601528581015186860152606080820151908601526080908101519085015260a09093019290850190600101612a54565b5091979650505050505050565b602080825282518282018190525f919060409081850190868401855b82811015612aae578151805185528681015173ffffffffffffffffffffffffffffffffffffffff16878601528581015186860152606080820151908601526080808201519086015260a0908101519085015260c09093019290850190600101612ad7565b5f8060208385031215612b4c575f80fd5b823567ffffffffffffffff80821115612b63575f80fd5b818501915085601f830112612b76575f80fd5b813581811115612b84575f80fd5b8660208260051b85010111156129be575f80fd5b5f815180845260208085019450602084015f5b83811015612bc757815187529582019590820190600101612bab565b509495945050505050565b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b83811015612cf2578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc001855281518051845287810151888501528681015160c0888601819052815190860181905260e08601918a01905f905b80821015612c8b57825173ffffffffffffffffffffffffffffffffffffffff168452928b0192918b019160019190910190612c55565b50505060608083015186830382880152612ca58382612b98565b9250505060808083015186830382880152612cc08382612b98565b9250505060a08083015192508582038187015250612cde8183612b98565b968901969450505090860190600101612bf9565b509098975050505050505050565b5f8060408385031215612d11575f80fd5b612d1a836129d0565b946020939093013593505050565b5f8060208385031215612d39575f80fd5b823567ffffffffffffffff80821115612d50575f80fd5b818501915085601f830112612d63575f80fd5b813581811115612d71575f80fd5b86602060a0830285010111156129be575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115612dc557612dc5612d85565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b81810381811115612dc557612dc5612d85565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612e6857612e68612d85565b5060010190565b5f60208284031215612e7f575f80fd5b5051919050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41833603018112612eb8575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612ef5575f80fd5b83018035915067ffffffffffffffff821115612f0f575f80fd5b6020019150600581901b3603821315612f26575f80fd5b9250929050565b8082028115828204841417612dc557612dc5612d85565b5f82612f77577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b858152608060208083018290529082018590525f90869060a08401835b88811015612fd25773ffffffffffffffffffffffffffffffffffffffff612fbf856129d0565b1682529282019290820190600101612f99565b508481036040860152612fe58188612b98565b925050508281036060840152612ffb8185612b98565b9897505050505050505056fea164736f6c6343000818000a" func init() { if err := json.Unmarshal([]byte(RecordStorageLayoutJSON), RecordStorageLayout); err != nil { diff --git a/bindings/bindings/rollup.go b/bindings/bindings/rollup.go index 7f4e1e713..82c36ca29 100644 --- a/bindings/bindings/rollup.go +++ b/bindings/bindings/rollup.go @@ -49,7 +49,7 @@ type IRollupBatchSignatureInput struct { // RollupMetaData contains all meta data concerning the Rollup contract. var RollupMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_chainID\",\"type\":\"uint64\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ErrZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ErrorIncorrectChunkLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ErrorNoBlockInChunk\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"batchIndex\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"winner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"string\",\"name\":\"res\",\"type\":\"string\"}],\"name\":\"ChallengeRes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"batchIndex\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"challengeDeposit\",\"type\":\"uint256\"}],\"name\":\"ChallengeState\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"batchIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"batchHash\",\"type\":\"bytes32\"}],\"name\":\"CommitBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"batchIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"batchHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"withdrawRoot\",\"type\":\"bytes32\"}],\"name\":\"FinalizeBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"batchIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"batchHash\",\"type\":\"bytes32\"}],\"name\":\"RevertBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"UpdateChallenger\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldPeriod\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPeriod\",\"type\":\"uint256\"}],\"name\":\"UpdateFinalizationPeriodSeconds\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldMaxNumTxInChunk\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newMaxNumTxInChunk\",\"type\":\"uint256\"}],\"name\":\"UpdateMaxNumTxInChunk\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldWindow\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newWindow\",\"type\":\"uint256\"}],\"name\":\"UpdateProofWindow\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldVerifier\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newVerifier\",\"type\":\"address\"}],\"name\":\"UpdateVerifier\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"LAYER_2_CHAIN_ID\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"addChallenger\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"batchIndex\",\"type\":\"uint256\"}],\"name\":\"batchBaseStore\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"batchHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"batchVersion\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"originTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalizeTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"batchChallengeReward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"batchChallenged\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"batchIndex\",\"type\":\"uint256\"}],\"name\":\"batchChallengedSuccess\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"batchIndex\",\"type\":\"uint256\"}],\"name\":\"batchDataStore\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blobVersionedHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"l1DataHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"prevStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"postStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"withdrawalRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"l1MessagePopped\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalL1MessagePopped\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"skippedL1MessageBitmap\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"batchIndex\",\"type\":\"uint256\"}],\"name\":\"batchExist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"batchIndex\",\"type\":\"uint256\"}],\"name\":\"batchInChallenge\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"batchIndex\",\"type\":\"uint256\"}],\"name\":\"batchInsideChallengeWindow\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"batchIndex\",\"type\":\"uint256\"}],\"name\":\"batchSignatureStore\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"blsMsgHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"sequencerSetVerifyHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signedSequencers\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"batchIndex\",\"type\":\"uint64\"}],\"name\":\"challengeState\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"batchIndex\",\"type\":\"uint256\"}],\"name\":\"challenges\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"batchIndex\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"challengeDeposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"challengeSuccess\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"finished\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"claimReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"parentBatchHeader\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"chunks\",\"type\":\"bytes[]\"},{\"internalType\":\"bytes\",\"name\":\"skippedL1MessageBitmap\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"prevStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"postStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"withdrawalRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structIRollup.BatchDataInput\",\"name\":\"batchDataInput\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signedSequencers\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sequencerSets\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"structIRollup.BatchSignatureInput\",\"name\":\"batchSignatureInput\",\"type\":\"tuple\"}],\"name\":\"commitBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"batchIndex\",\"type\":\"uint256\"}],\"name\":\"committedBatches\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"finalizationPeriodSeconds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_batchIndex\",\"type\":\"uint256\"}],\"name\":\"finalizeBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"batchIndex\",\"type\":\"uint256\"}],\"name\":\"finalizedStateRoots\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_batchHeader\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_postStateRoot\",\"type\":\"bytes32\"}],\"name\":\"importGenesisBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inChallenge\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_l1StakingContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_messageQueue\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_verifier\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_maxNumTxInChunk\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_finalizationPeriodSeconds\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_proofWindow\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_batchIndex\",\"type\":\"uint256\"}],\"name\":\"isBatchFinalized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"challengerAddress\",\"type\":\"address\"}],\"name\":\"isChallenger\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isChallenger\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1StakingContract\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastCommittedBatchIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastFinalizedBatchIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxNumTxInChunk\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messageQueue\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proofWindow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_batchIndex\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"_aggrProof\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_kzgDataProof\",\"type\":\"bytes\"}],\"name\":\"proveState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"removeChallenger\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_batchHeader\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_count\",\"type\":\"uint256\"}],\"name\":\"revertBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revertReqIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"setPause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newPeriod\",\"type\":\"uint256\"}],\"name\":\"updateFinalizePeriodSeconds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_maxNumTxInChunk\",\"type\":\"uint256\"}],\"name\":\"updateMaxNumTxInChunk\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newWindow\",\"type\":\"uint256\"}],\"name\":\"updateProofWindow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newVerifier\",\"type\":\"address\"}],\"name\":\"updateVerifier\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"verifier\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"withdrawalRoot\",\"type\":\"bytes32\"}],\"name\":\"withdrawalRoots\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"exist\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x60a060405234801562000010575f80fd5b50604051620053d7380380620053d7833981016040819052620000339162000045565b6001600160401b031660805262000074565b5f6020828403121562000056575f80fd5b81516001600160401b03811681146200006d575f80fd5b9392505050565b608051615343620000945f395f81816105e20152613d1001526153435ff3fe6080604052600436106102e5575f3560e01c8063715018a611610186578063abc8d68d116100dc578063ddd8a3dc11610087578063e3fff1dd11610062578063e3fff1dd1461096e578063ef6602ba1461098d578063f2fde38b146109a2575f80fd5b8063ddd8a3dc14610911578063de8b303514610930578063e33491a71461094f575f80fd5b8063caf62533116100b7578063caf625331461086d578063ce5db8d6146108dd578063d279c191146108f2575f80fd5b8063abc8d68d1461080e578063b31a77d314610839578063bedb86fb1461084e575f80fd5b80638da5cb5b1161013c57806397fc007c1161011757806397fc007c146107ac578063a415d8dc146107cb578063a479265d146107f9575f80fd5b80638da5cb5b146106ae5780638f1d3776146106cb578063910129d41461077b575f80fd5b80637c41b6ac1161016c5780637c41b6ac1461066f57806388b1ea09146106825780638d644bb71461069b575f80fd5b8063715018a61461063c578063728cdbca14610650575f80fd5b80632571098d1161023b578063404fa7b1116101f15780635ef7a94a116101cc5780635ef7a94a1461059e5780635f77cf1d146105d15780636c578c1d1461061d575f80fd5b8063404fa7b11461053a57806357e0af6c146105685780635c975abb14610587575f80fd5b806336622a301161022157806336622a30146104dd5780633b70c18a146104fc5780633fdeecb21461051b575f80fd5b80632571098d1461047b5780632b7ac3f3146104a6575f80fd5b8063121dcd501161029b5780631e228302116102765780631e2283021461041257806321e2f9e0146104315780632362f03e14610450575f80fd5b8063121dcd50146103b857806318463fb0146103cd57806318af3b2b146103e2575f80fd5b80630ceb6780116102cb5780630ceb67801461035657806310d4458314610377578063116a1f4214610396575f80fd5b806304d77215146102f0578063059def6114610333575f80fd5b366102ec57005b5f80fd5b3480156102fb575f80fd5b5061031e61030a366004614860565b60a46020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561033e575f80fd5b50610348609d5481565b60405190815260200161032a565b348015610361575f80fd5b5061037561037036600461488b565b6109c1565b005b348015610382575f80fd5b506103756103913660046148eb565b610a93565b3480156103a1575f80fd5b5061031e6103b0366004614860565b609d54101590565b3480156103c3575f80fd5b50610348609e5481565b3480156103d8575f80fd5b5061034860a85481565b3480156103ed575f80fd5b5061031e6103fc366004614860565b5f90815260a16020526040902060030154421090565b34801561041d575f80fd5b5061037561042c366004614860565b610dd2565b34801561043c575f80fd5b5061031e61044b366004614860565b610e7d565b34801561045b575f80fd5b5061034861046a366004614860565b5f90815260a1602052604090205490565b348015610486575f80fd5b50610348610495366004614860565b60a06020525f908152604090205481565b3480156104b1575f80fd5b50609c546104c5906001600160a01b031681565b6040516001600160a01b03909116815260200161032a565b3480156104e8575f80fd5b506103756104f736600461494f565b610eae565b348015610507575f80fd5b50609b546104c5906001600160a01b031681565b348015610526575f80fd5b506103756105353660046148eb565b611122565b348015610545575f80fd5b50610559610554366004614860565b6117d7565b60405161032a93929190614a17565b348015610573575f80fd5b50610375610582366004614860565b61187f565b348015610592575f80fd5b5060655460ff1661031e565b3480156105a9575f80fd5b506105bd6105b8366004614860565b611922565b60405161032a989796959493929190614a3e565b3480156105dc575f80fd5b506106047f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff909116815260200161032a565b348015610628575f80fd5b5061037561063736600461488b565b6119ec565b348015610647575f80fd5b50610375611aa9565b34801561065b575f80fd5b5061037561066a366004614a8a565b611abc565b61037561067d366004614aeb565b611dff565b34801561068d575f80fd5b5060a75461031e9060ff1681565b6103756106a9366004614b58565b6128a0565b3480156106b9575f80fd5b506033546001600160a01b03166104c5565b3480156106d6575f80fd5b506107376106e5366004614860565b60a56020525f9081526040902080546001820154600283015460039093015467ffffffffffffffff831693680100000000000000009093046001600160a01b0316929060ff8082169161010090041686565b6040805167ffffffffffffffff90971687526001600160a01b03909516602087015293850192909252606084015215156080830152151560a082015260c00161032a565b348015610786575f80fd5b5061031e610795366004614860565b5f90815260a5602052604090206003015460ff1690565b3480156107b7575f80fd5b506103756107c636600461488b565b612e0c565b3480156107d6575f80fd5b5061031e6107e536600461488b565b609f6020525f908152604090205460ff1681565b348015610804575f80fd5b5061034860995481565b348015610819575f80fd5b5061034861082836600461488b565b60a66020525f908152604090205481565b348015610844575f80fd5b5061034860a95481565b348015610859575f80fd5b50610375610868366004614b7e565b612eef565b348015610878575f80fd5b506108b5610887366004614860565b60a16020525f9081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a00161032a565b3480156108e8575f80fd5b5061034860985481565b3480156108fd575f80fd5b5061037561090c36600461488b565b613000565b34801561091c575f80fd5b506097546104c5906001600160a01b031681565b34801561093b575f80fd5b5061031e61094a366004614860565b61307c565b34801561095a575f80fd5b50610375610969366004614860565b6130c6565b348015610979575f80fd5b50610375610988366004614860565b613737565b348015610998575f80fd5b50610348609a5481565b3480156109ad575f80fd5b506103756109bc36600461488b565b6137da565b6109c9613867565b6001600160a01b0381165f908152609f602052604090205460ff1615610a365760405162461bcd60e51b815260206004820152601f60248201527f6163636f756e7420697320616c72656164792061206368616c6c656e6765720060448201526064015b60405180910390fd5b6001600160a01b0381165f818152609f6020908152604091829020805460ff1916600190811790915591519182527f7feb653c7b1f0d23daeed494225b3f28851cdc8973fcc653866d9b6e205fc00991015b60405180910390a250565b610a9b613867565b5f8111610aea5760405162461bcd60e51b815260206004820152601560248201527f636f756e74206d757374206265206e6f6e7a65726f00000000000000000000006044820152606401610a2d565b5f80610af685856138c1565b915091505f610b09836001015160c01c90565b5f81815260a160205260409020549091508214610b685760405162461bcd60e51b815260206004820152601460248201527f696e636f727265637420626174636820686173680000000000000000000000006044820152606401610a2d565b5f60a181610b768785614bc6565b81526020019081526020015f205f015414610bf85760405162461bcd60e51b8152602060048201526024808201527f726576657274696e67206d7573742073746172742066726f6d2074686520656e60448201527f64696e67000000000000000000000000000000000000000000000000000000006064820152608401610a2d565b609d548111610c6f5760405162461bcd60e51b815260206004820152602160248201527f63616e206f6e6c792072657665727420756e46696e616c697a6564206261746360448201527f68000000000000000000000000000000000000000000000000000000000000006064820152608401610a2d565b610c7a600182614bd9565b609e555b8315610dca575f81815260a1602052604081205560a95415801590610ca4575060a95481145b15610d80575f81815260a56020526040902060030154610100900460ff16610d12575f81815260a560209081526040808320600181015490546801000000000000000090046001600160a01b0316845260a69092528220805491929091610d0c908490614bc6565b90915550505b5f81815260a56020526040812080547fffffffff00000000000000000000000000000000000000000000000000000000168155600181018290556002810182905560030180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016905560a9555b604051829082907ecae2739091badfd91c373f0a16cede691e0cd25bb80cff77dd5caeb4710146905f90a36001015f81815260a160205260409020545f1990940193915081610c7e575b505050505050565b610dda613867565b5f81118015610deb5750609a548114155b610e375760405162461bcd60e51b815260206004820152601b60248201527f696e76616c6964206e6577206d61784e756d5478496e4368756e6b00000000006044820152606401610a2d565b609a80549082905560408051828152602081018490527f6d0f49971e462a2f78a25906f145cb29cd5e7bd01ebf681ac8f58cb814e5877a91015b60405180910390a15050565b5f81815260a1602052604081206002015415801590610ea857505f82815260a1602052604090205415155b92915050565b60a95415610efe5760405162461bcd60e51b815260206004820152600b60248201527f6e656564207265766572740000000000000000000000000000000000000000006044820152606401610a2d565b610f066138dc565b610f198567ffffffffffffffff1661307c565b610f655760405162461bcd60e51b815260206004820152601260248201527f626174636820696e206368616c6c656e676500000000000000000000000000006044820152606401610a2d565b67ffffffffffffffff85165f90815260a5602052604090206003810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010017905560a7805460ff191690556099546002909101544291610fc991614bc6565b116110ce5767ffffffffffffffff85165f90815260a560209081526040808320600301805460ff1916600117905560a3909152902060020180546110c991879161101290614bec565b80601f016020809104026020016040519081016040528092919081815260200182805461103e90614bec565b80156110895780601f1061106057610100808354040283529160200191611089565b820191905f5260205f20905b81548152906001019060200180831161106c57829003601f168201915b50505050506040518060400160405280600781526020017f54696d656f75740000000000000000000000000000000000000000000000000081525061392f565b61111b565b6110db8585858585613ab7565b61111b85336040518060400160405280600d81526020017f50726f6f66207375636365737300000000000000000000000000000000000000815250613e28565b5050505050565b61112a613867565b806111775760405162461bcd60e51b815260206004820152600f60248201527f7a65726f20737461746520726f6f7400000000000000000000000000000000006044820152606401610a2d565b5f805260a06020527fb84a74ec6ef4d0e83b6006dfaa014ab4026f9f3b97d186e604d29998a4e808ea54156111ee5760405162461bcd60e51b815260206004820152601660248201527f67656e6573697320626174636820696d706f72746564000000000000000000006044820152606401610a2d565b5f806111fa85856138c1565b915091505f61120a836019015190565b90505f611218845160f81c90565b90505f611229856011015160c01c90565b600986015160c01c600187015160c01c875160f81c010101905080156112915760405162461bcd60e51b815260206004820152601760248201527f6e6f7420616c6c206669656c647320617265207a65726f0000000000000000006044820152606401610a2d565b505f61129e856019015190565b036112eb5760405162461bcd60e51b815260206004820152600e60248201527f7a65726f206461746120686173680000000000000000000000000000000000006044820152606401610a2d565b5f6112f7856059015190565b146113445760405162461bcd60e51b815260206004820152601960248201527f6e6f6e7a65726f20706172656e742062617463682068617368000000000000006044820152606401610a2d565b7f010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c444014611370856039015190565b146113bd5760405162461bcd60e51b815260206004820152601660248201527f696e76616c69642076657273696f6e65642068617368000000000000000000006044820152606401610a2d565b6040805160a0808201835285825260208083018581524284860181815260608087019283525f608080890182815282805260a1885298517f32ae1b88a7d4f92d7e214b63c8ea04cd13e2faaa60c50f499f2254336d98f8825594517f32ae1b88a7d4f92d7e214b63c8ea04cd13e2faaa60c50f499f2254336d98f8835591517f32ae1b88a7d4f92d7e214b63c8ea04cd13e2faaa60c50f499f2254336d98f8845591517f32ae1b88a7d4f92d7e214b63c8ea04cd13e2faaa60c50f499f2254336d98f8855594517f32ae1b88a7d4f92d7e214b63c8ea04cd13e2faaa60c50f499f2254336d98f886558551610100810187527f010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c44401481528084018981528188018781529282018d815293820187815295820187815260c083018881528951808b01909a5260028a527f30780000000000000000000000000000000000000000000000000000000000008a88015260e08401998a5297805260a290955281517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342a90815590517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342b5591517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342c5591517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342d5592517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342e5590517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342f5591517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b34305591519091907f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b3431906116669082614cae565b5050604080516060810182525f808252602080830182815284518086018652600281527f30780000000000000000000000000000000000000000000000000000000000008184015294840194855291805260a3905281517f69b4e8f94ad9e612080e13aad01219472d8c2c7ae7aa6cdf175400ddc8c4ed3d90815590517f69b4e8f94ad9e612080e13aad01219472d8c2c7ae7aa6cdf175400ddc8c4ed3e5591519092507f69b4e8f94ad9e612080e13aad01219472d8c2c7ae7aa6cdf175400ddc8c4ed3f906117369082614cae565b50505f80805260a06020527fb84a74ec6ef4d0e83b6006dfaa014ab4026f9f3b97d186e604d29998a4e808ea8790556040518592507f2c32d4ae151744d0bf0b9464a3e897a1d17ed2f1af71f7c9a75f12ce0d28238f908290a3604080518681525f60208201819052859290917f26ba82f907317eedc97d0cbef23de76a43dd6edb563bdb6e9407645b950a7a2d910160405180910390a350505050505050565b60a36020525f9081526040902080546001820154600283018054929391926117fe90614bec565b80601f016020809104026020016040519081016040528092919081815260200182805461182a90614bec565b80156118755780601f1061184c57610100808354040283529160200191611875565b820191905f5260205f20905b81548152906001019060200180831161185857829003601f168201915b5050505050905083565b611887613867565b5f8111801561189857506099548114155b6118e45760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964206e65772070726f6f662077696e646f7700000000000000006044820152606401610a2d565b609980549082905560408051828152602081018490527f1e3a2094feb4b696dd3d7caea38ad2f41dbdcac3fa3943c7a693aff8a64b0a619101610e71565b60a2602052805f5260405f205f91509050805f01549080600101549080600201549080600301549080600401549080600501549080600601549080600701805461196b90614bec565b80601f016020809104026020016040519081016040528092919081815260200182805461199790614bec565b80156119e25780601f106119b9576101008083540402835291602001916119e2565b820191905f5260205f20905b8154815290600101906020018083116119c557829003601f168201915b5050505050905088565b6119f4613867565b6001600160a01b0381165f908152609f602052604090205460ff16611a5b5760405162461bcd60e51b815260206004820152601b60248201527f6163636f756e74206973206e6f742061206368616c6c656e67657200000000006044820152606401610a2d565b6001600160a01b0381165f818152609f60209081526040808320805460ff19169055519182527f7feb653c7b1f0d23daeed494225b3f28851cdc8973fcc653866d9b6e205fc0099101610a88565b611ab1613867565b611aba5f613eca565b565b5f54610100900460ff1615808015611ada57505f54600160ff909116105b80611af35750303b158015611af357505f5460ff166001145b611b655760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610a2d565b5f805460ff191660011790558015611ba3575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6001600160a01b0386161580611bc057506001600160a01b038516155b15611bf7576040517fecc6fdf000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038716611c4d5760405162461bcd60e51b815260206004820152601b60248201527f696e76616c6964206c31207374616b696e6720636f6e747261637400000000006044820152606401610a2d565b611c55613f33565b611c5d613fb7565b609780546001600160a01b03808a167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255609b8054898416908316179055609c80549288169290911682179055609a859055609884905560998390556040515f907f728af3d16a5760405e27a082c98ab272e9f0a1d02f0085d41532a26093aedd96908290a3604080515f8152602081018690527f6d0f49971e462a2f78a25906f145cb29cd5e7bd01ebf681ac8f58cb814e5877a910160405180910390a1604080515f8152602081018590527fa577f4223f91f74e2dad65bbb8c30807587ae95d0d34288057bb3ec0d398a437910160405180910390a1604080515f8152602081018490527f1e3a2094feb4b696dd3d7caea38ad2f41dbdcac3fa3943c7a693aff8a64b0a61910160405180910390a18015611df6575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6097546001600160a01b0316636f1e8533336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015611e6b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e8f9190614d6a565b611edb5760405162461bcd60e51b815260206004820152601360248201527f6f6e6c79207374616b657220616c6c6f776564000000000000000000000000006044820152606401610a2d565b60a95415611f2b5760405162461bcd60e51b815260206004820152600b60248201527f6e656564207265766572740000000000000000000000000000000000000000006044820152606401610a2d565b611f336138dc565b611f406020830183614d85565b60ff1615611f905760405162461bcd60e51b815260206004820152600f60248201527f696e76616c69642076657273696f6e00000000000000000000000000000000006044820152606401610a2d565b5f611f9e6040840184614da5565b91505080611fee5760405162461bcd60e51b815260206004820152600e60248201527f626174636820697320656d7074790000000000000000000000000000000000006044820152606401610a2d565b608083013561203f5760405162461bcd60e51b815260206004820152601b60248201527f70726576696f757320737461746520726f6f74206973207a65726f00000000006044820152606401610a2d565b60a08301356120905760405162461bcd60e51b815260206004820152601660248201527f6e657720737461746520726f6f74206973207a65726f000000000000000000006044820152606401610a2d565b5f806120a76120a26020870187614e09565b6138c1565b915091505f6120ba836001015160c01c90565b5f81815260a1602052604090205490915082146121195760405162461bcd60e51b815260206004820152601b60248201527f696e636f727265637420706172656e74206261746368206861736800000000006044820152606401610a2d565b5f60a181612128846001614bc6565b81526020019081526020015f205f0154146121855760405162461bcd60e51b815260206004820152601760248201527f626174636820616c726561647920636f6d6d69747465640000000000000000006044820152606401610a2d565b609e5481146121d65760405162461bcd60e51b815260206004820152601560248201527f696e636f727265637420626174636820696e64657800000000000000000000006044820152606401610a2d565b5f81815260a260205260409020600301546080870135146122395760405162461bcd60e51b815260206004820152601d60248201527f696e636f72726563742070726576696f757320737461746520726f6f740000006044820152606401610a2d565b5f612248846011015160c01c90565b604080516020880281019091529091505f805b87811015612309575f6122f08461227560408e018e614da5565b8581811061228557612285614e6a565b90506020028101906122979190614e09565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505085888f80606001906122eb9190614e09565b61403b565b948501946020949094019392909201915060010161225b565b5061231760608a018a614e09565b905061010060ff830104602002146123715760405162461bcd60e51b815260206004820152601360248201527f77726f6e67206269746d6170206c656e677468000000000000000000000000006044820152606401610a2d565b602087810280840320604051975060019590950194906123a1908890612399908d018d614d85565b60ff166141fb565b60c085811b600189015282811b600989015284901b601188015260198701819052605987018690526123df876123da60608d018d614e09565b614202565b5f8049156123ee575f49612410565b7f010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c4440145b6039890181905290506040518060a001604052806124498a8e80606001906124389190614e09565b61244491506079614bc6565b902090565b815260209081019061245d908e018e614d85565b60ff168152602001428152602001609854426124799190614bc6565b81526020016124f361248e60408f018f614da5565b61249960018f614bd9565b8181106124a8576124a8614e6a565b90506020028101906124ba9190614e09565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061420e92505050565b81525060a15f8881526020019081526020015f205f820151815f0155602082015181600101556040820151816002015560608201518160030155608082015181600401559050506040518061010001604052808281526020018381526020018c6080013581526020018c60a0013581526020018c60c0013581526020018481526020018681526020018c806060019061258c9190614e09565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525093909452505088815260a2602090815260409182902084518155908401516001820155908301516002820155606083015160038201556080830151600482015560a0830151600582015560c0830151600682015560e083015190915060078201906126269082614cae565b50506040805160018082528183019092525f9250906020808301908036833701905050905033815f8151811061265e5761265e614e6a565b60200260200101906001600160a01b031690816001600160a01b03168152505060405180606001604052806126905f90565b81526020018c80602001906126a59190614e09565b6040516126b3929190614e97565b60405180910390208152602001826040516020016126d19190614ee9565b60408051601f1981840301815291815291525f89815260a3602090815290829020835181559083015160018201559082015160028201906127129082614cae565b505050609e8790555f87905260a36020526097546001600160a01b031663c0af545b61273e8d80614e09565b81019061274b9190614fc4565b6127648e806020019061275e9190614e09565b5f61425b565b60a35f8c81526020019081526020015f205f01548f80604001906127889190614e09565b6040518663ffffffff1660e01b81526004016127a8959493929190615027565b602060405180830381865afa1580156127c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127e79190614d6a565b6128595760405162461bcd60e51b815260206004820152602160248201527f746865207369676e617475726520766572696669636174696f6e206661696c6560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152608401610a2d565b5f87815260a16020526040808220549051909189917f2c32d4ae151744d0bf0b9464a3e897a1d17ed2f1af71f7c9a75f12ce0d28238f9190a3505050505050505050505050565b335f908152609f602052604090205460ff166128fe5760405162461bcd60e51b815260206004820152601960248201527f63616c6c6572206368616c6c656e67657220616c6c6f776564000000000000006044820152606401610a2d565b60a9541561294e5760405162461bcd60e51b815260206004820152600b60248201527f6e656564207265766572740000000000000000000000000000000000000000006044820152606401610a2d565b6129566138dc565b60a75460ff16156129a95760405162461bcd60e51b815260206004820152601460248201527f616c726561647920696e206368616c6c656e67650000000000000000000000006044820152606401610a2d565b8067ffffffffffffffff16609d5410612a045760405162461bcd60e51b815260206004820152601760248201527f626174636820616c72656164792066696e616c697a65640000000000000000006044820152606401610a2d565b67ffffffffffffffff81165f90815260a160205260408120549003612a6b5760405162461bcd60e51b815260206004820152600f60248201527f6261746368206e6f7420657869737400000000000000000000000000000000006044820152606401610a2d565b67ffffffffffffffff81165f90815260a560205260409020546801000000000000000090046001600160a01b031615612ae65760405162461bcd60e51b815260206004820152601860248201527f626174636820616c7265616479206368616c6c656e67656400000000000000006044820152606401610a2d565b67ffffffffffffffff81165f90815260a160205260409020600301544210612b765760405162461bcd60e51b815260206004820152603360248201527f63616e6e6f74206368616c6c656e6765206261746368206f757473696465207460448201527f6865206368616c6c656e67652077696e646f77000000000000000000000000006064820152608401610a2d565b60975f9054906101000a90046001600160a01b03166001600160a01b0316634d64903a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bc6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bea9190615072565b341015612c395760405162461bcd60e51b815260206004820152601260248201527f696e73756666696369656e742076616c756500000000000000000000000000006044820152606401610a2d565b67ffffffffffffffff81811660a88190556040805160c0810182528281523360208083018281523484860190815242606086019081525f6080870181815260a0880182815299825260a5909552969096209451855492516001600160a01b031668010000000000000000027fffffffff00000000000000000000000000000000000000000000000000000000909316981697909717178355945160018301559151600282015592516003909301805492511515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff941515949094167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000909316929092179290921790556001600160a01b03168167ffffffffffffffff167f3a6ea19df25b49e7624e313ce7c1ab23984238e93727260db56a81735b1b997634604051612d8b91815260200190565b60405180910390a35f609d546001612da39190614bc6565b90505b609e548111612dfb578167ffffffffffffffff168114612de9576099545f82815260a1602052604081206003018054909190612de3908490614bc6565b90915550505b80612df381615089565b915050612da6565b505060a7805460ff19166001179055565b612e14613867565b6001600160a01b03811615801590612e3a5750609c546001600160a01b03828116911614155b612e865760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964206e65772076657269666965720000000000000000000000006044820152606401610a2d565b609c80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f728af3d16a5760405e27a082c98ab272e9f0a1d02f0085d41532a26093aedd96905f90a35050565b612ef7613867565b8015612ff557612f056142af565b60a75460ff168015612f30575060a8545f90815260a56020526040902060030154610100900460ff16155b15612f845760a8545f90815260a560209081526040808320600181015490546801000000000000000090046001600160a01b0316845260a69092528220805491929091612f7e908490614bc6565b90915550505b60a8545f90815260a56020526040812080547fffffffff0000000000000000000000000000000000000000000000000000000016815560018101829055600281019190915560030180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016905550565b612ffd614309565b50565b335f90815260a660205260408120549081900361305f5760405162461bcd60e51b815260206004820152601c60248201527f696e76616c69642062617463684368616c6c656e6765526577617264000000006044820152606401610a2d565b335f90815260a660205260408120556130788282614342565b5050565b5f81815260a560205260408120546801000000000000000090046001600160a01b031615801590610ea85750505f90815260a56020526040902060030154610100900460ff161590565b60a954156131165760405162461bcd60e51b815260206004820152600b60248201527f6e656564207265766572740000000000000000000000000000000000000000006044820152606401610a2d565b61311e6138dc565b61312781610e7d565b6131735760405162461bcd60e51b815260206004820152600f60248201527f6261746368206e6f7420657869737400000000000000000000000000000000006044820152606401610a2d565b61317c8161307c565b156131c95760405162461bcd60e51b815260206004820152601260248201527f626174636820696e206368616c6c656e676500000000000000000000000000006044820152606401610a2d565b5f81815260a5602052604090206003015460ff161561322a5760405162461bcd60e51b815260206004820152601660248201527f62617463682073686f756c6420626520726576657274000000000000000000006044820152606401610a2d565b5f81815260a1602052604090206003015442101561328a5760405162461bcd60e51b815260206004820152601960248201527f626174636820696e206368616c6c656e67652077696e646f77000000000000006044820152606401610a2d565b5f81815260a260205260408120600201549060a0906132aa600185614bd9565b81526020019081526020015f2054146133055760405162461bcd60e51b815260206004820152601d60248201527f696e636f72726563742070726576696f757320737461746520726f6f740000006044820152606401610a2d565b5f81815260a06020526040902054156133605760405162461bcd60e51b815260206004820152601660248201527f626174636820616c7265616479207665726966696564000000000000000000006044820152606401610a2d565b80609d54600101146133b45760405162461bcd60e51b815260206004820152601560248201527f696e636f727265637420626174636820696e64657800000000000000000000006044820152606401610a2d565b609d8190555f81815260a2602081815260408084206004810154855260a48352818520805460ff19166001179055858552600381015460a0845291909420555260050154801561358457609b545f83815260a26020526040812060070180546001600160a01b039093169261342890614bec565b80601f016020809104026020016040519081016040528092919081815260200182805461345490614bec565b801561349f5780601f106134765761010080835404028352916020019161349f565b820191905f5260205f20905b81548152906001019060200180831161348257829003601f168201915b5050505f87815260a260209081526040822060060154949550850193879003925090505b8581101561357e576101008187038111156134dd57508086035b6101008204602081028501516040517f55f613ce0000000000000000000000000000000000000000000000000000000081526004810186905260248101849052604481018290529091906001600160a01b038916906355f613ce906064015f604051808303815f87803b158015613552575f80fd5b505af1158015613564573d5f803e3d5ffd5b5050505061010085019450505050610100810190506134c3565b50505050505b60a15f613592600185614bd9565b815260208101919091526040015f90812081815560018082018390556002820183905560038201839055600490910182905560a291906135d29085614bd9565b815260208101919091526040015f9081208181556001810182905560028101829055600381018290556004810182905560058101829055600681018290559061361e6007830182614816565b5060a390505f61362f600185614bd9565b815260208101919091526040015f90812081815560018101829055906136586002830182614816565b5060a590505f613669600185614bd9565b815260208082019290925260409081015f90812080547fffffffff000000000000000000000000000000000000000000000000000000001681556001810182905560028101829055600390810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016905585825260a184528282205460a2855291839020908101546004909101548351918252938101939093529184917f26ba82f907317eedc97d0cbef23de76a43dd6edb563bdb6e9407645b950a7a2d910160405180910390a35050565b61373f613867565b5f8111801561375057506098548114155b61379c5760405162461bcd60e51b815260206004820152601b60248201527f696e76616c6964206e65772066696e616c697a6520706572696f6400000000006044820152606401610a2d565b609880549082905560408051828152602081018490527fa577f4223f91f74e2dad65bbb8c30807587ae95d0d34288057bb3ec0d398a4379101610e71565b6137e2613867565b6001600160a01b03811661385e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610a2d565b612ffd81613eca565b6033546001600160a01b03163314611aba5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a2d565b5f805f6138ce85856143ec565b812090969095509350505050565b60655460ff1615611aba5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610a2d565b67ffffffffffffffff831660a98190555f90815260a5602090815260408220546097548551680100000000000000009092046001600160a01b039081169493911691638b8c24c19161398791880181019088016150a1565b6040518263ffffffff1660e01b81526004016139a39190614ee9565b6020604051808303815f875af11580156139bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139e39190615072565b67ffffffffffffffff86165f90815260a56020526040902060010154909150613a0d908290614bc6565b67ffffffffffffffff86165f90815260a560209081526040808320546801000000000000000090046001600160a01b0316835260a690915281208054909190613a57908490614bc6565b9091555050604051613a6a908490615136565b604051908190038120906001600160a01b0384169067ffffffffffffffff8816907f1e66d5dca70bf28588ef2f5cb3c299e65e2e7bdef2767823d3ae47a9caff95c6905f90a45050505050565b82613b045760405162461bcd60e51b815260206004820152601960248201527f496e76616c6964206167677265676174696f6e2070726f6f66000000000000006044820152606401610a2d565b60a08114613b545760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964204b5a4720646174612070726f6f66000000000000000000006044820152606401610a2d565b67ffffffffffffffff85165f90815260a2602090815260408083205490518392600a92613b879290918891889101615151565b60408051601f1981840301815290829052613ba191615136565b5f60405180830381855afa9150503d805f8114613bd9576040519150601f19603f3d011682016040523d82523d5f602084013e613bde565b606091505b509150915081613c565760405162461bcd60e51b815260206004820152602a60248201527f6661696c656420746f2063616c6c20706f696e74206576616c756174696f6e2060448201527f707265636f6d70696c65000000000000000000000000000000000000000000006064820152608401610a2d565b5f81806020019051810190613c6b919061516a565b9150507f73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff000000018114613cdd5760405162461bcd60e51b815260206004820152601c60248201527f707265636f6d70696c6520756e6578706563746564206f7574707574000000006044820152606401610a2d565b50505067ffffffffffffffff85165f90815260a260205260408082206002810154600382015460048301546001909301547f00000000000000000000000000000000000000000000000000000000000000009492939192613d409087898b61518c565b67ffffffffffffffff8d165f90815260a26020908152604091829020549151613d71999897969594939291016151b3565b60408051601f198184030181528282528051602091820120609c5467ffffffffffffffff8b165f90815260a190935292909120600101547f2c09a8480000000000000000000000000000000000000000000000000000000084529093506001600160a01b0390911691632c09a84891613df4918a908a908a90889060040161520f565b5f6040518083038186803b158015613e0a575f80fd5b505afa158015613e1c573d5f803e3d5ffd5b50505050505050505050565b67ffffffffffffffff83165f90815260a560209081526040808320600101546001600160a01b038616845260a69092528220805491928392613e6b908490614bc6565b9091555050604051613e7e908390615136565b604051908190038120906001600160a01b0385169067ffffffffffffffff8716907f1e66d5dca70bf28588ef2f5cb3c299e65e2e7bdef2767823d3ae47a9caff95c6905f90a450505050565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16613faf5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a2d565b611aba6144c3565b5f54610100900460ff166140335760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a2d565b611aba61454b565b60405185515f916020880191819060218a0190859061405b9086906145d0565b90505f805b828110156140ca57603c8102870160018101518652602101517fffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000166020860152603a850194505f6140b5856038015160f01c90565b603c9590950194929092019150600101614060565b506020028301604052600185019150825b811561417e575f6140f084603a015160f01c90565b905061410085828e8e8e8e614665565b945080614111856038015160f01c90565b101561415f5760405162461bcd60e51b815260206004820152601d60248201527f6e756d20747873206c657373207468616e206e756d204c31206d7367730000006044820152606401610a2d565b9a8b019a998a01999690960195603c92909201915f19909101906140db565b609a54602061418d8387614bd9565b614197919061524a565b11156141e55760405162461bcd60e51b815260206004820152601960248201527f746f6f206d616e792074787320696e206f6e65206368756e6b000000000000006044820152606401610a2d565b50505081900390208852505b9695505050505050565b8082535050565b80826079850137505050565b5f805f6020840190506001810191505f6142298286516145d0565b90505f5b614238600183614bd9565b81101561424e57603c939093019260010161422d565b505f6141f1845160c01c90565b60605f8080808061426e888a018a615282565b955095509550955095505081871061428c5794506142a89350505050565b8387106142a05782955050505050506142a8565b509293505050505b9392505050565b6142b76138dc565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586142ec3390565b6040516001600160a01b03909116815260200160405180910390a1565b6143116147c4565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336142ec565b8015613078575f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114614391576040519150601f19603f3d011682016040523d82523d5f602084013e614396565b606091505b50509050806143e75760405162461bcd60e51b815260206004820152601b60248201527f526f6c6c75703a20455448207472616e73666572206661696c656400000000006044820152606401610a2d565b505050565b5f81607981101561443f5760405162461bcd60e51b815260206004820152601d60248201527f626174636820686561646572206c656e67746820746f6f20736d616c6c0000006044820152606401610a2d565b6040519150808483378082016040525f61445d836009015160c01c90565b905061010060ff82010460200260790182146144bb5760405162461bcd60e51b815260206004820152601360248201527f77726f6e67206269746d6170206c656e677468000000000000000000000000006044820152606401610a2d565b509250929050565b5f54610100900460ff1661453f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a2d565b6065805460ff19169055565b5f54610100900460ff166145c75760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a2d565b611aba33613eca565b5f6145dc835160f81c90565b9050805f03614617576040517f7c62f08c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b614622603c8261531f565b61462d906001614bc6565b8214610ea8576040517fb8f4bbc000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f855f036146745750856141f1565b609b546001600160a01b03165f80805b8981101561475a5760ff89169150600889901c8115806146a2575082155b156146b1578060200288013593505b600184841c165f03614749576040517fae453cd5000000000000000000000000000000000000000000000000000000008152600481018a90525f906001600160a01b0387169063ae453cd590602401602060405180830381865afa15801561471b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061473f9190615072565b8d52506020909b019a5b506001988901989788019701614684565b505060ff5f1988011681811c600116156147b65760405162461bcd60e51b815260206004820152601b60248201527f63616e6e6f7420736b6970206c617374204c31206d65737361676500000000006044820152606401610a2d565b509798975050505050505050565b60655460ff16611aba5760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610a2d565b50805461482290614bec565b5f825580601f10614831575050565b601f0160209004905f5260205f2090810190612ffd91905b8082111561485c575f8155600101614849565b5090565b5f60208284031215614870575f80fd5b5035919050565b6001600160a01b0381168114612ffd575f80fd5b5f6020828403121561489b575f80fd5b81356142a881614877565b5f8083601f8401126148b6575f80fd5b50813567ffffffffffffffff8111156148cd575f80fd5b6020830191508360208285010111156148e4575f80fd5b9250929050565b5f805f604084860312156148fd575f80fd5b833567ffffffffffffffff811115614913575f80fd5b61491f868287016148a6565b909790965060209590950135949350505050565b803567ffffffffffffffff8116811461494a575f80fd5b919050565b5f805f805f60608688031215614963575f80fd5b61496c86614933565b9450602086013567ffffffffffffffff80821115614988575f80fd5b61499489838a016148a6565b909650945060408801359150808211156149ac575f80fd5b506149b9888289016148a6565b969995985093965092949392505050565b5f5b838110156149e45781810151838201526020016149cc565b50505f910152565b5f8151808452614a038160208601602086016149ca565b601f01601f19169290920160200192915050565b838152826020820152606060408201525f614a3560608301846149ec565b95945050505050565b5f6101008a83528960208401528860408401528760608401528660808401528560a08401528460c08401528060e0840152614a7b818401856149ec565b9b9a5050505050505050505050565b5f805f805f8060c08789031215614a9f575f80fd5b8635614aaa81614877565b95506020870135614aba81614877565b94506040870135614aca81614877565b959894975094956060810135955060808101359460a0909101359350915050565b5f8060408385031215614afc575f80fd5b823567ffffffffffffffff80821115614b13575f80fd5b9084019060e08287031215614b26575f80fd5b90925060208401359080821115614b3b575f80fd5b50830160608186031215614b4d575f80fd5b809150509250929050565b5f60208284031215614b68575f80fd5b6142a882614933565b8015158114612ffd575f80fd5b5f60208284031215614b8e575f80fd5b81356142a881614b71565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610ea857610ea8614b99565b81810381811115610ea857610ea8614b99565b600181811c90821680614c0057607f821691505b602082108103614c37577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b601f8211156143e757805f5260205f20601f840160051c81016020851015614c8f5750805b601f840160051c820191505b8181101561111b575f8155600101614c9b565b815167ffffffffffffffff811115614cc857614cc8614c3d565b614cdc81614cd68454614bec565b84614c6a565b602080601f831160018114614d0f575f8415614cf85750858301515b5f19600386901b1c1916600185901b178555610dca565b5f85815260208120601f198616915b82811015614d3d57888601518255948401946001909101908401614d1e565b5085821015614d5a57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f60208284031215614d7a575f80fd5b81516142a881614b71565b5f60208284031215614d95575f80fd5b813560ff811681146142a8575f80fd5b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614dd8575f80fd5b83018035915067ffffffffffffffff821115614df2575f80fd5b6020019150600581901b36038213156148e4575f80fd5b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614e3c575f80fd5b83018035915067ffffffffffffffff821115614e56575f80fd5b6020019150368190038213156148e4575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b818382375f9101908152919050565b5f815180845260208085019450602084015f5b83811015614ede5781516001600160a01b031687529582019590820190600101614eb9565b509495945050505050565b602081525f6142a86020830184614ea6565b604051601f8201601f1916810167ffffffffffffffff81118282101715614f2457614f24614c3d565b604052919050565b5f67ffffffffffffffff821115614f4557614f45614c3d565b5060051b60200190565b5f82601f830112614f5e575f80fd5b81356020614f73614f6e83614f2c565b614efb565b8083825260208201915060208460051b870101935086841115614f94575f80fd5b602086015b84811015614fb9578035614fac81614877565b8352918301918301614f99565b509695505050505050565b5f60208284031215614fd4575f80fd5b813567ffffffffffffffff811115614fea575f80fd5b614ff684828501614f4f565b949350505050565b81835281816020850137505f602082840101525f6020601f19601f840116840101905092915050565b608081525f6150396080830188614ea6565b828103602084015261504b8188614ea6565b90508560408401528281036060840152615066818587614ffe565b98975050505050505050565b5f60208284031215615082575f80fd5b5051919050565b5f5f19820361509a5761509a614b99565b5060010190565b5f60208083850312156150b2575f80fd5b825167ffffffffffffffff8111156150c8575f80fd5b8301601f810185136150d8575f80fd5b80516150e6614f6e82614f2c565b81815260059190911b82018301908381019087831115615104575f80fd5b928401925b8284101561512b57835161511c81614877565b82529284019290840190615109565b979650505050505050565b5f82516151478184602087016149ca565b9190910192915050565b838152818360208301375f910160200190815292915050565b5f806040838503121561517b575f80fd5b505080516020909101519092909150565b5f808585111561519a575f80fd5b838611156151a6575f80fd5b5050820193919092039150565b7fffffffffffffffff0000000000000000000000000000000000000000000000008960c01b16815287600882015286602882015285604882015284606882015282846088830137608892019182015260a8019695505050505050565b85815267ffffffffffffffff85166020820152608060408201525f615238608083018587614ffe565b90508260608301529695505050505050565b5f8261527d577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f805f805f8060c08789031215615297575f80fd5b86359550602087013567ffffffffffffffff808211156152b5575f80fd5b6152c18a838b01614f4f565b96506040890135955060608901359150808211156152dd575f80fd5b6152e98a838b01614f4f565b94506080890135935060a0890135915080821115615305575f80fd5b5061531289828a01614f4f565b9150509295509295509295565b8082028115828204841417610ea857610ea8614b9956fea164736f6c6343000818000a", + Bin: "0x60a060405234801562000010575f80fd5b50604051620053c4380380620053c4833981016040819052620000339162000045565b6001600160401b031660805262000074565b5f6020828403121562000056575f80fd5b81516001600160401b03811681146200006d575f80fd5b9392505050565b608051615330620000945f395f81816105e20152613cfd01526153305ff3fe6080604052600436106102e5575f3560e01c8063715018a611610186578063abc8d68d116100dc578063ddd8a3dc11610087578063e3fff1dd11610062578063e3fff1dd1461096e578063ef6602ba1461098d578063f2fde38b146109a2575f80fd5b8063ddd8a3dc14610911578063de8b303514610930578063e33491a71461094f575f80fd5b8063caf62533116100b7578063caf625331461086d578063ce5db8d6146108dd578063d279c191146108f2575f80fd5b8063abc8d68d1461080e578063b31a77d314610839578063bedb86fb1461084e575f80fd5b80638da5cb5b1161013c57806397fc007c1161011757806397fc007c146107ac578063a415d8dc146107cb578063a479265d146107f9575f80fd5b80638da5cb5b146106ae5780638f1d3776146106cb578063910129d41461077b575f80fd5b80637c41b6ac1161016c5780637c41b6ac1461066f57806388b1ea09146106825780638d644bb71461069b575f80fd5b8063715018a61461063c578063728cdbca14610650575f80fd5b80632571098d1161023b578063404fa7b1116101f15780635ef7a94a116101cc5780635ef7a94a1461059e5780635f77cf1d146105d15780636c578c1d1461061d575f80fd5b8063404fa7b11461053a57806357e0af6c146105685780635c975abb14610587575f80fd5b806336622a301161022157806336622a30146104dd5780633b70c18a146104fc5780633fdeecb21461051b575f80fd5b80632571098d1461047b5780632b7ac3f3146104a6575f80fd5b8063121dcd501161029b5780631e228302116102765780631e2283021461041257806321e2f9e0146104315780632362f03e14610450575f80fd5b8063121dcd50146103b857806318463fb0146103cd57806318af3b2b146103e2575f80fd5b80630ceb6780116102cb5780630ceb67801461035657806310d4458314610377578063116a1f4214610396575f80fd5b806304d77215146102f0578063059def6114610333575f80fd5b366102ec57005b5f80fd5b3480156102fb575f80fd5b5061031e61030a36600461484d565b60a46020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561033e575f80fd5b50610348609d5481565b60405190815260200161032a565b348015610361575f80fd5b50610375610370366004614878565b6109c1565b005b348015610382575f80fd5b506103756103913660046148d8565b610a93565b3480156103a1575f80fd5b5061031e6103b036600461484d565b609d54101590565b3480156103c3575f80fd5b50610348609e5481565b3480156103d8575f80fd5b5061034860a85481565b3480156103ed575f80fd5b5061031e6103fc36600461484d565b5f90815260a16020526040902060030154421090565b34801561041d575f80fd5b5061037561042c36600461484d565b610ddd565b34801561043c575f80fd5b5061031e61044b36600461484d565b610e88565b34801561045b575f80fd5b5061034861046a36600461484d565b5f90815260a1602052604090205490565b348015610486575f80fd5b5061034861049536600461484d565b60a06020525f908152604090205481565b3480156104b1575f80fd5b50609c546104c5906001600160a01b031681565b6040516001600160a01b03909116815260200161032a565b3480156104e8575f80fd5b506103756104f736600461493c565b610eb9565b348015610507575f80fd5b50609b546104c5906001600160a01b031681565b348015610526575f80fd5b506103756105353660046148d8565b61112d565b348015610545575f80fd5b5061055961055436600461484d565b6117e2565b60405161032a93929190614a04565b348015610573575f80fd5b5061037561058236600461484d565b61188a565b348015610592575f80fd5b5060655460ff1661031e565b3480156105a9575f80fd5b506105bd6105b836600461484d565b61192d565b60405161032a989796959493929190614a2b565b3480156105dc575f80fd5b506106047f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff909116815260200161032a565b348015610628575f80fd5b50610375610637366004614878565b6119f7565b348015610647575f80fd5b50610375611ab4565b34801561065b575f80fd5b5061037561066a366004614a77565b611ac7565b61037561067d366004614ad8565b611e0a565b34801561068d575f80fd5b5060a75461031e9060ff1681565b6103756106a9366004614b45565b6128ab565b3480156106b9575f80fd5b506033546001600160a01b03166104c5565b3480156106d6575f80fd5b506107376106e536600461484d565b60a56020525f9081526040902080546001820154600283015460039093015467ffffffffffffffff831693680100000000000000009093046001600160a01b0316929060ff8082169161010090041686565b6040805167ffffffffffffffff90971687526001600160a01b03909516602087015293850192909252606084015215156080830152151560a082015260c00161032a565b348015610786575f80fd5b5061031e61079536600461484d565b5f90815260a5602052604090206003015460ff1690565b3480156107b7575f80fd5b506103756107c6366004614878565b612e17565b3480156107d6575f80fd5b5061031e6107e5366004614878565b609f6020525f908152604090205460ff1681565b348015610804575f80fd5b5061034860995481565b348015610819575f80fd5b50610348610828366004614878565b60a66020525f908152604090205481565b348015610844575f80fd5b5061034860a95481565b348015610859575f80fd5b50610375610868366004614b6b565b612efa565b348015610878575f80fd5b506108b561088736600461484d565b60a16020525f9081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a00161032a565b3480156108e8575f80fd5b5061034860985481565b3480156108fd575f80fd5b5061037561090c366004614878565b612fed565b34801561091c575f80fd5b506097546104c5906001600160a01b031681565b34801561093b575f80fd5b5061031e61094a36600461484d565b613069565b34801561095a575f80fd5b5061037561096936600461484d565b6130b3565b348015610979575f80fd5b5061037561098836600461484d565b613724565b348015610998575f80fd5b50610348609a5481565b3480156109ad575f80fd5b506103756109bc366004614878565b6137c7565b6109c9613854565b6001600160a01b0381165f908152609f602052604090205460ff1615610a365760405162461bcd60e51b815260206004820152601f60248201527f6163636f756e7420697320616c72656164792061206368616c6c656e6765720060448201526064015b60405180910390fd5b6001600160a01b0381165f818152609f6020908152604091829020805460ff1916600190811790915591519182527f7feb653c7b1f0d23daeed494225b3f28851cdc8973fcc653866d9b6e205fc00991015b60405180910390a250565b610a9b613854565b5f8111610aea5760405162461bcd60e51b815260206004820152601560248201527f636f756e74206d757374206265206e6f6e7a65726f00000000000000000000006044820152606401610a2d565b5f80610af685856138ae565b915091505f610b09836001015160c01c90565b5f81815260a160205260409020549091508214610b685760405162461bcd60e51b815260206004820152601460248201527f696e636f727265637420626174636820686173680000000000000000000000006044820152606401610a2d565b5f60a181610b768785614bb3565b81526020019081526020015f205f015414610bf85760405162461bcd60e51b8152602060048201526024808201527f726576657274696e67206d7573742073746172742066726f6d2074686520656e60448201527f64696e67000000000000000000000000000000000000000000000000000000006064820152608401610a2d565b609d548111610c6f5760405162461bcd60e51b815260206004820152602160248201527f63616e206f6e6c792072657665727420756e46696e616c697a6564206261746360448201527f68000000000000000000000000000000000000000000000000000000000000006064820152608401610a2d565b610c7a600182614bc6565b609e555b8315610dd557604051829082907ecae2739091badfd91c373f0a16cede691e0cd25bb80cff77dd5caeb4710146905f90a35f81815260a16020908152604080832083905560a5909152902060030154610100900460ff16610d2f575f81815260a560209081526040808320600181015490546801000000000000000090046001600160a01b0316845260a69092528220805491929091610d1f908490614bb3565b909155505060a7805460ff191690555b5f81815260a56020526040812080547fffffffff0000000000000000000000000000000000000000000000000000000016815560018101829055600281019190915560030180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016905560a95415801590610dac575060a95481145b15610db6575f60a9555b6001015f81815260a160205260409020545f1990940193915081610c7e575b505050505050565b610de5613854565b5f81118015610df65750609a548114155b610e425760405162461bcd60e51b815260206004820152601b60248201527f696e76616c6964206e6577206d61784e756d5478496e4368756e6b00000000006044820152606401610a2d565b609a80549082905560408051828152602081018490527f6d0f49971e462a2f78a25906f145cb29cd5e7bd01ebf681ac8f58cb814e5877a91015b60405180910390a15050565b5f81815260a1602052604081206002015415801590610eb357505f82815260a1602052604090205415155b92915050565b60a95415610f095760405162461bcd60e51b815260206004820152600b60248201527f6e656564207265766572740000000000000000000000000000000000000000006044820152606401610a2d565b610f116138c9565b610f248567ffffffffffffffff16613069565b610f705760405162461bcd60e51b815260206004820152601260248201527f626174636820696e206368616c6c656e676500000000000000000000000000006044820152606401610a2d565b67ffffffffffffffff85165f90815260a5602052604090206003810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010017905560a7805460ff191690556099546002909101544291610fd491614bb3565b116110d95767ffffffffffffffff85165f90815260a560209081526040808320600301805460ff1916600117905560a3909152902060020180546110d491879161101d90614bd9565b80601f016020809104026020016040519081016040528092919081815260200182805461104990614bd9565b80156110945780601f1061106b57610100808354040283529160200191611094565b820191905f5260205f20905b81548152906001019060200180831161107757829003601f168201915b50505050506040518060400160405280600781526020017f54696d656f75740000000000000000000000000000000000000000000000000081525061391c565b611126565b6110e68585858585613aa4565b61112685336040518060400160405280600d81526020017f50726f6f66207375636365737300000000000000000000000000000000000000815250613e15565b5050505050565b611135613854565b806111825760405162461bcd60e51b815260206004820152600f60248201527f7a65726f20737461746520726f6f7400000000000000000000000000000000006044820152606401610a2d565b5f805260a06020527fb84a74ec6ef4d0e83b6006dfaa014ab4026f9f3b97d186e604d29998a4e808ea54156111f95760405162461bcd60e51b815260206004820152601660248201527f67656e6573697320626174636820696d706f72746564000000000000000000006044820152606401610a2d565b5f8061120585856138ae565b915091505f611215836019015190565b90505f611223845160f81c90565b90505f611234856011015160c01c90565b600986015160c01c600187015160c01c875160f81c0101019050801561129c5760405162461bcd60e51b815260206004820152601760248201527f6e6f7420616c6c206669656c647320617265207a65726f0000000000000000006044820152606401610a2d565b505f6112a9856019015190565b036112f65760405162461bcd60e51b815260206004820152600e60248201527f7a65726f206461746120686173680000000000000000000000000000000000006044820152606401610a2d565b5f611302856059015190565b1461134f5760405162461bcd60e51b815260206004820152601960248201527f6e6f6e7a65726f20706172656e742062617463682068617368000000000000006044820152606401610a2d565b7f010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c44401461137b856039015190565b146113c85760405162461bcd60e51b815260206004820152601660248201527f696e76616c69642076657273696f6e65642068617368000000000000000000006044820152606401610a2d565b6040805160a0808201835285825260208083018581524284860181815260608087019283525f608080890182815282805260a1885298517f32ae1b88a7d4f92d7e214b63c8ea04cd13e2faaa60c50f499f2254336d98f8825594517f32ae1b88a7d4f92d7e214b63c8ea04cd13e2faaa60c50f499f2254336d98f8835591517f32ae1b88a7d4f92d7e214b63c8ea04cd13e2faaa60c50f499f2254336d98f8845591517f32ae1b88a7d4f92d7e214b63c8ea04cd13e2faaa60c50f499f2254336d98f8855594517f32ae1b88a7d4f92d7e214b63c8ea04cd13e2faaa60c50f499f2254336d98f886558551610100810187527f010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c44401481528084018981528188018781529282018d815293820187815295820187815260c083018881528951808b01909a5260028a527f30780000000000000000000000000000000000000000000000000000000000008a88015260e08401998a5297805260a290955281517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342a90815590517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342b5591517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342c5591517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342d5592517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342e5590517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342f5591517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b34305591519091907f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b3431906116719082614c9b565b5050604080516060810182525f808252602080830182815284518086018652600281527f30780000000000000000000000000000000000000000000000000000000000008184015294840194855291805260a3905281517f69b4e8f94ad9e612080e13aad01219472d8c2c7ae7aa6cdf175400ddc8c4ed3d90815590517f69b4e8f94ad9e612080e13aad01219472d8c2c7ae7aa6cdf175400ddc8c4ed3e5591519092507f69b4e8f94ad9e612080e13aad01219472d8c2c7ae7aa6cdf175400ddc8c4ed3f906117419082614c9b565b50505f80805260a06020527fb84a74ec6ef4d0e83b6006dfaa014ab4026f9f3b97d186e604d29998a4e808ea8790556040518592507f2c32d4ae151744d0bf0b9464a3e897a1d17ed2f1af71f7c9a75f12ce0d28238f908290a3604080518681525f60208201819052859290917f26ba82f907317eedc97d0cbef23de76a43dd6edb563bdb6e9407645b950a7a2d910160405180910390a350505050505050565b60a36020525f90815260409020805460018201546002830180549293919261180990614bd9565b80601f016020809104026020016040519081016040528092919081815260200182805461183590614bd9565b80156118805780601f1061185757610100808354040283529160200191611880565b820191905f5260205f20905b81548152906001019060200180831161186357829003601f168201915b5050505050905083565b611892613854565b5f811180156118a357506099548114155b6118ef5760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964206e65772070726f6f662077696e646f7700000000000000006044820152606401610a2d565b609980549082905560408051828152602081018490527f1e3a2094feb4b696dd3d7caea38ad2f41dbdcac3fa3943c7a693aff8a64b0a619101610e7c565b60a2602052805f5260405f205f91509050805f01549080600101549080600201549080600301549080600401549080600501549080600601549080600701805461197690614bd9565b80601f01602080910402602001604051908101604052809291908181526020018280546119a290614bd9565b80156119ed5780601f106119c4576101008083540402835291602001916119ed565b820191905f5260205f20905b8154815290600101906020018083116119d057829003601f168201915b5050505050905088565b6119ff613854565b6001600160a01b0381165f908152609f602052604090205460ff16611a665760405162461bcd60e51b815260206004820152601b60248201527f6163636f756e74206973206e6f742061206368616c6c656e67657200000000006044820152606401610a2d565b6001600160a01b0381165f818152609f60209081526040808320805460ff19169055519182527f7feb653c7b1f0d23daeed494225b3f28851cdc8973fcc653866d9b6e205fc0099101610a88565b611abc613854565b611ac55f613eb7565b565b5f54610100900460ff1615808015611ae557505f54600160ff909116105b80611afe5750303b158015611afe57505f5460ff166001145b611b705760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610a2d565b5f805460ff191660011790558015611bae575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6001600160a01b0386161580611bcb57506001600160a01b038516155b15611c02576040517fecc6fdf000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038716611c585760405162461bcd60e51b815260206004820152601b60248201527f696e76616c6964206c31207374616b696e6720636f6e747261637400000000006044820152606401610a2d565b611c60613f20565b611c68613fa4565b609780546001600160a01b03808a167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255609b8054898416908316179055609c80549288169290911682179055609a859055609884905560998390556040515f907f728af3d16a5760405e27a082c98ab272e9f0a1d02f0085d41532a26093aedd96908290a3604080515f8152602081018690527f6d0f49971e462a2f78a25906f145cb29cd5e7bd01ebf681ac8f58cb814e5877a910160405180910390a1604080515f8152602081018590527fa577f4223f91f74e2dad65bbb8c30807587ae95d0d34288057bb3ec0d398a437910160405180910390a1604080515f8152602081018490527f1e3a2094feb4b696dd3d7caea38ad2f41dbdcac3fa3943c7a693aff8a64b0a61910160405180910390a18015611e01575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6097546001600160a01b0316636f1e8533336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015611e76573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e9a9190614d57565b611ee65760405162461bcd60e51b815260206004820152601360248201527f6f6e6c79207374616b657220616c6c6f776564000000000000000000000000006044820152606401610a2d565b60a95415611f365760405162461bcd60e51b815260206004820152600b60248201527f6e656564207265766572740000000000000000000000000000000000000000006044820152606401610a2d565b611f3e6138c9565b611f4b6020830183614d72565b60ff1615611f9b5760405162461bcd60e51b815260206004820152600f60248201527f696e76616c69642076657273696f6e00000000000000000000000000000000006044820152606401610a2d565b5f611fa96040840184614d92565b91505080611ff95760405162461bcd60e51b815260206004820152600e60248201527f626174636820697320656d7074790000000000000000000000000000000000006044820152606401610a2d565b608083013561204a5760405162461bcd60e51b815260206004820152601b60248201527f70726576696f757320737461746520726f6f74206973207a65726f00000000006044820152606401610a2d565b60a083013561209b5760405162461bcd60e51b815260206004820152601660248201527f6e657720737461746520726f6f74206973207a65726f000000000000000000006044820152606401610a2d565b5f806120b26120ad6020870187614df6565b6138ae565b915091505f6120c5836001015160c01c90565b5f81815260a1602052604090205490915082146121245760405162461bcd60e51b815260206004820152601b60248201527f696e636f727265637420706172656e74206261746368206861736800000000006044820152606401610a2d565b5f60a181612133846001614bb3565b81526020019081526020015f205f0154146121905760405162461bcd60e51b815260206004820152601760248201527f626174636820616c726561647920636f6d6d69747465640000000000000000006044820152606401610a2d565b609e5481146121e15760405162461bcd60e51b815260206004820152601560248201527f696e636f727265637420626174636820696e64657800000000000000000000006044820152606401610a2d565b5f81815260a260205260409020600301546080870135146122445760405162461bcd60e51b815260206004820152601d60248201527f696e636f72726563742070726576696f757320737461746520726f6f740000006044820152606401610a2d565b5f612253846011015160c01c90565b604080516020880281019091529091505f805b87811015612314575f6122fb8461228060408e018e614d92565b8581811061229057612290614e57565b90506020028101906122a29190614df6565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505085888f80606001906122f69190614df6565b614028565b9485019460209490940193929092019150600101612266565b5061232260608a018a614df6565b905061010060ff8301046020021461237c5760405162461bcd60e51b815260206004820152601360248201527f77726f6e67206269746d6170206c656e677468000000000000000000000000006044820152606401610a2d565b602087810280840320604051975060019590950194906123ac9088906123a4908d018d614d72565b60ff166141e8565b60c085811b600189015282811b600989015284901b601188015260198701819052605987018690526123ea876123e560608d018d614df6565b6141ef565b5f8049156123f9575f4961241b565b7f010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c4440145b6039890181905290506040518060a001604052806124548a8e80606001906124439190614df6565b61244f91506079614bb3565b902090565b8152602090810190612468908e018e614d72565b60ff168152602001428152602001609854426124849190614bb3565b81526020016124fe61249960408f018f614d92565b6124a460018f614bc6565b8181106124b3576124b3614e57565b90506020028101906124c59190614df6565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506141fb92505050565b81525060a15f8881526020019081526020015f205f820151815f0155602082015181600101556040820151816002015560608201518160030155608082015181600401559050506040518061010001604052808281526020018381526020018c6080013581526020018c60a0013581526020018c60c0013581526020018481526020018681526020018c80606001906125979190614df6565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525093909452505088815260a2602090815260409182902084518155908401516001820155908301516002820155606083015160038201556080830151600482015560a0830151600582015560c0830151600682015560e083015190915060078201906126319082614c9b565b50506040805160018082528183019092525f9250906020808301908036833701905050905033815f8151811061266957612669614e57565b60200260200101906001600160a01b031690816001600160a01b031681525050604051806060016040528061269b5f90565b81526020018c80602001906126b09190614df6565b6040516126be929190614e84565b60405180910390208152602001826040516020016126dc9190614ed6565b60408051601f1981840301815291815291525f89815260a36020908152908290208351815590830151600182015590820151600282019061271d9082614c9b565b505050609e8790555f87905260a36020526097546001600160a01b031663c0af545b6127498d80614df6565b8101906127569190614fb1565b61276f8e80602001906127699190614df6565b5f614248565b60a35f8c81526020019081526020015f205f01548f80604001906127939190614df6565b6040518663ffffffff1660e01b81526004016127b3959493929190615014565b602060405180830381865afa1580156127ce573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127f29190614d57565b6128645760405162461bcd60e51b815260206004820152602160248201527f746865207369676e617475726520766572696669636174696f6e206661696c6560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152608401610a2d565b5f87815260a16020526040808220549051909189917f2c32d4ae151744d0bf0b9464a3e897a1d17ed2f1af71f7c9a75f12ce0d28238f9190a3505050505050505050505050565b335f908152609f602052604090205460ff166129095760405162461bcd60e51b815260206004820152601960248201527f63616c6c6572206368616c6c656e67657220616c6c6f776564000000000000006044820152606401610a2d565b60a954156129595760405162461bcd60e51b815260206004820152600b60248201527f6e656564207265766572740000000000000000000000000000000000000000006044820152606401610a2d565b6129616138c9565b60a75460ff16156129b45760405162461bcd60e51b815260206004820152601460248201527f616c726561647920696e206368616c6c656e67650000000000000000000000006044820152606401610a2d565b8067ffffffffffffffff16609d5410612a0f5760405162461bcd60e51b815260206004820152601760248201527f626174636820616c72656164792066696e616c697a65640000000000000000006044820152606401610a2d565b67ffffffffffffffff81165f90815260a160205260408120549003612a765760405162461bcd60e51b815260206004820152600f60248201527f6261746368206e6f7420657869737400000000000000000000000000000000006044820152606401610a2d565b67ffffffffffffffff81165f90815260a560205260409020546801000000000000000090046001600160a01b031615612af15760405162461bcd60e51b815260206004820152601860248201527f626174636820616c7265616479206368616c6c656e67656400000000000000006044820152606401610a2d565b67ffffffffffffffff81165f90815260a160205260409020600301544210612b815760405162461bcd60e51b815260206004820152603360248201527f63616e6e6f74206368616c6c656e6765206261746368206f757473696465207460448201527f6865206368616c6c656e67652077696e646f77000000000000000000000000006064820152608401610a2d565b60975f9054906101000a90046001600160a01b03166001600160a01b0316634d64903a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bd1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bf5919061505f565b341015612c445760405162461bcd60e51b815260206004820152601260248201527f696e73756666696369656e742076616c756500000000000000000000000000006044820152606401610a2d565b67ffffffffffffffff81811660a88190556040805160c0810182528281523360208083018281523484860190815242606086019081525f6080870181815260a0880182815299825260a5909552969096209451855492516001600160a01b031668010000000000000000027fffffffff00000000000000000000000000000000000000000000000000000000909316981697909717178355945160018301559151600282015592516003909301805492511515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff941515949094167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000909316929092179290921790556001600160a01b03168167ffffffffffffffff167f3a6ea19df25b49e7624e313ce7c1ab23984238e93727260db56a81735b1b997634604051612d9691815260200190565b60405180910390a35f609d546001612dae9190614bb3565b90505b609e548111612e06578167ffffffffffffffff168114612df4576099545f82815260a1602052604081206003018054909190612dee908490614bb3565b90915550505b80612dfe81615076565b915050612db1565b505060a7805460ff19166001179055565b612e1f613854565b6001600160a01b03811615801590612e455750609c546001600160a01b03828116911614155b612e915760405162461bcd60e51b815260206004820152601460248201527f696e76616c6964206e65772076657269666965720000000000000000000000006044820152606401610a2d565b609c80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f728af3d16a5760405e27a082c98ab272e9f0a1d02f0085d41532a26093aedd96905f90a35050565b612f02613854565b8015612fe557612f1061429c565b60a75460ff1615612fe25760a8545f90815260a560209081526040808320600181015490546801000000000000000090046001600160a01b0316845260a69092528220805491929091612f64908490614bb3565b909155505060a8545f90815260a56020526040812080547fffffffff0000000000000000000000000000000000000000000000000000000016815560018101829055600281019190915560030180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016905560a7805460ff191690555b50565b612fe26142f6565b335f90815260a660205260408120549081900361304c5760405162461bcd60e51b815260206004820152601c60248201527f696e76616c69642062617463684368616c6c656e6765526577617264000000006044820152606401610a2d565b335f90815260a66020526040812055613065828261432f565b5050565b5f81815260a560205260408120546801000000000000000090046001600160a01b031615801590610eb35750505f90815260a56020526040902060030154610100900460ff161590565b60a954156131035760405162461bcd60e51b815260206004820152600b60248201527f6e656564207265766572740000000000000000000000000000000000000000006044820152606401610a2d565b61310b6138c9565b61311481610e88565b6131605760405162461bcd60e51b815260206004820152600f60248201527f6261746368206e6f7420657869737400000000000000000000000000000000006044820152606401610a2d565b61316981613069565b156131b65760405162461bcd60e51b815260206004820152601260248201527f626174636820696e206368616c6c656e676500000000000000000000000000006044820152606401610a2d565b5f81815260a5602052604090206003015460ff16156132175760405162461bcd60e51b815260206004820152601660248201527f62617463682073686f756c6420626520726576657274000000000000000000006044820152606401610a2d565b5f81815260a160205260409020600301544210156132775760405162461bcd60e51b815260206004820152601960248201527f626174636820696e206368616c6c656e67652077696e646f77000000000000006044820152606401610a2d565b5f81815260a260205260408120600201549060a090613297600185614bc6565b81526020019081526020015f2054146132f25760405162461bcd60e51b815260206004820152601d60248201527f696e636f72726563742070726576696f757320737461746520726f6f740000006044820152606401610a2d565b5f81815260a060205260409020541561334d5760405162461bcd60e51b815260206004820152601660248201527f626174636820616c7265616479207665726966696564000000000000000000006044820152606401610a2d565b80609d54600101146133a15760405162461bcd60e51b815260206004820152601560248201527f696e636f727265637420626174636820696e64657800000000000000000000006044820152606401610a2d565b609d8190555f81815260a2602081815260408084206004810154855260a48352818520805460ff19166001179055858552600381015460a0845291909420555260050154801561357157609b545f83815260a26020526040812060070180546001600160a01b039093169261341590614bd9565b80601f016020809104026020016040519081016040528092919081815260200182805461344190614bd9565b801561348c5780601f106134635761010080835404028352916020019161348c565b820191905f5260205f20905b81548152906001019060200180831161346f57829003601f168201915b5050505f87815260a260209081526040822060060154949550850193879003925090505b8581101561356b576101008187038111156134ca57508086035b6101008204602081028501516040517f55f613ce0000000000000000000000000000000000000000000000000000000081526004810186905260248101849052604481018290529091906001600160a01b038916906355f613ce906064015f604051808303815f87803b15801561353f575f80fd5b505af1158015613551573d5f803e3d5ffd5b5050505061010085019450505050610100810190506134b0565b50505050505b60a15f61357f600185614bc6565b815260208101919091526040015f90812081815560018082018390556002820183905560038201839055600490910182905560a291906135bf9085614bc6565b815260208101919091526040015f9081208181556001810182905560028101829055600381018290556004810182905560058101829055600681018290559061360b6007830182614803565b5060a390505f61361c600185614bc6565b815260208101919091526040015f90812081815560018101829055906136456002830182614803565b5060a590505f613656600185614bc6565b815260208082019290925260409081015f90812080547fffffffff000000000000000000000000000000000000000000000000000000001681556001810182905560028101829055600390810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016905585825260a184528282205460a2855291839020908101546004909101548351918252938101939093529184917f26ba82f907317eedc97d0cbef23de76a43dd6edb563bdb6e9407645b950a7a2d910160405180910390a35050565b61372c613854565b5f8111801561373d57506098548114155b6137895760405162461bcd60e51b815260206004820152601b60248201527f696e76616c6964206e65772066696e616c697a6520706572696f6400000000006044820152606401610a2d565b609880549082905560408051828152602081018490527fa577f4223f91f74e2dad65bbb8c30807587ae95d0d34288057bb3ec0d398a4379101610e7c565b6137cf613854565b6001600160a01b03811661384b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610a2d565b612fe281613eb7565b6033546001600160a01b03163314611ac55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a2d565b5f805f6138bb85856143d9565b812090969095509350505050565b60655460ff1615611ac55760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610a2d565b67ffffffffffffffff831660a98190555f90815260a5602090815260408220546097548551680100000000000000009092046001600160a01b039081169493911691638b8c24c191613974918801810190880161508e565b6040518263ffffffff1660e01b81526004016139909190614ed6565b6020604051808303815f875af11580156139ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139d0919061505f565b67ffffffffffffffff86165f90815260a560205260409020600101549091506139fa908290614bb3565b67ffffffffffffffff86165f90815260a560209081526040808320546801000000000000000090046001600160a01b0316835260a690915281208054909190613a44908490614bb3565b9091555050604051613a57908490615123565b604051908190038120906001600160a01b0384169067ffffffffffffffff8816907f1e66d5dca70bf28588ef2f5cb3c299e65e2e7bdef2767823d3ae47a9caff95c6905f90a45050505050565b82613af15760405162461bcd60e51b815260206004820152601960248201527f496e76616c6964206167677265676174696f6e2070726f6f66000000000000006044820152606401610a2d565b60a08114613b415760405162461bcd60e51b815260206004820152601660248201527f496e76616c6964204b5a4720646174612070726f6f66000000000000000000006044820152606401610a2d565b67ffffffffffffffff85165f90815260a2602090815260408083205490518392600a92613b74929091889188910161513e565b60408051601f1981840301815290829052613b8e91615123565b5f60405180830381855afa9150503d805f8114613bc6576040519150601f19603f3d011682016040523d82523d5f602084013e613bcb565b606091505b509150915081613c435760405162461bcd60e51b815260206004820152602a60248201527f6661696c656420746f2063616c6c20706f696e74206576616c756174696f6e2060448201527f707265636f6d70696c65000000000000000000000000000000000000000000006064820152608401610a2d565b5f81806020019051810190613c589190615157565b9150507f73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff000000018114613cca5760405162461bcd60e51b815260206004820152601c60248201527f707265636f6d70696c6520756e6578706563746564206f7574707574000000006044820152606401610a2d565b50505067ffffffffffffffff85165f90815260a260205260408082206002810154600382015460048301546001909301547f00000000000000000000000000000000000000000000000000000000000000009492939192613d2d9087898b615179565b67ffffffffffffffff8d165f90815260a26020908152604091829020549151613d5e999897969594939291016151a0565b60408051601f198184030181528282528051602091820120609c5467ffffffffffffffff8b165f90815260a190935292909120600101547f2c09a8480000000000000000000000000000000000000000000000000000000084529093506001600160a01b0390911691632c09a84891613de1918a908a908a9088906004016151fc565b5f6040518083038186803b158015613df7575f80fd5b505afa158015613e09573d5f803e3d5ffd5b50505050505050505050565b67ffffffffffffffff83165f90815260a560209081526040808320600101546001600160a01b038616845260a69092528220805491928392613e58908490614bb3565b9091555050604051613e6b908390615123565b604051908190038120906001600160a01b0385169067ffffffffffffffff8716907f1e66d5dca70bf28588ef2f5cb3c299e65e2e7bdef2767823d3ae47a9caff95c6905f90a450505050565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16613f9c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a2d565b611ac56144b0565b5f54610100900460ff166140205760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a2d565b611ac5614538565b60405185515f916020880191819060218a019085906140489086906145bd565b90505f805b828110156140b757603c8102870160018101518652602101517fffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000166020860152603a850194505f6140a2856038015160f01c90565b603c959095019492909201915060010161404d565b506020028301604052600185019150825b811561416b575f6140dd84603a015160f01c90565b90506140ed85828e8e8e8e614652565b9450806140fe856038015160f01c90565b101561414c5760405162461bcd60e51b815260206004820152601d60248201527f6e756d20747873206c657373207468616e206e756d204c31206d7367730000006044820152606401610a2d565b9a8b019a998a01999690960195603c92909201915f19909101906140c8565b609a54602061417a8387614bc6565b6141849190615237565b11156141d25760405162461bcd60e51b815260206004820152601960248201527f746f6f206d616e792074787320696e206f6e65206368756e6b000000000000006044820152606401610a2d565b50505081900390208852505b9695505050505050565b8082535050565b80826079850137505050565b5f805f6020840190506001810191505f6142168286516145bd565b90505f5b614225600183614bc6565b81101561423b57603c939093019260010161421a565b505f6141de845160c01c90565b60605f8080808061425b888a018a61526f565b95509550955095509550508187106142795794506142959350505050565b83871061428d578295505050505050614295565b509293505050505b9392505050565b6142a46138c9565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586142d93390565b6040516001600160a01b03909116815260200160405180910390a1565b6142fe6147b1565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336142d9565b8015613065575f826001600160a01b0316826040515f6040518083038185875af1925050503d805f811461437e576040519150601f19603f3d011682016040523d82523d5f602084013e614383565b606091505b50509050806143d45760405162461bcd60e51b815260206004820152601b60248201527f526f6c6c75703a20455448207472616e73666572206661696c656400000000006044820152606401610a2d565b505050565b5f81607981101561442c5760405162461bcd60e51b815260206004820152601d60248201527f626174636820686561646572206c656e67746820746f6f20736d616c6c0000006044820152606401610a2d565b6040519150808483378082016040525f61444a836009015160c01c90565b905061010060ff82010460200260790182146144a85760405162461bcd60e51b815260206004820152601360248201527f77726f6e67206269746d6170206c656e677468000000000000000000000000006044820152606401610a2d565b509250929050565b5f54610100900460ff1661452c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a2d565b6065805460ff19169055565b5f54610100900460ff166145b45760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610a2d565b611ac533613eb7565b5f6145c9835160f81c90565b9050805f03614604576040517f7c62f08c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61460f603c8261530c565b61461a906001614bb3565b8214610eb3576040517fb8f4bbc000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f855f036146615750856141de565b609b546001600160a01b03165f80805b898110156147475760ff89169150600889901c81158061468f575082155b1561469e578060200288013593505b600184841c165f03614736576040517fae453cd5000000000000000000000000000000000000000000000000000000008152600481018a90525f906001600160a01b0387169063ae453cd590602401602060405180830381865afa158015614708573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061472c919061505f565b8d52506020909b019a5b506001988901989788019701614671565b505060ff5f1988011681811c600116156147a35760405162461bcd60e51b815260206004820152601b60248201527f63616e6e6f7420736b6970206c617374204c31206d65737361676500000000006044820152606401610a2d565b509798975050505050505050565b60655460ff16611ac55760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610a2d565b50805461480f90614bd9565b5f825580601f1061481e575050565b601f0160209004905f5260205f2090810190612fe291905b80821115614849575f8155600101614836565b5090565b5f6020828403121561485d575f80fd5b5035919050565b6001600160a01b0381168114612fe2575f80fd5b5f60208284031215614888575f80fd5b813561429581614864565b5f8083601f8401126148a3575f80fd5b50813567ffffffffffffffff8111156148ba575f80fd5b6020830191508360208285010111156148d1575f80fd5b9250929050565b5f805f604084860312156148ea575f80fd5b833567ffffffffffffffff811115614900575f80fd5b61490c86828701614893565b909790965060209590950135949350505050565b803567ffffffffffffffff81168114614937575f80fd5b919050565b5f805f805f60608688031215614950575f80fd5b61495986614920565b9450602086013567ffffffffffffffff80821115614975575f80fd5b61498189838a01614893565b90965094506040880135915080821115614999575f80fd5b506149a688828901614893565b969995985093965092949392505050565b5f5b838110156149d15781810151838201526020016149b9565b50505f910152565b5f81518084526149f08160208601602086016149b7565b601f01601f19169290920160200192915050565b838152826020820152606060408201525f614a2260608301846149d9565b95945050505050565b5f6101008a83528960208401528860408401528760608401528660808401528560a08401528460c08401528060e0840152614a68818401856149d9565b9b9a5050505050505050505050565b5f805f805f8060c08789031215614a8c575f80fd5b8635614a9781614864565b95506020870135614aa781614864565b94506040870135614ab781614864565b959894975094956060810135955060808101359460a0909101359350915050565b5f8060408385031215614ae9575f80fd5b823567ffffffffffffffff80821115614b00575f80fd5b9084019060e08287031215614b13575f80fd5b90925060208401359080821115614b28575f80fd5b50830160608186031215614b3a575f80fd5b809150509250929050565b5f60208284031215614b55575f80fd5b61429582614920565b8015158114612fe2575f80fd5b5f60208284031215614b7b575f80fd5b813561429581614b5e565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610eb357610eb3614b86565b81810381811115610eb357610eb3614b86565b600181811c90821680614bed57607f821691505b602082108103614c24577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b601f8211156143d457805f5260205f20601f840160051c81016020851015614c7c5750805b601f840160051c820191505b81811015611126575f8155600101614c88565b815167ffffffffffffffff811115614cb557614cb5614c2a565b614cc981614cc38454614bd9565b84614c57565b602080601f831160018114614cfc575f8415614ce55750858301515b5f19600386901b1c1916600185901b178555610dd5565b5f85815260208120601f198616915b82811015614d2a57888601518255948401946001909101908401614d0b565b5085821015614d4757878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f60208284031215614d67575f80fd5b815161429581614b5e565b5f60208284031215614d82575f80fd5b813560ff81168114614295575f80fd5b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614dc5575f80fd5b83018035915067ffffffffffffffff821115614ddf575f80fd5b6020019150600581901b36038213156148d1575f80fd5b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614e29575f80fd5b83018035915067ffffffffffffffff821115614e43575f80fd5b6020019150368190038213156148d1575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b818382375f9101908152919050565b5f815180845260208085019450602084015f5b83811015614ecb5781516001600160a01b031687529582019590820190600101614ea6565b509495945050505050565b602081525f6142956020830184614e93565b604051601f8201601f1916810167ffffffffffffffff81118282101715614f1157614f11614c2a565b604052919050565b5f67ffffffffffffffff821115614f3257614f32614c2a565b5060051b60200190565b5f82601f830112614f4b575f80fd5b81356020614f60614f5b83614f19565b614ee8565b8083825260208201915060208460051b870101935086841115614f81575f80fd5b602086015b84811015614fa6578035614f9981614864565b8352918301918301614f86565b509695505050505050565b5f60208284031215614fc1575f80fd5b813567ffffffffffffffff811115614fd7575f80fd5b614fe384828501614f3c565b949350505050565b81835281816020850137505f602082840101525f6020601f19601f840116840101905092915050565b608081525f6150266080830188614e93565b82810360208401526150388188614e93565b90508560408401528281036060840152615053818587614feb565b98975050505050505050565b5f6020828403121561506f575f80fd5b5051919050565b5f5f19820361508757615087614b86565b5060010190565b5f602080838503121561509f575f80fd5b825167ffffffffffffffff8111156150b5575f80fd5b8301601f810185136150c5575f80fd5b80516150d3614f5b82614f19565b81815260059190911b820183019083810190878311156150f1575f80fd5b928401925b8284101561511857835161510981614864565b825292840192908401906150f6565b979650505050505050565b5f82516151348184602087016149b7565b9190910192915050565b838152818360208301375f910160200190815292915050565b5f8060408385031215615168575f80fd5b505080516020909101519092909150565b5f8085851115615187575f80fd5b83861115615193575f80fd5b5050820193919092039150565b7fffffffffffffffff0000000000000000000000000000000000000000000000008960c01b16815287600882015286602882015285604882015284606882015282846088830137608892019182015260a8019695505050505050565b85815267ffffffffffffffff85166020820152608060408201525f615225608083018587614feb565b90508260608301529695505050505050565b5f8261526a577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f805f805f8060c08789031215615284575f80fd5b86359550602087013567ffffffffffffffff808211156152a2575f80fd5b6152ae8a838b01614f3c565b96506040890135955060608901359150808211156152ca575f80fd5b6152d68a838b01614f3c565b94506080890135935060a08901359150808211156152f2575f80fd5b506152ff89828a01614f3c565b9150509295509295509295565b8082028115828204841417610eb357610eb3614b8656fea164736f6c6343000818000a", } // RollupABI is the input ABI used to generate the binding from. diff --git a/bindings/bindings/rollup_more.go b/bindings/bindings/rollup_more.go index ef0201f26..c41d63365 100644 --- a/bindings/bindings/rollup_more.go +++ b/bindings/bindings/rollup_more.go @@ -13,7 +13,7 @@ const RollupStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract\":\"co var RollupStorageLayout = new(solc.StorageLayout) -var RollupDeployedBin = "0x6080604052600436106102e5575f3560e01c8063715018a611610186578063abc8d68d116100dc578063ddd8a3dc11610087578063e3fff1dd11610062578063e3fff1dd146109c9578063ef6602ba146109e8578063f2fde38b146109fd575f80fd5b8063ddd8a3dc1461095f578063de8b30351461098b578063e33491a7146109aa575f80fd5b8063caf62533116100b7578063caf62533146108bb578063ce5db8d61461092b578063d279c19114610940575f80fd5b8063abc8d68d1461085c578063b31a77d314610887578063bedb86fb1461089c575f80fd5b80638da5cb5b1161013c57806397fc007c1161011757806397fc007c146107fa578063a415d8dc14610819578063a479265d14610847575f80fd5b80638da5cb5b146106d55780638f1d3776146106ff578063910129d4146107c9575f80fd5b80637c41b6ac1161016c5780637c41b6ac1461069657806388b1ea09146106a95780638d644bb7146106c2575f80fd5b8063715018a614610663578063728cdbca14610677575f80fd5b80632571098d1161023b578063404fa7b1116101f15780635ef7a94a116101cc5780635ef7a94a146105c55780635f77cf1d146105f85780636c578c1d14610644575f80fd5b8063404fa7b11461056157806357e0af6c1461058f5780635c975abb146105ae575f80fd5b806336622a301161022157806336622a30146104f75780633b70c18a146105165780633fdeecb214610542575f80fd5b80632571098d1461047b5780632b7ac3f3146104a6575f80fd5b8063121dcd501161029b5780631e228302116102765780631e2283021461041257806321e2f9e0146104315780632362f03e14610450575f80fd5b8063121dcd50146103b857806318463fb0146103cd57806318af3b2b146103e2575f80fd5b80630ceb6780116102cb5780630ceb67801461035657806310d4458314610377578063116a1f4214610396575f80fd5b806304d77215146102f0578063059def6114610333575f80fd5b366102ec57005b5f80fd5b3480156102fb575f80fd5b5061031e61030a366004615367565b60a46020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561033e575f80fd5b50610348609d5481565b60405190815260200161032a565b348015610361575f80fd5b5061037561037036600461539f565b610a1c565b005b348015610382575f80fd5b506103756103913660046153ff565b610b40565b3480156103a1575f80fd5b5061031e6103b0366004615367565b609d54101590565b3480156103c3575f80fd5b50610348609e5481565b3480156103d8575f80fd5b5061034860a85481565b3480156103ed575f80fd5b5061031e6103fc366004615367565b5f90815260a16020526040902060030154421090565b34801561041d575f80fd5b5061037561042c366004615367565b610f13565b34801561043c575f80fd5b5061031e61044b366004615367565b610fd8565b34801561045b575f80fd5b5061034861046a366004615367565b5f90815260a1602052604090205490565b348015610486575f80fd5b50610348610495366004615367565b60a06020525f908152604090205481565b3480156104b1575f80fd5b50609c546104d29073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161032a565b348015610502575f80fd5b50610375610511366004615463565b611009565b348015610521575f80fd5b50609b546104d29073ffffffffffffffffffffffffffffffffffffffff1681565b34801561054d575f80fd5b5061037561055c3660046153ff565b6112ed565b34801561056c575f80fd5b5061058061057b366004615367565b611a3e565b60405161032a93929190615549565b34801561059a575f80fd5b506103756105a9366004615367565b611ae6565b3480156105b9575f80fd5b5060655460ff1661031e565b3480156105d0575f80fd5b506105e46105df366004615367565b611ba3565b60405161032a989796959493929190615570565b348015610603575f80fd5b5061062b7f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff909116815260200161032a565b34801561064f575f80fd5b5061037561065e36600461539f565b611c6d565b34801561066e575f80fd5b50610375611d7c565b348015610682575f80fd5b506103756106913660046155bc565b611d8f565b6103756106a436600461561d565b612158565b3480156106b4575f80fd5b5060a75461031e9060ff1681565b6103756106d036600461568a565b612d90565b3480156106e0575f80fd5b5060335473ffffffffffffffffffffffffffffffffffffffff166104d2565b34801561070a575f80fd5b50610778610719366004615367565b60a56020525f9081526040902080546001820154600283015460039093015467ffffffffffffffff8316936801000000000000000090930473ffffffffffffffffffffffffffffffffffffffff16929060ff8082169161010090041686565b6040805167ffffffffffffffff909716875273ffffffffffffffffffffffffffffffffffffffff909516602087015293850192909252606084015215156080830152151560a082015260c00161032a565b3480156107d4575f80fd5b5061031e6107e3366004615367565b5f90815260a5602052604090206003015460ff1690565b348015610805575f80fd5b5061037561081436600461539f565b61342b565b348015610824575f80fd5b5061031e61083336600461539f565b609f6020525f908152604090205460ff1681565b348015610852575f80fd5b5061034860995481565b348015610867575f80fd5b5061034861087636600461539f565b60a66020525f908152604090205481565b348015610892575f80fd5b5061034860a95481565b3480156108a7575f80fd5b506103756108b63660046156b0565b61354f565b3480156108c6575f80fd5b506109036108d5366004615367565b60a16020525f9081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a00161032a565b348015610936575f80fd5b5061034860985481565b34801561094b575f80fd5b5061037561095a36600461539f565b61366d565b34801561096a575f80fd5b506097546104d29073ffffffffffffffffffffffffffffffffffffffff1681565b348015610996575f80fd5b5061031e6109a5366004615367565b613703565b3480156109b5575f80fd5b506103756109c4366004615367565b61375a565b3480156109d4575f80fd5b506103756109e3366004615367565b613ed3565b3480156109f3575f80fd5b50610348609a5481565b348015610a08575f80fd5b50610375610a1736600461539f565b613f90565b610a24614044565b73ffffffffffffffffffffffffffffffffffffffff81165f908152609f602052604090205460ff1615610ab8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f6163636f756e7420697320616c72656164792061206368616c6c656e6765720060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81165f818152609f602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915591519182527f7feb653c7b1f0d23daeed494225b3f28851cdc8973fcc653866d9b6e205fc00991015b60405180910390a250565b610b48614044565b5f8111610bb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f636f756e74206d757374206265206e6f6e7a65726f00000000000000000000006044820152606401610aaf565b5f80610bbd85856140c5565b915091505f610bd0836001015160c01c90565b5f81815260a160205260409020549091508214610c49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e636f727265637420626174636820686173680000000000000000000000006044820152606401610aaf565b5f60a181610c5787856156f8565b81526020019081526020015f205f015414610cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f726576657274696e67206d7573742073746172742066726f6d2074686520656e60448201527f64696e67000000000000000000000000000000000000000000000000000000006064820152608401610aaf565b609d548111610d84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f63616e206f6e6c792072657665727420756e46696e616c697a6564206261746360448201527f68000000000000000000000000000000000000000000000000000000000000006064820152608401610aaf565b610d8f60018261570b565b609e555b8315610f0b575f81815260a1602052604081205560a95415801590610db9575060a95481145b15610ea2575f81815260a56020526040902060030154610100900460ff16610e34575f81815260a5602090815260408083206001810154905468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff16845260a69092528220805491929091610e2e9084906156f8565b90915550505b5f81815260a56020526040812080547fffffffff00000000000000000000000000000000000000000000000000000000168155600181018290556002810182905560030180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016905560a9555b604051829082907ecae2739091badfd91c373f0a16cede691e0cd25bb80cff77dd5caeb4710146905f90a36001015f81815260a160205260409020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90940193915081610d93575b505050505050565b610f1b614044565b5f81118015610f2c5750609a548114155b610f92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f696e76616c6964206e6577206d61784e756d5478496e4368756e6b00000000006044820152606401610aaf565b609a80549082905560408051828152602081018490527f6d0f49971e462a2f78a25906f145cb29cd5e7bd01ebf681ac8f58cb814e5877a91015b60405180910390a15050565b5f81815260a160205260408120600201541580159061100357505f82815260a1602052604090205415155b92915050565b60a95415611073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6e656564207265766572740000000000000000000000000000000000000000006044820152606401610aaf565b61107b6140e0565b61108e8567ffffffffffffffff16613703565b6110f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f626174636820696e206368616c6c656e676500000000000000000000000000006044820152606401610aaf565b67ffffffffffffffff85165f90815260a5602052604090206003810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010017905560a780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556099546002909101544291611176916156f8565b116112995767ffffffffffffffff85165f90815260a56020908152604080832060030180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560a3909152902060020180546112949187916111dd9061571e565b80601f01602080910402602001604051908101604052809291908181526020018280546112099061571e565b80156112545780601f1061122b57610100808354040283529160200191611254565b820191905f5260205f20905b81548152906001019060200180831161123757829003601f168201915b50505050506040518060400160405280600781526020017f54696d656f75740000000000000000000000000000000000000000000000000081525061414d565b6112e6565b6112a685858585856142fc565b6112e685336040518060400160405280600d81526020017f50726f6f6620737563636573730000000000000000000000000000000000000081525061471e565b5050505050565b6112f5614044565b8061135c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f7a65726f20737461746520726f6f7400000000000000000000000000000000006044820152606401610aaf565b5f805260a06020527fb84a74ec6ef4d0e83b6006dfaa014ab4026f9f3b97d186e604d29998a4e808ea54156113ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f67656e6573697320626174636820696d706f72746564000000000000000000006044820152606401610aaf565b5f806113f985856140c5565b915091505f611409836019015190565b90505f611417845160f81c90565b90505f611428856011015160c01c90565b600986015160c01c600187015160c01c875160f81c010101905080156114aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6e6f7420616c6c206669656c647320617265207a65726f0000000000000000006044820152606401610aaf565b505f6114b7856019015190565b0361151e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f7a65726f206461746120686173680000000000000000000000000000000000006044820152606401610aaf565b5f61152a856059015190565b14611591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f6e6f6e7a65726f20706172656e742062617463682068617368000000000000006044820152606401610aaf565b7f010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c4440146115bd856039015190565b14611624576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f696e76616c69642076657273696f6e65642068617368000000000000000000006044820152606401610aaf565b6040805160a0808201835285825260208083018581524284860181815260608087019283525f608080890182815282805260a1885298517f32ae1b88a7d4f92d7e214b63c8ea04cd13e2faaa60c50f499f2254336d98f8825594517f32ae1b88a7d4f92d7e214b63c8ea04cd13e2faaa60c50f499f2254336d98f8835591517f32ae1b88a7d4f92d7e214b63c8ea04cd13e2faaa60c50f499f2254336d98f8845591517f32ae1b88a7d4f92d7e214b63c8ea04cd13e2faaa60c50f499f2254336d98f8855594517f32ae1b88a7d4f92d7e214b63c8ea04cd13e2faaa60c50f499f2254336d98f886558551610100810187527f010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c44401481528084018981528188018781529282018d815293820187815295820187815260c083018881528951808b01909a5260028a527f30780000000000000000000000000000000000000000000000000000000000008a88015260e08401998a5297805260a290955281517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342a90815590517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342b5591517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342c5591517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342d5592517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342e5590517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342f5591517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b34305591519091907f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b3431906118cd90826157e0565b5050604080516060810182525f808252602080830182815284518086018652600281527f30780000000000000000000000000000000000000000000000000000000000008184015294840194855291805260a3905281517f69b4e8f94ad9e612080e13aad01219472d8c2c7ae7aa6cdf175400ddc8c4ed3d90815590517f69b4e8f94ad9e612080e13aad01219472d8c2c7ae7aa6cdf175400ddc8c4ed3e5591519092507f69b4e8f94ad9e612080e13aad01219472d8c2c7ae7aa6cdf175400ddc8c4ed3f9061199d90826157e0565b50505f80805260a06020527fb84a74ec6ef4d0e83b6006dfaa014ab4026f9f3b97d186e604d29998a4e808ea8790556040518592507f2c32d4ae151744d0bf0b9464a3e897a1d17ed2f1af71f7c9a75f12ce0d28238f908290a3604080518681525f60208201819052859290917f26ba82f907317eedc97d0cbef23de76a43dd6edb563bdb6e9407645b950a7a2d910160405180910390a350505050505050565b60a36020525f908152604090208054600182015460028301805492939192611a659061571e565b80601f0160208091040260200160405190810160405280929190818152602001828054611a919061571e565b8015611adc5780601f10611ab357610100808354040283529160200191611adc565b820191905f5260205f20905b815481529060010190602001808311611abf57829003601f168201915b5050505050905083565b611aee614044565b5f81118015611aff57506099548114155b611b65576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f696e76616c6964206e65772070726f6f662077696e646f7700000000000000006044820152606401610aaf565b609980549082905560408051828152602081018490527f1e3a2094feb4b696dd3d7caea38ad2f41dbdcac3fa3943c7a693aff8a64b0a619101610fcc565b60a2602052805f5260405f205f91509050805f015490806001015490806002015490806003015490806004015490806005015490806006015490806007018054611bec9061571e565b80601f0160208091040260200160405190810160405280929190818152602001828054611c189061571e565b8015611c635780601f10611c3a57610100808354040283529160200191611c63565b820191905f5260205f20905b815481529060010190602001808311611c4657829003601f168201915b5050505050905088565b611c75614044565b73ffffffffffffffffffffffffffffffffffffffff81165f908152609f602052604090205460ff16611d03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f6163636f756e74206973206e6f742061206368616c6c656e67657200000000006044820152606401610aaf565b73ffffffffffffffffffffffffffffffffffffffff81165f818152609f6020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055519182527f7feb653c7b1f0d23daeed494225b3f28851cdc8973fcc653866d9b6e205fc0099101610b35565b611d84614044565b611d8d5f6147da565b565b5f54610100900460ff1615808015611dad57505f54600160ff909116105b80611dc65750303b158015611dc657505f5460ff166001145b611e52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610aaf565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015611eae575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b73ffffffffffffffffffffffffffffffffffffffff86161580611ee5575073ffffffffffffffffffffffffffffffffffffffff8516155b15611f1c576040517fecc6fdf000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8716611f99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f696e76616c6964206c31207374616b696e6720636f6e747261637400000000006044820152606401610aaf565b611fa1614850565b611fa96148ee565b6097805473ffffffffffffffffffffffffffffffffffffffff808a167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255609b8054898416908316179055609c80549288169290911682179055609a859055609884905560998390556040515f907f728af3d16a5760405e27a082c98ab272e9f0a1d02f0085d41532a26093aedd96908290a3604080515f8152602081018690527f6d0f49971e462a2f78a25906f145cb29cd5e7bd01ebf681ac8f58cb814e5877a910160405180910390a1604080515f8152602081018590527fa577f4223f91f74e2dad65bbb8c30807587ae95d0d34288057bb3ec0d398a437910160405180910390a1604080515f8152602081018490527f1e3a2094feb4b696dd3d7caea38ad2f41dbdcac3fa3943c7a693aff8a64b0a61910160405180910390a1801561214f575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60975473ffffffffffffffffffffffffffffffffffffffff16636f1e8533336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa1580156121de573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061220291906158f8565b612268576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f6f6e6c79207374616b657220616c6c6f776564000000000000000000000000006044820152606401610aaf565b60a954156122d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6e656564207265766572740000000000000000000000000000000000000000006044820152606401610aaf565b6122da6140e0565b6122e76020830183615913565b60ff1615612351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f696e76616c69642076657273696f6e00000000000000000000000000000000006044820152606401610aaf565b5f61235f6040840184615933565b915050806123c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f626174636820697320656d7074790000000000000000000000000000000000006044820152606401610aaf565b6080830135612434576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f70726576696f757320737461746520726f6f74206973207a65726f00000000006044820152606401610aaf565b60a083013561249f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6e657720737461746520726f6f74206973207a65726f000000000000000000006044820152606401610aaf565b5f806124b66124b16020870187615997565b6140c5565b915091505f6124c9836001015160c01c90565b5f81815260a160205260409020549091508214612542576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f696e636f727265637420706172656e74206261746368206861736800000000006044820152606401610aaf565b5f60a1816125518460016156f8565b81526020019081526020015f205f0154146125c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f626174636820616c726561647920636f6d6d69747465640000000000000000006044820152606401610aaf565b609e548114612633576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e636f727265637420626174636820696e64657800000000000000000000006044820152606401610aaf565b5f81815260a260205260409020600301546080870135146126b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f696e636f72726563742070726576696f757320737461746520726f6f740000006044820152606401610aaf565b5f6126bf846011015160c01c90565b604080516020880281019091529091505f805b87811015612780575f612767846126ec60408e018e615933565b858181106126fc576126fc6159f8565b905060200281019061270e9190615997565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505085888f80606001906127629190615997565b61498c565b94850194602094909401939290920191506001016126d2565b5061278e60608a018a615997565b905061010060ff83010460200214612802576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f77726f6e67206269746d6170206c656e677468000000000000000000000000006044820152606401610aaf565b6020878102808403206040519750600195909501949061283290889061282a908d018d615913565b60ff16614b9f565b60c085811b600189015282811b600989015284901b601188015260198701819052605987018690526128708761286b60608d018d615997565b614ba6565b5f80491561287f575f496128a1565b7f010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c4440145b6039890181905290506040518060a001604052806128da8a8e80606001906128c99190615997565b6128d5915060796156f8565b902090565b81526020908101906128ee908e018e615913565b60ff1681526020014281526020016098544261290a91906156f8565b815260200161298461291f60408f018f615933565b61292a60018f61570b565b818110612939576129396159f8565b905060200281019061294b9190615997565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250614bb292505050565b81525060a15f8881526020019081526020015f205f820151815f0155602082015181600101556040820151816002015560608201518160030155608082015181600401559050506040518061010001604052808281526020018381526020018c6080013581526020018c60a0013581526020018c60c0013581526020018481526020018681526020018c8060600190612a1d9190615997565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525093909452505088815260a2602090815260409182902084518155908401516001820155908301516002820155606083015160038201556080830151600482015560a0830151600582015560c0830151600682015560e08301519091506007820190612ab790826157e0565b50506040805160018082528183019092525f9250906020808301908036833701905050905033815f81518110612aef57612aef6159f8565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506040518060600160405280612b3b5f90565b81526020018c8060200190612b509190615997565b604051612b5e929190615a25565b6040518091039020815260200182604051602001612b7c9190615a84565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815291525f89815260a360209081529082902083518155908301516001820155908201516002820190612bdb90826157e0565b505050609e8790555f87905260a360205260975473ffffffffffffffffffffffffffffffffffffffff1663c0af545b612c148d80615997565b810190612c219190615b7d565b612c3a8e8060200190612c349190615997565b5f614bff565b60a35f8c81526020019081526020015f205f01548f8060400190612c5e9190615997565b6040518663ffffffff1660e01b8152600401612c7e959493929190615bfe565b602060405180830381865afa158015612c99573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cbd91906158f8565b612d49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f746865207369676e617475726520766572696669636174696f6e206661696c6560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152608401610aaf565b5f87815260a16020526040808220549051909189917f2c32d4ae151744d0bf0b9464a3e897a1d17ed2f1af71f7c9a75f12ce0d28238f9190a3505050505050505050505050565b335f908152609f602052604090205460ff16612e08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f63616c6c6572206368616c6c656e67657220616c6c6f776564000000000000006044820152606401610aaf565b60a95415612e72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6e656564207265766572740000000000000000000000000000000000000000006044820152606401610aaf565b612e7a6140e0565b60a75460ff1615612ee7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f616c726561647920696e206368616c6c656e67650000000000000000000000006044820152606401610aaf565b8067ffffffffffffffff16609d5410612f5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f626174636820616c72656164792066696e616c697a65640000000000000000006044820152606401610aaf565b67ffffffffffffffff81165f90815260a160205260408120549003612fdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6261746368206e6f7420657869737400000000000000000000000000000000006044820152606401610aaf565b67ffffffffffffffff81165f90815260a5602052604090205468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff161561307f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f626174636820616c7265616479206368616c6c656e67656400000000000000006044820152606401610aaf565b67ffffffffffffffff81165f90815260a160205260409020600301544210613129576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f63616e6e6f74206368616c6c656e6765206261746368206f757473696465207460448201527f6865206368616c6c656e67652077696e646f77000000000000000000000000006064820152608401610aaf565b60975f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634d64903a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613193573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131b79190615c49565b341015613220576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f696e73756666696369656e742076616c756500000000000000000000000000006044820152606401610aaf565b67ffffffffffffffff81811660a88190556040805160c0810182528281523360208083018281523484860190815242606086019081525f6080870181815260a0880182815299825260a59095529690962094518554925173ffffffffffffffffffffffffffffffffffffffff1668010000000000000000027fffffffff00000000000000000000000000000000000000000000000000000000909316981697909717178355945160018301559151600282015592516003909301805492511515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff941515949094167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009093169290921792909217905573ffffffffffffffffffffffffffffffffffffffff168167ffffffffffffffff167f3a6ea19df25b49e7624e313ce7c1ab23984238e93727260db56a81735b1b99763460405161338c91815260200190565b60405180910390a35f609d5460016133a491906156f8565b90505b609e5481116133fc578167ffffffffffffffff1681146133ea576099545f82815260a16020526040812060030180549091906133e49084906156f8565b90915550505b806133f481615c60565b9150506133a7565b505060a780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b613433614044565b73ffffffffffffffffffffffffffffffffffffffff8116158015906134735750609c5473ffffffffffffffffffffffffffffffffffffffff828116911614155b6134d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c6964206e65772076657269666965720000000000000000000000006044820152606401610aaf565b609c805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f728af3d16a5760405e27a082c98ab272e9f0a1d02f0085d41532a26093aedd96905f90a35050565b613557614044565b801561366257613565614c53565b60a75460ff168015613590575060a8545f90815260a56020526040902060030154610100900460ff16155b156135f15760a8545f90815260a5602090815260408083206001810154905468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff16845260a690925282208054919290916135eb9084906156f8565b90915550505b60a8545f90815260a56020526040812080547fffffffff0000000000000000000000000000000000000000000000000000000016815560018101829055600281019190915560030180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016905550565b61366a614cd8565b50565b335f90815260a66020526040812054908190036136e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f696e76616c69642062617463684368616c6c656e6765526577617264000000006044820152606401610aaf565b335f90815260a660205260408120556136ff8282614d2f565b5050565b5f81815260a5602052604081205468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff16158015906110035750505f90815260a56020526040902060030154610100900460ff161590565b60a954156137c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6e656564207265766572740000000000000000000000000000000000000000006044820152606401610aaf565b6137cc6140e0565b6137d581610fd8565b61383b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6261746368206e6f7420657869737400000000000000000000000000000000006044820152606401610aaf565b61384481613703565b156138ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f626174636820696e206368616c6c656e676500000000000000000000000000006044820152606401610aaf565b5f81815260a5602052604090206003015460ff1615613926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f62617463682073686f756c6420626520726576657274000000000000000000006044820152606401610aaf565b5f81815260a160205260409020600301544210156139a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f626174636820696e206368616c6c656e67652077696e646f77000000000000006044820152606401610aaf565b5f81815260a260205260408120600201549060a0906139c060018561570b565b81526020019081526020015f205414613a35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f696e636f72726563742070726576696f757320737461746520726f6f740000006044820152606401610aaf565b5f81815260a0602052604090205415613aaa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f626174636820616c7265616479207665726966696564000000000000000000006044820152606401610aaf565b80609d5460010114613b18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e636f727265637420626174636820696e64657800000000000000000000006044820152606401610aaf565b609d8190555f81815260a2602081815260408084206004810154855260a4835281852080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055858552600381015460a08452919094205552600501548015613d2057609b545f83815260a260205260408120600701805473ffffffffffffffffffffffffffffffffffffffff90931692613bb79061571e565b80601f0160208091040260200160405190810160405280929190818152602001828054613be39061571e565b8015613c2e5780601f10613c0557610100808354040283529160200191613c2e565b820191905f5260205f20905b815481529060010190602001808311613c1157829003601f168201915b5050505f87815260a260209081526040822060060154949550850193879003925090505b85811015613d1a57610100818703811115613c6c57508086035b6101008204602081028501516040517f55f613ce00000000000000000000000000000000000000000000000000000000815260048101869052602481018490526044810182905290919073ffffffffffffffffffffffffffffffffffffffff8916906355f613ce906064015f604051808303815f87803b158015613cee575f80fd5b505af1158015613d00573d5f803e3d5ffd5b505050506101008501945050505061010081019050613c52565b50505050505b60a15f613d2e60018561570b565b815260208101919091526040015f90812081815560018082018390556002820183905560038201839055600490910182905560a29190613d6e908561570b565b815260208101919091526040015f90812081815560018101829055600281018290556003810182905560048101829055600581018290556006810182905590613dba600783018261531d565b5060a390505f613dcb60018561570b565b815260208101919091526040015f9081208181556001810182905590613df4600283018261531d565b5060a590505f613e0560018561570b565b815260208082019290925260409081015f90812080547fffffffff000000000000000000000000000000000000000000000000000000001681556001810182905560028101829055600390810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016905585825260a184528282205460a2855291839020908101546004909101548351918252938101939093529184917f26ba82f907317eedc97d0cbef23de76a43dd6edb563bdb6e9407645b950a7a2d910160405180910390a35050565b613edb614044565b5f81118015613eec57506098548114155b613f52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f696e76616c6964206e65772066696e616c697a6520706572696f6400000000006044820152606401610aaf565b609880549082905560408051828152602081018490527fa577f4223f91f74e2dad65bbb8c30807587ae95d0d34288057bb3ec0d398a4379101610fcc565b613f98614044565b73ffffffffffffffffffffffffffffffffffffffff811661403b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610aaf565b61366a816147da565b60335473ffffffffffffffffffffffffffffffffffffffff163314611d8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aaf565b5f805f6140d28585614e00565b812090969095509350505050565b60655460ff1615611d8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610aaf565b67ffffffffffffffff831660a98190555f90815260a56020908152604082205460975485516801000000000000000090920473ffffffffffffffffffffffffffffffffffffffff9081169493911691638b8c24c1916141b29188018101908801615c97565b6040518263ffffffff1660e01b81526004016141ce9190615a84565b6020604051808303815f875af11580156141ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061420e9190615c49565b67ffffffffffffffff86165f90815260a560205260409020600101549091506142389082906156f8565b67ffffffffffffffff86165f90815260a5602090815260408083205468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff16835260a69091528120805490919061428f9084906156f8565b90915550506040516142a2908490615d2c565b6040519081900381209073ffffffffffffffffffffffffffffffffffffffff84169067ffffffffffffffff8816907f1e66d5dca70bf28588ef2f5cb3c299e65e2e7bdef2767823d3ae47a9caff95c6905f90a45050505050565b82614363576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f496e76616c6964206167677265676174696f6e2070726f6f66000000000000006044820152606401610aaf565b60a081146143cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496e76616c6964204b5a4720646174612070726f6f66000000000000000000006044820152606401610aaf565b67ffffffffffffffff85165f90815260a2602090815260408083205490518392600a926144009290918891889101615d47565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261443891615d2c565b5f60405180830381855afa9150503d805f8114614470576040519150601f19603f3d011682016040523d82523d5f602084013e614475565b606091505b509150915081614507576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f6661696c656420746f2063616c6c20706f696e74206576616c756174696f6e2060448201527f707265636f6d70696c65000000000000000000000000000000000000000000006064820152608401610aaf565b5f8180602001905181019061451c9190615d60565b9150507f73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff0000000181146145a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f707265636f6d70696c6520756e6578706563746564206f7574707574000000006044820152606401610aaf565b50505067ffffffffffffffff85165f90815260a260205260408082206002810154600382015460048301546001909301547f0000000000000000000000000000000000000000000000000000000000000000949293919261460b9087898b615d82565b67ffffffffffffffff8d165f90815260a2602090815260409182902054915161463c99989796959493929101615da9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120609c5467ffffffffffffffff8b165f90815260a190935292909120600101547f2c09a84800000000000000000000000000000000000000000000000000000000845290935073ffffffffffffffffffffffffffffffffffffffff90911691632c09a848916146ea918a908a908a908890600401615e05565b5f6040518083038186803b158015614700575f80fd5b505afa158015614712573d5f803e3d5ffd5b50505050505050505050565b67ffffffffffffffff83165f90815260a5602090815260408083206001015473ffffffffffffffffffffffffffffffffffffffff8616845260a6909252822080549192839261476e9084906156f8565b9091555050604051614781908390615d2c565b6040519081900381209073ffffffffffffffffffffffffffffffffffffffff85169067ffffffffffffffff8716907f1e66d5dca70bf28588ef2f5cb3c299e65e2e7bdef2767823d3ae47a9caff95c6905f90a450505050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff166148e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610aaf565b611d8d614f0b565b5f54610100900460ff16614984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610aaf565b611d8d614fcb565b60405185515f916020880191819060218a019085906149ac90869061506a565b90505f805b82811015614a1b57603c8102870160018101518652602101517fffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000166020860152603a850194505f614a06856038015160f01c90565b603c95909501949290920191506001016149b1565b506020028301604052600185019150825b8115614b08575f614a4184603a015160f01c90565b9050614a5185828e8e8e8e6150ff565b945080614a62856038015160f01c90565b1015614aca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6e756d20747873206c657373207468616e206e756d204c31206d7367730000006044820152606401610aaf565b9a8b019a998a01999690960195603c92909201917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90910190614a2c565b609a546020614b17838761570b565b614b219190615e40565b1115614b89576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f746f6f206d616e792074787320696e206f6e65206368756e6b000000000000006044820152606401610aaf565b50505081900390208852505b9695505050505050565b8082535050565b80826079850137505050565b5f805f6020840190506001810191505f614bcd82865161506a565b90505f5b614bdc60018361570b565b811015614bf257603c9390930192600101614bd1565b505f614b95845160c01c90565b60605f80808080614c12888a018a615e78565b9550955095509550955050818710614c30579450614c4c9350505050565b838710614c44578295505050505050614c4c565b509293505050505b9392505050565b614c5b6140e0565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258614cae3390565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b614ce06152b1565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33614cae565b80156136ff575f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114614d8b576040519150601f19603f3d011682016040523d82523d5f602084013e614d90565b606091505b5050905080614dfb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f526f6c6c75703a20455448207472616e73666572206661696c656400000000006044820152606401610aaf565b505050565b5f816079811015614e6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f626174636820686561646572206c656e67746820746f6f20736d616c6c0000006044820152606401610aaf565b6040519150808483378082016040525f614e8b836009015160c01c90565b905061010060ff8201046020026079018214614f03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f77726f6e67206269746d6170206c656e677468000000000000000000000000006044820152606401610aaf565b509250929050565b5f54610100900460ff16614fa1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610aaf565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b5f54610100900460ff16615061576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610aaf565b611d8d336147da565b5f615076835160f81c90565b9050805f036150b1576040517f7c62f08c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6150bc603c82615f15565b6150c79060016156f8565b8214611003576040517fb8f4bbc000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f855f0361510e575085614b95565b609b5473ffffffffffffffffffffffffffffffffffffffff165f80805b8981101561520e5760ff89169150600889901c811580615149575082155b15615158578060200288013593505b600184841c165f036151fd576040517fae453cd5000000000000000000000000000000000000000000000000000000008152600481018a90525f9073ffffffffffffffffffffffffffffffffffffffff87169063ae453cd590602401602060405180830381865afa1580156151cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906151f39190615c49565b8d52506020909b019a5b50600198890198978801970161512b565b505060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff88011681811c600116156152a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f63616e6e6f7420736b6970206c617374204c31206d65737361676500000000006044820152606401610aaf565b509798975050505050505050565b60655460ff16611d8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610aaf565b5080546153299061571e565b5f825580601f10615338575050565b601f0160209004905f5260205f209081019061366a91905b80821115615363575f8155600101615350565b5090565b5f60208284031215615377575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461366a575f80fd5b5f602082840312156153af575f80fd5b8135614c4c8161537e565b5f8083601f8401126153ca575f80fd5b50813567ffffffffffffffff8111156153e1575f80fd5b6020830191508360208285010111156153f8575f80fd5b9250929050565b5f805f60408486031215615411575f80fd5b833567ffffffffffffffff811115615427575f80fd5b615433868287016153ba565b909790965060209590950135949350505050565b803567ffffffffffffffff8116811461545e575f80fd5b919050565b5f805f805f60608688031215615477575f80fd5b61548086615447565b9450602086013567ffffffffffffffff8082111561549c575f80fd5b6154a889838a016153ba565b909650945060408801359150808211156154c0575f80fd5b506154cd888289016153ba565b969995985093965092949392505050565b5f5b838110156154f85781810151838201526020016154e0565b50505f910152565b5f81518084526155178160208601602086016154de565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b838152826020820152606060408201525f6155676060830184615500565b95945050505050565b5f6101008a83528960208401528860408401528760608401528660808401528560a08401528460c08401528060e08401526155ad81840185615500565b9b9a5050505050505050505050565b5f805f805f8060c087890312156155d1575f80fd5b86356155dc8161537e565b955060208701356155ec8161537e565b945060408701356155fc8161537e565b959894975094956060810135955060808101359460a0909101359350915050565b5f806040838503121561562e575f80fd5b823567ffffffffffffffff80821115615645575f80fd5b9084019060e08287031215615658575f80fd5b9092506020840135908082111561566d575f80fd5b5083016060818603121561567f575f80fd5b809150509250929050565b5f6020828403121561569a575f80fd5b614c4c82615447565b801515811461366a575f80fd5b5f602082840312156156c0575f80fd5b8135614c4c816156a3565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115611003576110036156cb565b81810381811115611003576110036156cb565b600181811c9082168061573257607f821691505b602082108103615769577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b601f821115614dfb57805f5260205f20601f840160051c810160208510156157c15750805b601f840160051c820191505b818110156112e6575f81556001016157cd565b815167ffffffffffffffff8111156157fa576157fa61576f565b61580e81615808845461571e565b8461579c565b602080601f831160018114615860575f841561582a5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610f0b565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156158ac5788860151825594840194600190910190840161588d565b50858210156158e857878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b5f60208284031215615908575f80fd5b8151614c4c816156a3565b5f60208284031215615923575f80fd5b813560ff81168114614c4c575f80fd5b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112615966575f80fd5b83018035915067ffffffffffffffff821115615980575f80fd5b6020019150600581901b36038213156153f8575f80fd5b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126159ca575f80fd5b83018035915067ffffffffffffffff8211156159e4575f80fd5b6020019150368190038213156153f8575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b818382375f9101908152919050565b5f815180845260208085019450602084015f5b83811015615a7957815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101615a47565b509495945050505050565b602081525f614c4c6020830184615a34565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715615add57615add61576f565b604052919050565b5f67ffffffffffffffff821115615afe57615afe61576f565b5060051b60200190565b5f82601f830112615b17575f80fd5b81356020615b2c615b2783615ae5565b615a96565b8083825260208201915060208460051b870101935086841115615b4d575f80fd5b602086015b84811015615b72578035615b658161537e565b8352918301918301615b52565b509695505050505050565b5f60208284031215615b8d575f80fd5b813567ffffffffffffffff811115615ba3575f80fd5b615baf84828501615b08565b949350505050565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b608081525f615c106080830188615a34565b8281036020840152615c228188615a34565b90508560408401528281036060840152615c3d818587615bb7565b98975050505050505050565b5f60208284031215615c59575f80fd5b5051919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615c9057615c906156cb565b5060010190565b5f6020808385031215615ca8575f80fd5b825167ffffffffffffffff811115615cbe575f80fd5b8301601f81018513615cce575f80fd5b8051615cdc615b2782615ae5565b81815260059190911b82018301908381019087831115615cfa575f80fd5b928401925b82841015615d21578351615d128161537e565b82529284019290840190615cff565b979650505050505050565b5f8251615d3d8184602087016154de565b9190910192915050565b838152818360208301375f910160200190815292915050565b5f8060408385031215615d71575f80fd5b505080516020909101519092909150565b5f8085851115615d90575f80fd5b83861115615d9c575f80fd5b5050820193919092039150565b7fffffffffffffffff0000000000000000000000000000000000000000000000008960c01b16815287600882015286602882015285604882015284606882015282846088830137608892019182015260a8019695505050505050565b85815267ffffffffffffffff85166020820152608060408201525f615e2e608083018587615bb7565b90508260608301529695505050505050565b5f82615e73577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f805f805f8060c08789031215615e8d575f80fd5b86359550602087013567ffffffffffffffff80821115615eab575f80fd5b615eb78a838b01615b08565b9650604089013595506060890135915080821115615ed3575f80fd5b615edf8a838b01615b08565b94506080890135935060a0890135915080821115615efb575f80fd5b50615f0889828a01615b08565b9150509295509295509295565b8082028115828204841417611003576110036156cb56fea164736f6c6343000818000a" +var RollupDeployedBin = "0x6080604052600436106102e5575f3560e01c8063715018a611610186578063abc8d68d116100dc578063ddd8a3dc11610087578063e3fff1dd11610062578063e3fff1dd146109c9578063ef6602ba146109e8578063f2fde38b146109fd575f80fd5b8063ddd8a3dc1461095f578063de8b30351461098b578063e33491a7146109aa575f80fd5b8063caf62533116100b7578063caf62533146108bb578063ce5db8d61461092b578063d279c19114610940575f80fd5b8063abc8d68d1461085c578063b31a77d314610887578063bedb86fb1461089c575f80fd5b80638da5cb5b1161013c57806397fc007c1161011757806397fc007c146107fa578063a415d8dc14610819578063a479265d14610847575f80fd5b80638da5cb5b146106d55780638f1d3776146106ff578063910129d4146107c9575f80fd5b80637c41b6ac1161016c5780637c41b6ac1461069657806388b1ea09146106a95780638d644bb7146106c2575f80fd5b8063715018a614610663578063728cdbca14610677575f80fd5b80632571098d1161023b578063404fa7b1116101f15780635ef7a94a116101cc5780635ef7a94a146105c55780635f77cf1d146105f85780636c578c1d14610644575f80fd5b8063404fa7b11461056157806357e0af6c1461058f5780635c975abb146105ae575f80fd5b806336622a301161022157806336622a30146104f75780633b70c18a146105165780633fdeecb214610542575f80fd5b80632571098d1461047b5780632b7ac3f3146104a6575f80fd5b8063121dcd501161029b5780631e228302116102765780631e2283021461041257806321e2f9e0146104315780632362f03e14610450575f80fd5b8063121dcd50146103b857806318463fb0146103cd57806318af3b2b146103e2575f80fd5b80630ceb6780116102cb5780630ceb67801461035657806310d4458314610377578063116a1f4214610396575f80fd5b806304d77215146102f0578063059def6114610333575f80fd5b366102ec57005b5f80fd5b3480156102fb575f80fd5b5061031e61030a366004615390565b60a46020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561033e575f80fd5b50610348609d5481565b60405190815260200161032a565b348015610361575f80fd5b506103756103703660046153c8565b610a1c565b005b348015610382575f80fd5b50610375610391366004615428565b610b40565b3480156103a1575f80fd5b5061031e6103b0366004615390565b609d54101590565b3480156103c3575f80fd5b50610348609e5481565b3480156103d8575f80fd5b5061034860a85481565b3480156103ed575f80fd5b5061031e6103fc366004615390565b5f90815260a16020526040902060030154421090565b34801561041d575f80fd5b5061037561042c366004615390565b610f3c565b34801561043c575f80fd5b5061031e61044b366004615390565b611001565b34801561045b575f80fd5b5061034861046a366004615390565b5f90815260a1602052604090205490565b348015610486575f80fd5b50610348610495366004615390565b60a06020525f908152604090205481565b3480156104b1575f80fd5b50609c546104d29073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161032a565b348015610502575f80fd5b5061037561051136600461548c565b611032565b348015610521575f80fd5b50609b546104d29073ffffffffffffffffffffffffffffffffffffffff1681565b34801561054d575f80fd5b5061037561055c366004615428565b611316565b34801561056c575f80fd5b5061058061057b366004615390565b611a67565b60405161032a93929190615572565b34801561059a575f80fd5b506103756105a9366004615390565b611b0f565b3480156105b9575f80fd5b5060655460ff1661031e565b3480156105d0575f80fd5b506105e46105df366004615390565b611bcc565b60405161032a989796959493929190615599565b348015610603575f80fd5b5061062b7f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff909116815260200161032a565b34801561064f575f80fd5b5061037561065e3660046153c8565b611c96565b34801561066e575f80fd5b50610375611da5565b348015610682575f80fd5b506103756106913660046155e5565b611db8565b6103756106a4366004615646565b612181565b3480156106b4575f80fd5b5060a75461031e9060ff1681565b6103756106d03660046156b3565b612db9565b3480156106e0575f80fd5b5060335473ffffffffffffffffffffffffffffffffffffffff166104d2565b34801561070a575f80fd5b50610778610719366004615390565b60a56020525f9081526040902080546001820154600283015460039093015467ffffffffffffffff8316936801000000000000000090930473ffffffffffffffffffffffffffffffffffffffff16929060ff8082169161010090041686565b6040805167ffffffffffffffff909716875273ffffffffffffffffffffffffffffffffffffffff909516602087015293850192909252606084015215156080830152151560a082015260c00161032a565b3480156107d4575f80fd5b5061031e6107e3366004615390565b5f90815260a5602052604090206003015460ff1690565b348015610805575f80fd5b506103756108143660046153c8565b613454565b348015610824575f80fd5b5061031e6108333660046153c8565b609f6020525f908152604090205460ff1681565b348015610852575f80fd5b5061034860995481565b348015610867575f80fd5b506103486108763660046153c8565b60a66020525f908152604090205481565b348015610892575f80fd5b5061034860a95481565b3480156108a7575f80fd5b506103756108b63660046156d9565b613578565b3480156108c6575f80fd5b506109036108d5366004615390565b60a16020525f9081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a00161032a565b348015610936575f80fd5b5061034860985481565b34801561094b575f80fd5b5061037561095a3660046153c8565b613696565b34801561096a575f80fd5b506097546104d29073ffffffffffffffffffffffffffffffffffffffff1681565b348015610996575f80fd5b5061031e6109a5366004615390565b61372c565b3480156109b5575f80fd5b506103756109c4366004615390565b613783565b3480156109d4575f80fd5b506103756109e3366004615390565b613efc565b3480156109f3575f80fd5b50610348609a5481565b348015610a08575f80fd5b50610375610a173660046153c8565b613fb9565b610a2461406d565b73ffffffffffffffffffffffffffffffffffffffff81165f908152609f602052604090205460ff1615610ab8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f6163636f756e7420697320616c72656164792061206368616c6c656e6765720060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81165f818152609f602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915591519182527f7feb653c7b1f0d23daeed494225b3f28851cdc8973fcc653866d9b6e205fc00991015b60405180910390a250565b610b4861406d565b5f8111610bb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f636f756e74206d757374206265206e6f6e7a65726f00000000000000000000006044820152606401610aaf565b5f80610bbd85856140ee565b915091505f610bd0836001015160c01c90565b5f81815260a160205260409020549091508214610c49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e636f727265637420626174636820686173680000000000000000000000006044820152606401610aaf565b5f60a181610c578785615721565b81526020019081526020015f205f015414610cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f726576657274696e67206d7573742073746172742066726f6d2074686520656e60448201527f64696e67000000000000000000000000000000000000000000000000000000006064820152608401610aaf565b609d548111610d84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f63616e206f6e6c792072657665727420756e46696e616c697a6564206261746360448201527f68000000000000000000000000000000000000000000000000000000000000006064820152608401610aaf565b610d8f600182615734565b609e555b8315610f3457604051829082907ecae2739091badfd91c373f0a16cede691e0cd25bb80cff77dd5caeb4710146905f90a35f81815260a16020908152604080832083905560a5909152902060030154610100900460ff16610e6f575f81815260a5602090815260408083206001810154905468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff16845260a69092528220805491929091610e41908490615721565b909155505060a780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b5f81815260a56020526040812080547fffffffff0000000000000000000000000000000000000000000000000000000016815560018101829055600281019190915560030180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016905560a95415801590610eec575060a95481145b15610ef6575f60a9555b6001015f81815260a160205260409020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90940193915081610d93575b505050505050565b610f4461406d565b5f81118015610f555750609a548114155b610fbb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f696e76616c6964206e6577206d61784e756d5478496e4368756e6b00000000006044820152606401610aaf565b609a80549082905560408051828152602081018490527f6d0f49971e462a2f78a25906f145cb29cd5e7bd01ebf681ac8f58cb814e5877a91015b60405180910390a15050565b5f81815260a160205260408120600201541580159061102c57505f82815260a1602052604090205415155b92915050565b60a9541561109c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6e656564207265766572740000000000000000000000000000000000000000006044820152606401610aaf565b6110a4614109565b6110b78567ffffffffffffffff1661372c565b61111d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f626174636820696e206368616c6c656e676500000000000000000000000000006044820152606401610aaf565b67ffffffffffffffff85165f90815260a5602052604090206003810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010017905560a780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055609954600290910154429161119f91615721565b116112c25767ffffffffffffffff85165f90815260a56020908152604080832060030180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560a3909152902060020180546112bd91879161120690615747565b80601f016020809104026020016040519081016040528092919081815260200182805461123290615747565b801561127d5780601f106112545761010080835404028352916020019161127d565b820191905f5260205f20905b81548152906001019060200180831161126057829003601f168201915b50505050506040518060400160405280600781526020017f54696d656f757400000000000000000000000000000000000000000000000000815250614176565b61130f565b6112cf8585858585614325565b61130f85336040518060400160405280600d81526020017f50726f6f66207375636365737300000000000000000000000000000000000000815250614747565b5050505050565b61131e61406d565b80611385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f7a65726f20737461746520726f6f7400000000000000000000000000000000006044820152606401610aaf565b5f805260a06020527fb84a74ec6ef4d0e83b6006dfaa014ab4026f9f3b97d186e604d29998a4e808ea5415611416576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f67656e6573697320626174636820696d706f72746564000000000000000000006044820152606401610aaf565b5f8061142285856140ee565b915091505f611432836019015190565b90505f611440845160f81c90565b90505f611451856011015160c01c90565b600986015160c01c600187015160c01c875160f81c010101905080156114d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6e6f7420616c6c206669656c647320617265207a65726f0000000000000000006044820152606401610aaf565b505f6114e0856019015190565b03611547576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f7a65726f206461746120686173680000000000000000000000000000000000006044820152606401610aaf565b5f611553856059015190565b146115ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f6e6f6e7a65726f20706172656e742062617463682068617368000000000000006044820152606401610aaf565b7f010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c4440146115e6856039015190565b1461164d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f696e76616c69642076657273696f6e65642068617368000000000000000000006044820152606401610aaf565b6040805160a0808201835285825260208083018581524284860181815260608087019283525f608080890182815282805260a1885298517f32ae1b88a7d4f92d7e214b63c8ea04cd13e2faaa60c50f499f2254336d98f8825594517f32ae1b88a7d4f92d7e214b63c8ea04cd13e2faaa60c50f499f2254336d98f8835591517f32ae1b88a7d4f92d7e214b63c8ea04cd13e2faaa60c50f499f2254336d98f8845591517f32ae1b88a7d4f92d7e214b63c8ea04cd13e2faaa60c50f499f2254336d98f8855594517f32ae1b88a7d4f92d7e214b63c8ea04cd13e2faaa60c50f499f2254336d98f886558551610100810187527f010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c44401481528084018981528188018781529282018d815293820187815295820187815260c083018881528951808b01909a5260028a527f30780000000000000000000000000000000000000000000000000000000000008a88015260e08401998a5297805260a290955281517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342a90815590517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342b5591517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342c5591517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342d5592517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342e5590517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b342f5591517f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b34305591519091907f8fa6f0ecb9543d3381552e96aa43533c7f086066e38816919ea0cfae371b3431906118f69082615809565b5050604080516060810182525f808252602080830182815284518086018652600281527f30780000000000000000000000000000000000000000000000000000000000008184015294840194855291805260a3905281517f69b4e8f94ad9e612080e13aad01219472d8c2c7ae7aa6cdf175400ddc8c4ed3d90815590517f69b4e8f94ad9e612080e13aad01219472d8c2c7ae7aa6cdf175400ddc8c4ed3e5591519092507f69b4e8f94ad9e612080e13aad01219472d8c2c7ae7aa6cdf175400ddc8c4ed3f906119c69082615809565b50505f80805260a06020527fb84a74ec6ef4d0e83b6006dfaa014ab4026f9f3b97d186e604d29998a4e808ea8790556040518592507f2c32d4ae151744d0bf0b9464a3e897a1d17ed2f1af71f7c9a75f12ce0d28238f908290a3604080518681525f60208201819052859290917f26ba82f907317eedc97d0cbef23de76a43dd6edb563bdb6e9407645b950a7a2d910160405180910390a350505050505050565b60a36020525f908152604090208054600182015460028301805492939192611a8e90615747565b80601f0160208091040260200160405190810160405280929190818152602001828054611aba90615747565b8015611b055780601f10611adc57610100808354040283529160200191611b05565b820191905f5260205f20905b815481529060010190602001808311611ae857829003601f168201915b5050505050905083565b611b1761406d565b5f81118015611b2857506099548114155b611b8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f696e76616c6964206e65772070726f6f662077696e646f7700000000000000006044820152606401610aaf565b609980549082905560408051828152602081018490527f1e3a2094feb4b696dd3d7caea38ad2f41dbdcac3fa3943c7a693aff8a64b0a619101610ff5565b60a2602052805f5260405f205f91509050805f015490806001015490806002015490806003015490806004015490806005015490806006015490806007018054611c1590615747565b80601f0160208091040260200160405190810160405280929190818152602001828054611c4190615747565b8015611c8c5780601f10611c6357610100808354040283529160200191611c8c565b820191905f5260205f20905b815481529060010190602001808311611c6f57829003601f168201915b5050505050905088565b611c9e61406d565b73ffffffffffffffffffffffffffffffffffffffff81165f908152609f602052604090205460ff16611d2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f6163636f756e74206973206e6f742061206368616c6c656e67657200000000006044820152606401610aaf565b73ffffffffffffffffffffffffffffffffffffffff81165f818152609f6020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055519182527f7feb653c7b1f0d23daeed494225b3f28851cdc8973fcc653866d9b6e205fc0099101610b35565b611dad61406d565b611db65f614803565b565b5f54610100900460ff1615808015611dd657505f54600160ff909116105b80611def5750303b158015611def57505f5460ff166001145b611e7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610aaf565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015611ed7575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b73ffffffffffffffffffffffffffffffffffffffff86161580611f0e575073ffffffffffffffffffffffffffffffffffffffff8516155b15611f45576040517fecc6fdf000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8716611fc2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f696e76616c6964206c31207374616b696e6720636f6e747261637400000000006044820152606401610aaf565b611fca614879565b611fd2614917565b6097805473ffffffffffffffffffffffffffffffffffffffff808a167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255609b8054898416908316179055609c80549288169290911682179055609a859055609884905560998390556040515f907f728af3d16a5760405e27a082c98ab272e9f0a1d02f0085d41532a26093aedd96908290a3604080515f8152602081018690527f6d0f49971e462a2f78a25906f145cb29cd5e7bd01ebf681ac8f58cb814e5877a910160405180910390a1604080515f8152602081018590527fa577f4223f91f74e2dad65bbb8c30807587ae95d0d34288057bb3ec0d398a437910160405180910390a1604080515f8152602081018490527f1e3a2094feb4b696dd3d7caea38ad2f41dbdcac3fa3943c7a693aff8a64b0a61910160405180910390a18015612178575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b60975473ffffffffffffffffffffffffffffffffffffffff16636f1e8533336040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa158015612207573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061222b9190615921565b612291576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f6f6e6c79207374616b657220616c6c6f776564000000000000000000000000006044820152606401610aaf565b60a954156122fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6e656564207265766572740000000000000000000000000000000000000000006044820152606401610aaf565b612303614109565b612310602083018361593c565b60ff161561237a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f696e76616c69642076657273696f6e00000000000000000000000000000000006044820152606401610aaf565b5f612388604084018461595c565b915050806123f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f626174636820697320656d7074790000000000000000000000000000000000006044820152606401610aaf565b608083013561245d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f70726576696f757320737461746520726f6f74206973207a65726f00000000006044820152606401610aaf565b60a08301356124c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6e657720737461746520726f6f74206973207a65726f000000000000000000006044820152606401610aaf565b5f806124df6124da60208701876159c0565b6140ee565b915091505f6124f2836001015160c01c90565b5f81815260a16020526040902054909150821461256b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f696e636f727265637420706172656e74206261746368206861736800000000006044820152606401610aaf565b5f60a18161257a846001615721565b81526020019081526020015f205f0154146125f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f626174636820616c726561647920636f6d6d69747465640000000000000000006044820152606401610aaf565b609e54811461265c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e636f727265637420626174636820696e64657800000000000000000000006044820152606401610aaf565b5f81815260a260205260409020600301546080870135146126d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f696e636f72726563742070726576696f757320737461746520726f6f740000006044820152606401610aaf565b5f6126e8846011015160c01c90565b604080516020880281019091529091505f805b878110156127a9575f6127908461271560408e018e61595c565b8581811061272557612725615a21565b905060200281019061273791906159c0565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505085888f806060019061278b91906159c0565b6149b5565b94850194602094909401939290920191506001016126fb565b506127b760608a018a6159c0565b905061010060ff8301046020021461282b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f77726f6e67206269746d6170206c656e677468000000000000000000000000006044820152606401610aaf565b6020878102808403206040519750600195909501949061285b908890612853908d018d61593c565b60ff16614bc8565b60c085811b600189015282811b600989015284901b601188015260198701819052605987018690526128998761289460608d018d6159c0565b614bcf565b5f8049156128a8575f496128ca565b7f010657f37554c781402a22917dee2f75def7ab966d7b770905398eba3c4440145b6039890181905290506040518060a001604052806129038a8e80606001906128f291906159c0565b6128fe91506079615721565b902090565b8152602090810190612917908e018e61593c565b60ff168152602001428152602001609854426129339190615721565b81526020016129ad61294860408f018f61595c565b61295360018f615734565b81811061296257612962615a21565b905060200281019061297491906159c0565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250614bdb92505050565b81525060a15f8881526020019081526020015f205f820151815f0155602082015181600101556040820151816002015560608201518160030155608082015181600401559050506040518061010001604052808281526020018381526020018c6080013581526020018c60a0013581526020018c60c0013581526020018481526020018681526020018c8060600190612a4691906159c0565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525093909452505088815260a2602090815260409182902084518155908401516001820155908301516002820155606083015160038201556080830151600482015560a0830151600582015560c0830151600682015560e08301519091506007820190612ae09082615809565b50506040805160018082528183019092525f9250906020808301908036833701905050905033815f81518110612b1857612b18615a21565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506040518060600160405280612b645f90565b81526020018c8060200190612b7991906159c0565b604051612b87929190615a4e565b6040518091039020815260200182604051602001612ba59190615aad565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291815291525f89815260a360209081529082902083518155908301516001820155908201516002820190612c049082615809565b505050609e8790555f87905260a360205260975473ffffffffffffffffffffffffffffffffffffffff1663c0af545b612c3d8d806159c0565b810190612c4a9190615ba6565b612c638e8060200190612c5d91906159c0565b5f614c28565b60a35f8c81526020019081526020015f205f01548f8060400190612c8791906159c0565b6040518663ffffffff1660e01b8152600401612ca7959493929190615c27565b602060405180830381865afa158015612cc2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ce69190615921565b612d72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f746865207369676e617475726520766572696669636174696f6e206661696c6560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152608401610aaf565b5f87815260a16020526040808220549051909189917f2c32d4ae151744d0bf0b9464a3e897a1d17ed2f1af71f7c9a75f12ce0d28238f9190a3505050505050505050505050565b335f908152609f602052604090205460ff16612e31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f63616c6c6572206368616c6c656e67657220616c6c6f776564000000000000006044820152606401610aaf565b60a95415612e9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6e656564207265766572740000000000000000000000000000000000000000006044820152606401610aaf565b612ea3614109565b60a75460ff1615612f10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f616c726561647920696e206368616c6c656e67650000000000000000000000006044820152606401610aaf565b8067ffffffffffffffff16609d5410612f85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f626174636820616c72656164792066696e616c697a65640000000000000000006044820152606401610aaf565b67ffffffffffffffff81165f90815260a160205260408120549003613006576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6261746368206e6f7420657869737400000000000000000000000000000000006044820152606401610aaf565b67ffffffffffffffff81165f90815260a5602052604090205468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff16156130a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f626174636820616c7265616479206368616c6c656e67656400000000000000006044820152606401610aaf565b67ffffffffffffffff81165f90815260a160205260409020600301544210613152576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603360248201527f63616e6e6f74206368616c6c656e6765206261746368206f757473696465207460448201527f6865206368616c6c656e67652077696e646f77000000000000000000000000006064820152608401610aaf565b60975f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634d64903a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131e09190615c72565b341015613249576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f696e73756666696369656e742076616c756500000000000000000000000000006044820152606401610aaf565b67ffffffffffffffff81811660a88190556040805160c0810182528281523360208083018281523484860190815242606086019081525f6080870181815260a0880182815299825260a59095529690962094518554925173ffffffffffffffffffffffffffffffffffffffff1668010000000000000000027fffffffff00000000000000000000000000000000000000000000000000000000909316981697909717178355945160018301559151600282015592516003909301805492511515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff941515949094167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009093169290921792909217905573ffffffffffffffffffffffffffffffffffffffff168167ffffffffffffffff167f3a6ea19df25b49e7624e313ce7c1ab23984238e93727260db56a81735b1b9976346040516133b591815260200190565b60405180910390a35f609d5460016133cd9190615721565b90505b609e548111613425578167ffffffffffffffff168114613413576099545f82815260a160205260408120600301805490919061340d908490615721565b90915550505b8061341d81615c89565b9150506133d0565b505060a780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b61345c61406d565b73ffffffffffffffffffffffffffffffffffffffff81161580159061349c5750609c5473ffffffffffffffffffffffffffffffffffffffff828116911614155b613502576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c6964206e65772076657269666965720000000000000000000000006044820152606401610aaf565b609c805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f728af3d16a5760405e27a082c98ab272e9f0a1d02f0085d41532a26093aedd96905f90a35050565b61358061406d565b801561368e5761358e614c7c565b60a75460ff161561368b5760a8545f90815260a5602090815260408083206001810154905468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff16845260a690925282208054919290916135ef908490615721565b909155505060a8545f90815260a56020526040812080547fffffffff0000000000000000000000000000000000000000000000000000000016815560018101829055600281019190915560030180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016905560a780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b50565b61368b614d01565b335f90815260a660205260408120549081900361370f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f696e76616c69642062617463684368616c6c656e6765526577617264000000006044820152606401610aaf565b335f90815260a660205260408120556137288282614d58565b5050565b5f81815260a5602052604081205468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff161580159061102c5750505f90815260a56020526040902060030154610100900460ff161590565b60a954156137ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f6e656564207265766572740000000000000000000000000000000000000000006044820152606401610aaf565b6137f5614109565b6137fe81611001565b613864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6261746368206e6f7420657869737400000000000000000000000000000000006044820152606401610aaf565b61386d8161372c565b156138d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f626174636820696e206368616c6c656e676500000000000000000000000000006044820152606401610aaf565b5f81815260a5602052604090206003015460ff161561394f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f62617463682073686f756c6420626520726576657274000000000000000000006044820152606401610aaf565b5f81815260a160205260409020600301544210156139c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f626174636820696e206368616c6c656e67652077696e646f77000000000000006044820152606401610aaf565b5f81815260a260205260408120600201549060a0906139e9600185615734565b81526020019081526020015f205414613a5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f696e636f72726563742070726576696f757320737461746520726f6f740000006044820152606401610aaf565b5f81815260a0602052604090205415613ad3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f626174636820616c7265616479207665726966696564000000000000000000006044820152606401610aaf565b80609d5460010114613b41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e636f727265637420626174636820696e64657800000000000000000000006044820152606401610aaf565b609d8190555f81815260a2602081815260408084206004810154855260a4835281852080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055858552600381015460a08452919094205552600501548015613d4957609b545f83815260a260205260408120600701805473ffffffffffffffffffffffffffffffffffffffff90931692613be090615747565b80601f0160208091040260200160405190810160405280929190818152602001828054613c0c90615747565b8015613c575780601f10613c2e57610100808354040283529160200191613c57565b820191905f5260205f20905b815481529060010190602001808311613c3a57829003601f168201915b5050505f87815260a260209081526040822060060154949550850193879003925090505b85811015613d4357610100818703811115613c9557508086035b6101008204602081028501516040517f55f613ce00000000000000000000000000000000000000000000000000000000815260048101869052602481018490526044810182905290919073ffffffffffffffffffffffffffffffffffffffff8916906355f613ce906064015f604051808303815f87803b158015613d17575f80fd5b505af1158015613d29573d5f803e3d5ffd5b505050506101008501945050505061010081019050613c7b565b50505050505b60a15f613d57600185615734565b815260208101919091526040015f90812081815560018082018390556002820183905560038201839055600490910182905560a29190613d979085615734565b815260208101919091526040015f90812081815560018101829055600281018290556003810182905560048101829055600581018290556006810182905590613de36007830182615346565b5060a390505f613df4600185615734565b815260208101919091526040015f9081208181556001810182905590613e1d6002830182615346565b5060a590505f613e2e600185615734565b815260208082019290925260409081015f90812080547fffffffff000000000000000000000000000000000000000000000000000000001681556001810182905560028101829055600390810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016905585825260a184528282205460a2855291839020908101546004909101548351918252938101939093529184917f26ba82f907317eedc97d0cbef23de76a43dd6edb563bdb6e9407645b950a7a2d910160405180910390a35050565b613f0461406d565b5f81118015613f1557506098548114155b613f7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f696e76616c6964206e65772066696e616c697a6520706572696f6400000000006044820152606401610aaf565b609880549082905560408051828152602081018490527fa577f4223f91f74e2dad65bbb8c30807587ae95d0d34288057bb3ec0d398a4379101610ff5565b613fc161406d565b73ffffffffffffffffffffffffffffffffffffffff8116614064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610aaf565b61368b81614803565b60335473ffffffffffffffffffffffffffffffffffffffff163314611db6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610aaf565b5f805f6140fb8585614e29565b812090969095509350505050565b60655460ff1615611db6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610aaf565b67ffffffffffffffff831660a98190555f90815260a56020908152604082205460975485516801000000000000000090920473ffffffffffffffffffffffffffffffffffffffff9081169493911691638b8c24c1916141db9188018101908801615cc0565b6040518263ffffffff1660e01b81526004016141f79190615aad565b6020604051808303815f875af1158015614213573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906142379190615c72565b67ffffffffffffffff86165f90815260a56020526040902060010154909150614261908290615721565b67ffffffffffffffff86165f90815260a5602090815260408083205468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff16835260a6909152812080549091906142b8908490615721565b90915550506040516142cb908490615d55565b6040519081900381209073ffffffffffffffffffffffffffffffffffffffff84169067ffffffffffffffff8816907f1e66d5dca70bf28588ef2f5cb3c299e65e2e7bdef2767823d3ae47a9caff95c6905f90a45050505050565b8261438c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f496e76616c6964206167677265676174696f6e2070726f6f66000000000000006044820152606401610aaf565b60a081146143f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496e76616c6964204b5a4720646174612070726f6f66000000000000000000006044820152606401610aaf565b67ffffffffffffffff85165f90815260a2602090815260408083205490518392600a926144299290918891889101615d70565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261446191615d55565b5f60405180830381855afa9150503d805f8114614499576040519150601f19603f3d011682016040523d82523d5f602084013e61449e565b606091505b509150915081614530576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f6661696c656420746f2063616c6c20706f696e74206576616c756174696f6e2060448201527f707265636f6d70696c65000000000000000000000000000000000000000000006064820152608401610aaf565b5f818060200190518101906145459190615d89565b9150507f73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff0000000181146145d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f707265636f6d70696c6520756e6578706563746564206f7574707574000000006044820152606401610aaf565b50505067ffffffffffffffff85165f90815260a260205260408082206002810154600382015460048301546001909301547f000000000000000000000000000000000000000000000000000000000000000094929391926146349087898b615dab565b67ffffffffffffffff8d165f90815260a2602090815260409182902054915161466599989796959493929101615dd2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120609c5467ffffffffffffffff8b165f90815260a190935292909120600101547f2c09a84800000000000000000000000000000000000000000000000000000000845290935073ffffffffffffffffffffffffffffffffffffffff90911691632c09a84891614713918a908a908a908890600401615e2e565b5f6040518083038186803b158015614729575f80fd5b505afa15801561473b573d5f803e3d5ffd5b50505050505050505050565b67ffffffffffffffff83165f90815260a5602090815260408083206001015473ffffffffffffffffffffffffffffffffffffffff8616845260a69092528220805491928392614797908490615721565b90915550506040516147aa908390615d55565b6040519081900381209073ffffffffffffffffffffffffffffffffffffffff85169067ffffffffffffffff8716907f1e66d5dca70bf28588ef2f5cb3c299e65e2e7bdef2767823d3ae47a9caff95c6905f90a450505050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff1661490f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610aaf565b611db6614f34565b5f54610100900460ff166149ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610aaf565b611db6614ff4565b60405185515f916020880191819060218a019085906149d5908690615093565b90505f805b82811015614a4457603c8102870160018101518652602101517fffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000166020860152603a850194505f614a2f856038015160f01c90565b603c95909501949290920191506001016149da565b506020028301604052600185019150825b8115614b31575f614a6a84603a015160f01c90565b9050614a7a85828e8e8e8e615128565b945080614a8b856038015160f01c90565b1015614af3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f6e756d20747873206c657373207468616e206e756d204c31206d7367730000006044820152606401610aaf565b9a8b019a998a01999690960195603c92909201917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90910190614a55565b609a546020614b408387615734565b614b4a9190615e69565b1115614bb2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f746f6f206d616e792074787320696e206f6e65206368756e6b000000000000006044820152606401610aaf565b50505081900390208852505b9695505050505050565b8082535050565b80826079850137505050565b5f805f6020840190506001810191505f614bf6828651615093565b90505f5b614c05600183615734565b811015614c1b57603c9390930192600101614bfa565b505f614bbe845160c01c90565b60605f80808080614c3b888a018a615ea1565b9550955095509550955050818710614c59579450614c759350505050565b838710614c6d578295505050505050614c75565b509293505050505b9392505050565b614c84614109565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258614cd73390565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b614d096152da565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33614cd7565b8015613728575f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f8114614db4576040519150601f19603f3d011682016040523d82523d5f602084013e614db9565b606091505b5050905080614e24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f526f6c6c75703a20455448207472616e73666572206661696c656400000000006044820152606401610aaf565b505050565b5f816079811015614e96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f626174636820686561646572206c656e67746820746f6f20736d616c6c0000006044820152606401610aaf565b6040519150808483378082016040525f614eb4836009015160c01c90565b905061010060ff8201046020026079018214614f2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f77726f6e67206269746d6170206c656e677468000000000000000000000000006044820152606401610aaf565b509250929050565b5f54610100900460ff16614fca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610aaf565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b5f54610100900460ff1661508a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610aaf565b611db633614803565b5f61509f835160f81c90565b9050805f036150da576040517f7c62f08c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6150e5603c82615f3e565b6150f0906001615721565b821461102c576040517fb8f4bbc000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f855f03615137575085614bbe565b609b5473ffffffffffffffffffffffffffffffffffffffff165f80805b898110156152375760ff89169150600889901c811580615172575082155b15615181578060200288013593505b600184841c165f03615226576040517fae453cd5000000000000000000000000000000000000000000000000000000008152600481018a90525f9073ffffffffffffffffffffffffffffffffffffffff87169063ae453cd590602401602060405180830381865afa1580156151f8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061521c9190615c72565b8d52506020909b019a5b506001988901989788019701615154565b505060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff88011681811c600116156152cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f63616e6e6f7420736b6970206c617374204c31206d65737361676500000000006044820152606401610aaf565b509798975050505050505050565b60655460ff16611db6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610aaf565b50805461535290615747565b5f825580601f10615361575050565b601f0160209004905f5260205f209081019061368b91905b8082111561538c575f8155600101615379565b5090565b5f602082840312156153a0575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461368b575f80fd5b5f602082840312156153d8575f80fd5b8135614c75816153a7565b5f8083601f8401126153f3575f80fd5b50813567ffffffffffffffff81111561540a575f80fd5b602083019150836020828501011115615421575f80fd5b9250929050565b5f805f6040848603121561543a575f80fd5b833567ffffffffffffffff811115615450575f80fd5b61545c868287016153e3565b909790965060209590950135949350505050565b803567ffffffffffffffff81168114615487575f80fd5b919050565b5f805f805f606086880312156154a0575f80fd5b6154a986615470565b9450602086013567ffffffffffffffff808211156154c5575f80fd5b6154d189838a016153e3565b909650945060408801359150808211156154e9575f80fd5b506154f6888289016153e3565b969995985093965092949392505050565b5f5b83811015615521578181015183820152602001615509565b50505f910152565b5f8151808452615540816020860160208601615507565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b838152826020820152606060408201525f6155906060830184615529565b95945050505050565b5f6101008a83528960208401528860408401528760608401528660808401528560a08401528460c08401528060e08401526155d681840185615529565b9b9a5050505050505050505050565b5f805f805f8060c087890312156155fa575f80fd5b8635615605816153a7565b95506020870135615615816153a7565b94506040870135615625816153a7565b959894975094956060810135955060808101359460a0909101359350915050565b5f8060408385031215615657575f80fd5b823567ffffffffffffffff8082111561566e575f80fd5b9084019060e08287031215615681575f80fd5b90925060208401359080821115615696575f80fd5b508301606081860312156156a8575f80fd5b809150509250929050565b5f602082840312156156c3575f80fd5b614c7582615470565b801515811461368b575f80fd5b5f602082840312156156e9575f80fd5b8135614c75816156cc565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561102c5761102c6156f4565b8181038181111561102c5761102c6156f4565b600181811c9082168061575b57607f821691505b602082108103615792577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b601f821115614e2457805f5260205f20601f840160051c810160208510156157ea5750805b601f840160051c820191505b8181101561130f575f81556001016157f6565b815167ffffffffffffffff81111561582357615823615798565b615837816158318454615747565b846157c5565b602080601f831160018114615889575f84156158535750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610f34565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156158d5578886015182559484019460019091019084016158b6565b508582101561591157878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b5f60208284031215615931575f80fd5b8151614c75816156cc565b5f6020828403121561594c575f80fd5b813560ff81168114614c75575f80fd5b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261598f575f80fd5b83018035915067ffffffffffffffff8211156159a9575f80fd5b6020019150600581901b3603821315615421575f80fd5b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126159f3575f80fd5b83018035915067ffffffffffffffff821115615a0d575f80fd5b602001915036819003821315615421575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b818382375f9101908152919050565b5f815180845260208085019450602084015f5b83811015615aa257815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101615a70565b509495945050505050565b602081525f614c756020830184615a5d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715615b0657615b06615798565b604052919050565b5f67ffffffffffffffff821115615b2757615b27615798565b5060051b60200190565b5f82601f830112615b40575f80fd5b81356020615b55615b5083615b0e565b615abf565b8083825260208201915060208460051b870101935086841115615b76575f80fd5b602086015b84811015615b9b578035615b8e816153a7565b8352918301918301615b7b565b509695505050505050565b5f60208284031215615bb6575f80fd5b813567ffffffffffffffff811115615bcc575f80fd5b615bd884828501615b31565b949350505050565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b608081525f615c396080830188615a5d565b8281036020840152615c4b8188615a5d565b90508560408401528281036060840152615c66818587615be0565b98975050505050505050565b5f60208284031215615c82575f80fd5b5051919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615cb957615cb96156f4565b5060010190565b5f6020808385031215615cd1575f80fd5b825167ffffffffffffffff811115615ce7575f80fd5b8301601f81018513615cf7575f80fd5b8051615d05615b5082615b0e565b81815260059190911b82018301908381019087831115615d23575f80fd5b928401925b82841015615d4a578351615d3b816153a7565b82529284019290840190615d28565b979650505050505050565b5f8251615d66818460208701615507565b9190910192915050565b838152818360208301375f910160200190815292915050565b5f8060408385031215615d9a575f80fd5b505080516020909101519092909150565b5f8085851115615db9575f80fd5b83861115615dc5575f80fd5b5050820193919092039150565b7fffffffffffffffff0000000000000000000000000000000000000000000000008960c01b16815287600882015286602882015285604882015284606882015282846088830137608892019182015260a8019695505050505050565b85815267ffffffffffffffff85166020820152608060408201525f615e57608083018587615be0565b90508260608301529695505050505050565b5f82615e9c577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f805f805f8060c08789031215615eb6575f80fd5b86359550602087013567ffffffffffffffff80821115615ed4575f80fd5b615ee08a838b01615b31565b9650604089013595506060890135915080821115615efc575f80fd5b615f088a838b01615b31565b94506080890135935060a0890135915080821115615f24575f80fd5b50615f3189828a01615b31565b9150509295509295509295565b808202811582820484141761102c5761102c6156f456fea164736f6c6343000818000a" func init() { if err := json.Unmarshal([]byte(RollupStorageLayoutJSON), RollupStorageLayout); err != nil { diff --git a/bindings/bindings/sequencer.go b/bindings/bindings/sequencer.go index 778372d44..8e7a495a9 100644 --- a/bindings/bindings/sequencer.go +++ b/bindings/bindings/sequencer.go @@ -31,7 +31,7 @@ var ( // SequencerMetaData contains all meta data concerning the Sequencer contract. var SequencerMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"sequencerSet\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockHeight\",\"type\":\"uint256\"}],\"name\":\"SequencerSetUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"L2_STAKING_CONTRACT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockHeight0\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockHeight1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockHeight2\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentSequencerSet\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentSequencerSetSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSequencerSet0\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSequencerSet0Size\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSequencerSet1\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSequencerSet1Size\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSequencerSet2\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSequencerSet2Size\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSequencerSetBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_sequencerSet\",\"type\":\"address[]\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"isCurrentSequencer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"isSequencer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"sequencerSet0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"sequencerSet1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"sequencerSet2\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sequencerSetVerifyHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"newSequencerSet\",\"type\":\"address[]\"}],\"name\":\"updateSequencerSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60a060405234801561000f575f80fd5b507353000000000000000000000000000000000000126080526080516113e76100475f395f818161029c015261069c01526113e75ff3fe608060405234801561000f575f80fd5b506004361061019a575f3560e01c806377d7dffb116100e8578063a224cee711610093578063b1bdeab31161006e578063b1bdeab314610330578063dc55509014610338578063eae5b1e314610341578063f2fde38b14610349575f80fd5b8063a224cee714610302578063a2e53a9414610315578063a384c12e14610328575f80fd5b806389609d74116100c357806389609d74146102be5780638da5cb5b146102d15780639b8201a4146102ef575f80fd5b806377d7dffb1461027c5780637d99e8ac14610284578063807de44314610297575f80fd5b806338871fac116101485780636d46e987116101235780636d46e987146102475780636d7f64db1461026a578063715018a614610272575f80fd5b806338871fac14610221578063480265c91461022957806365fd0f8d1461023e575f80fd5b806328d1357a1161017857806328d1357a146101d757806329025fcb146101e05780632aae60bd146101e9575f80fd5b80630d78725b1461019e5780630e06ede8146101ba57806317f24c2d146101c2575b5f80fd5b6101a760655481565b6040519081526020015b60405180910390f35b606b546101a7565b6101ca61035c565b6040516101b191906110d0565b6101a7606a5481565b6101a760685481565b6101fc6101f7366004611129565b6104ad565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b1565b6067546101a7565b6102316104e2565b6040516101b19190611140565b6101a760665481565b61025a6102553660046111d2565b61051c565b60405190151581526020016101b1565b6101ca610592565b61027a6105fd565b005b6101ca610610565b6101fc610292366004611129565b61067b565b6101fc7f000000000000000000000000000000000000000000000000000000000000000081565b6101fc6102cc366004611129565b61068a565b60335473ffffffffffffffffffffffffffffffffffffffff166101fc565b61027a6102fd3660046111f2565b610699565b61027a6103103660046111f2565b610858565b61025a6103233660046111d2565b610ab4565b6101a7610c0e565b6069546101a7565b6101a7606c5481565b6101ca610c36565b61027a6103573660046111d2565b610ca1565b6060606a5443106103d257606b8054806020026020016040519081016040528092919081815260200182805480156103c857602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161039d575b5050505050905090565b60685443106104445760698054806020026020016040519081016040528092919081815260200182805480156103c857602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161039d575050505050905090565b60678054806020026020016040519081016040528092919081815260200182805480156103c857602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161039d575050505050905090565b606781815481106104bc575f80fd5b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b606060665460676068546069606a54606b604051602001610508969594939291906112b4565b604051602081830303815290604052905090565b5f61058c606b80548060200260200160405190810160405280929190818152602001828054801561058157602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610556575b505050505083610d58565b92915050565b606060678054806020026020016040519081016040528092919081815260200182805480156103c857602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161039d575050505050905090565b610605610dcb565b61060e5f610e4c565b565b6060606b8054806020026020016040519081016040528092919081815260200182805480156103c857602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161039d575050505050905090565b606b81815481106104bc575f80fd5b606981815481106104bc575f80fd5b337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff161461073d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6f6e6c79204c325374616b696e6720636f6e747261637400000000000000000060448201526064015b60405180910390fd5b606a5461074b43600261130b565b111561079f5760688054606655606a54905561076843600261130b565b606a556069805461077b91606791610ffa565b50606b805461078c91606991610ffa565b50610799606b8383611046565b506107ad565b6107ab606b8383611046565b505b42606c55606654606854606a546040516107d69392606792909160699190606b906020016112b4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101206065557f7083eed0a633eebfb4ad275c34bdd165d2df2c83d7415e880220b116fb46bc62828261083d43600261130b565b60405161084c9392919061138a565b60405180910390a15050565b5f54610100900460ff161580801561087657505f54600160ff909116105b8061088f5750303b15801561088f57505f5460ff166001145b61091b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610734565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610977575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b816109de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e76616c69642073657175656e6365722073657400000000000000000000006044820152606401610734565b6109e6610ec2565b6109f260678484611046565b506109ff60698484611046565b50610a0c606b8484611046565b5042606c556040517f7083eed0a633eebfb4ad275c34bdd165d2df2c83d7415e880220b116fb46bc6290610a4590859085905f9061138a565b60405180910390a18015610aaf575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b5f606a544310610b2b5761058c606b80548060200260200160405190810160405280929190818152602001828054801561058157602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161055657505050505083610d58565b6068544310610ba15761058c606980548060200260200160405190810160405280929190818152602001828054801561058157602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161055657505050505083610d58565b61058c606780548060200260200160405190810160405280929190818152602001828054801561058157602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161055657505050505083610d58565b5f606a544310610c1f5750606b5490565b6068544310610c2f575060695490565b5060675490565b606060698054806020026020016040519081016040528092919081815260200182805480156103c857602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161039d575050505050905090565b610ca9610dcb565b73ffffffffffffffffffffffffffffffffffffffff8116610d4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610734565b610d5581610e4c565b50565b5f805b8351811015610dc257838181518110610d7657610d766113ad565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610dba57600191505061058c565b600101610d5b565b505f9392505050565b60335473ffffffffffffffffffffffffffffffffffffffff16331461060e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610734565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16610f58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610734565b61060e5f54610100900460ff16610ff1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610734565b61060e33610e4c565b828054828255905f5260205f20908101928215611036575f5260205f209182015b8281111561103657825482559160010191906001019061101b565b506110429291506110bc565b5090565b828054828255905f5260205f20908101928215611036579160200282015b828111156110365781547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff843516178255602090920191600190910190611064565b5b80821115611042575f81556001016110bd565b602080825282518282018190525f9190848201906040850190845b8181101561111d57835173ffffffffffffffffffffffffffffffffffffffff16835292840192918401916001016110eb565b50909695505050505050565b5f60208284031215611139575f80fd5b5035919050565b5f602080835283518060208501525f5b8181101561116c57858101830151858201604001528201611150565b505f6040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146111cd575f80fd5b919050565b5f602082840312156111e2575f80fd5b6111eb826111aa565b9392505050565b5f8060208385031215611203575f80fd5b823567ffffffffffffffff8082111561121a575f80fd5b818501915085601f83011261122d575f80fd5b81358181111561123b575f80fd5b8660208260051b850101111561124f575f80fd5b60209290920196919550909350505050565b5f815480845260208085019450835f5260205f205f5b838110156112a957815473ffffffffffffffffffffffffffffffffffffffff1687529582019560019182019101611277565b509495945050505050565b86815260c060208201525f6112cc60c0830188611261565b86604084015282810360608401526112e48187611261565b905084608084015282810360a08401526112fe8185611261565b9998505050505050505050565b8082018082111561058c577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8183525f60208085019450825f5b858110156112a95773ffffffffffffffffffffffffffffffffffffffff611377836111aa565b1687529582019590820190600101611351565b604081525f61139d604083018587611343565b9050826020830152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea164736f6c6343000818000a", + Bin: "0x60a060405234801561000f575f80fd5b507353000000000000000000000000000000000000156080526080516113e76100475f395f818161029c015261069c01526113e75ff3fe608060405234801561000f575f80fd5b506004361061019a575f3560e01c806377d7dffb116100e8578063a224cee711610093578063b1bdeab31161006e578063b1bdeab314610330578063dc55509014610338578063eae5b1e314610341578063f2fde38b14610349575f80fd5b8063a224cee714610302578063a2e53a9414610315578063a384c12e14610328575f80fd5b806389609d74116100c357806389609d74146102be5780638da5cb5b146102d15780639b8201a4146102ef575f80fd5b806377d7dffb1461027c5780637d99e8ac14610284578063807de44314610297575f80fd5b806338871fac116101485780636d46e987116101235780636d46e987146102475780636d7f64db1461026a578063715018a614610272575f80fd5b806338871fac14610221578063480265c91461022957806365fd0f8d1461023e575f80fd5b806328d1357a1161017857806328d1357a146101d757806329025fcb146101e05780632aae60bd146101e9575f80fd5b80630d78725b1461019e5780630e06ede8146101ba57806317f24c2d146101c2575b5f80fd5b6101a760655481565b6040519081526020015b60405180910390f35b606b546101a7565b6101ca61035c565b6040516101b191906110d0565b6101a7606a5481565b6101a760685481565b6101fc6101f7366004611129565b6104ad565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b1565b6067546101a7565b6102316104e2565b6040516101b19190611140565b6101a760665481565b61025a6102553660046111d2565b61051c565b60405190151581526020016101b1565b6101ca610592565b61027a6105fd565b005b6101ca610610565b6101fc610292366004611129565b61067b565b6101fc7f000000000000000000000000000000000000000000000000000000000000000081565b6101fc6102cc366004611129565b61068a565b60335473ffffffffffffffffffffffffffffffffffffffff166101fc565b61027a6102fd3660046111f2565b610699565b61027a6103103660046111f2565b610858565b61025a6103233660046111d2565b610ab4565b6101a7610c0e565b6069546101a7565b6101a7606c5481565b6101ca610c36565b61027a6103573660046111d2565b610ca1565b6060606a5443106103d257606b8054806020026020016040519081016040528092919081815260200182805480156103c857602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161039d575b5050505050905090565b60685443106104445760698054806020026020016040519081016040528092919081815260200182805480156103c857602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161039d575050505050905090565b60678054806020026020016040519081016040528092919081815260200182805480156103c857602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161039d575050505050905090565b606781815481106104bc575f80fd5b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b606060665460676068546069606a54606b604051602001610508969594939291906112b4565b604051602081830303815290604052905090565b5f61058c606b80548060200260200160405190810160405280929190818152602001828054801561058157602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610556575b505050505083610d58565b92915050565b606060678054806020026020016040519081016040528092919081815260200182805480156103c857602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161039d575050505050905090565b610605610dcb565b61060e5f610e4c565b565b6060606b8054806020026020016040519081016040528092919081815260200182805480156103c857602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161039d575050505050905090565b606b81815481106104bc575f80fd5b606981815481106104bc575f80fd5b337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff161461073d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6f6e6c79204c325374616b696e6720636f6e747261637400000000000000000060448201526064015b60405180910390fd5b606a5461074b43600261130b565b111561079f5760688054606655606a54905561076843600261130b565b606a556069805461077b91606791610ffa565b50606b805461078c91606991610ffa565b50610799606b8383611046565b506107ad565b6107ab606b8383611046565b505b42606c55606654606854606a546040516107d69392606792909160699190606b906020016112b4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101206065557f7083eed0a633eebfb4ad275c34bdd165d2df2c83d7415e880220b116fb46bc62828261083d43600261130b565b60405161084c9392919061138a565b60405180910390a15050565b5f54610100900460ff161580801561087657505f54600160ff909116105b8061088f5750303b15801561088f57505f5460ff166001145b61091b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610734565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610977575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b816109de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f696e76616c69642073657175656e6365722073657400000000000000000000006044820152606401610734565b6109e6610ec2565b6109f260678484611046565b506109ff60698484611046565b50610a0c606b8484611046565b5042606c556040517f7083eed0a633eebfb4ad275c34bdd165d2df2c83d7415e880220b116fb46bc6290610a4590859085905f9061138a565b60405180910390a18015610aaf575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b5f606a544310610b2b5761058c606b80548060200260200160405190810160405280929190818152602001828054801561058157602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161055657505050505083610d58565b6068544310610ba15761058c606980548060200260200160405190810160405280929190818152602001828054801561058157602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161055657505050505083610d58565b61058c606780548060200260200160405190810160405280929190818152602001828054801561058157602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161055657505050505083610d58565b5f606a544310610c1f5750606b5490565b6068544310610c2f575060695490565b5060675490565b606060698054806020026020016040519081016040528092919081815260200182805480156103c857602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161039d575050505050905090565b610ca9610dcb565b73ffffffffffffffffffffffffffffffffffffffff8116610d4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610734565b610d5581610e4c565b50565b5f805b8351811015610dc257838181518110610d7657610d766113ad565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610dba57600191505061058c565b600101610d5b565b505f9392505050565b60335473ffffffffffffffffffffffffffffffffffffffff16331461060e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610734565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f54610100900460ff16610f58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610734565b61060e5f54610100900460ff16610ff1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610734565b61060e33610e4c565b828054828255905f5260205f20908101928215611036575f5260205f209182015b8281111561103657825482559160010191906001019061101b565b506110429291506110bc565b5090565b828054828255905f5260205f20908101928215611036579160200282015b828111156110365781547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff843516178255602090920191600190910190611064565b5b80821115611042575f81556001016110bd565b602080825282518282018190525f9190848201906040850190845b8181101561111d57835173ffffffffffffffffffffffffffffffffffffffff16835292840192918401916001016110eb565b50909695505050505050565b5f60208284031215611139575f80fd5b5035919050565b5f602080835283518060208501525f5b8181101561116c57858101830151858201604001528201611150565b505f6040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146111cd575f80fd5b919050565b5f602082840312156111e2575f80fd5b6111eb826111aa565b9392505050565b5f8060208385031215611203575f80fd5b823567ffffffffffffffff8082111561121a575f80fd5b818501915085601f83011261122d575f80fd5b81358181111561123b575f80fd5b8660208260051b850101111561124f575f80fd5b60209290920196919550909350505050565b5f815480845260208085019450835f5260205f205f5b838110156112a957815473ffffffffffffffffffffffffffffffffffffffff1687529582019560019182019101611277565b509495945050505050565b86815260c060208201525f6112cc60c0830188611261565b86604084015282810360608401526112e48187611261565b905084608084015282810360a08401526112fe8185611261565b9998505050505050505050565b8082018082111561058c577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8183525f60208085019450825f5b858110156112a95773ffffffffffffffffffffffffffffffffffffffff611377836111aa565b1687529582019590820190600101611351565b604081525f61139d604083018587611343565b9050826020830152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea164736f6c6343000818000a", } // SequencerABI is the input ABI used to generate the binding from.