diff --git a/nitro-protocol/contracts/NitroAdjudicator.sol b/nitro-protocol/contracts/NitroAdjudicator.sol index 990c5d84e..a88dd68ca 100644 --- a/nitro-protocol/contracts/NitroAdjudicator.sol +++ b/nitro-protocol/contracts/NitroAdjudicator.sol @@ -4,13 +4,14 @@ pragma experimental ABIEncoderV2; import {ExitFormat as Outcome} from '@statechannels/exit-format/contracts/ExitFormat.sol'; import {NitroUtils} from './libraries/NitroUtils.sol'; +import './interfaces/INitroAdjudicator.sol'; import './ForceMove.sol'; import './MultiAssetHolder.sol'; /** * @dev The NitroAdjudicator contract extends MultiAssetHolder and ForceMove */ -contract NitroAdjudicator is ForceMove, MultiAssetHolder { +contract NitroAdjudicator is INitroAdjudicator, ForceMove, MultiAssetHolder { /** * @notice Finalizes a channel according to the given candidate, and liquidates all assets for the channel. * @dev Finalizes a channel according to the given candidate, and liquidates all assets for the channel. diff --git a/nitro-protocol/contracts/interfaces/INitroAdjudicator.sol b/nitro-protocol/contracts/interfaces/INitroAdjudicator.sol new file mode 100644 index 000000000..5cbaab006 --- /dev/null +++ b/nitro-protocol/contracts/interfaces/INitroAdjudicator.sol @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.17; +pragma experimental ABIEncoderV2; + +import './IMultiAssetHolder.sol'; +import './IForceMove.sol'; + +/** + * @dev The INitroAdjudicator defines an interface for a contract that adjudicates state channels. It is based on IMultiAssetHolder and IForceMove, extending them with some functions. + */ +interface INitroAdjudicator is IMultiAssetHolder, IForceMove { + /** + * @notice Finalizes a channel according to the given candidate, and liquidates all assets for the channel. + * @dev Finalizes a channel according to the given candidate, and liquidates all assets for the channel. + * @param fixedPart Data describing properties of the state channel that do not change with state updates. + * @param candidate Variable part of the state to change to. + */ + function concludeAndTransferAllAssets( + FixedPart memory fixedPart, + SignedVariablePart memory candidate + ) external; + + /** + * @notice Liquidates all assets for the channel + * @dev Liquidates all assets for the channel + * @param channelId Unique identifier for a state channel + * @param outcome An array of SingleAssetExit[] items. + * @param stateHash stored state hash for the channel + */ + function transferAllAssets( + bytes32 channelId, + Outcome.SingleAssetExit[] memory outcome, + bytes32 stateHash + ) external; + + /** + * @notice Checks whether an application-specific rules for a particular ForceMove-compliant state channel are enforced in supplied states. + * @dev Checks whether an application-specific rules for a particular ForceMove-compliant state channel are enforced in supplied states. + * @param fixedPart Fixed part of the state channel. + * @param proof Variable parts of the states with signatures in the support proof. The proof is a validation for the supplied candidate. + * @param candidate Variable part of the state to change to. The candidate state is supported by proof states. + */ + function stateIsSupported( + FixedPart calldata fixedPart, + SignedVariablePart[] calldata proof, + SignedVariablePart calldata candidate + ) external view returns (bool, string memory); +} diff --git a/node/engine/chainservice/adjudicator/NitroAdjudicator.go b/node/engine/chainservice/adjudicator/NitroAdjudicator.go index 2b72fc586..a74068e5d 100644 --- a/node/engine/chainservice/adjudicator/NitroAdjudicator.go +++ b/node/engine/chainservice/adjudicator/NitroAdjudicator.go @@ -94,7 +94,7 @@ type INitroTypesVariablePart struct { // NitroAdjudicatorMetaData contains all meta data concerning the NitroAdjudicator contract. var NitroAdjudicatorMetaData = &bind.MetaData{ ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assetIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"initialHoldings\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"finalHoldings\",\"type\":\"uint256\"}],\"name\":\"AllocationUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"newTurnNumRecord\",\"type\":\"uint48\"}],\"name\":\"ChallengeCleared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"finalizesAt\",\"type\":\"uint48\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structINitroTypes.SignedVariablePart[]\",\"name\":\"proof\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"indexed\":false,\"internalType\":\"structINitroTypes.SignedVariablePart\",\"name\":\"candidate\",\"type\":\"tuple\"}],\"name\":\"ChallengeRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint48\",\"name\":\"finalizesAt\",\"type\":\"uint48\"}],\"name\":\"Concluded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destinationHoldings\",\"type\":\"uint256\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assetIndex\",\"type\":\"uint256\"}],\"name\":\"Reclaimed\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"participants\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"channelNonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"appDefinition\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"challengeDuration\",\"type\":\"uint48\"}],\"internalType\":\"structINitroTypes.FixedPart\",\"name\":\"fixedPart\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart[]\",\"name\":\"proof\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart\",\"name\":\"candidate\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature\",\"name\":\"challengerSig\",\"type\":\"tuple\"}],\"name\":\"challenge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"participants\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"channelNonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"appDefinition\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"challengeDuration\",\"type\":\"uint48\"}],\"internalType\":\"structINitroTypes.FixedPart\",\"name\":\"fixedPart\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart[]\",\"name\":\"proof\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart\",\"name\":\"candidate\",\"type\":\"tuple\"}],\"name\":\"checkpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"sourceAllocations\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"targetAllocations\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"indexOfTargetInSource\",\"type\":\"uint256\"}],\"name\":\"compute_reclaim_effects\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"initialHoldings\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256[]\",\"name\":\"indices\",\"type\":\"uint256[]\"}],\"name\":\"compute_transfer_effects_and_interactions\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"newAllocations\",\"type\":\"tuple[]\"},{\"internalType\":\"bool\",\"name\":\"allocatesOnlyZeros\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"exitAllocations\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"totalPayouts\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"participants\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"channelNonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"appDefinition\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"challengeDuration\",\"type\":\"uint48\"}],\"internalType\":\"structINitroTypes.FixedPart\",\"name\":\"fixedPart\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart\",\"name\":\"candidate\",\"type\":\"tuple\"}],\"name\":\"conclude\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"participants\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"channelNonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"appDefinition\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"challengeDuration\",\"type\":\"uint48\"}],\"internalType\":\"structINitroTypes.FixedPart\",\"name\":\"fixedPart\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart\",\"name\":\"candidate\",\"type\":\"tuple\"}],\"name\":\"concludeAndTransferAllAssets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expectedHeld\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"holdings\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChannelId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"sourceStateHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"sourceOutcomeBytes\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"sourceAssetIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"indexOfTargetInSource\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"targetStateHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"targetOutcomeBytes\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"targetAssetIndex\",\"type\":\"uint256\"}],\"internalType\":\"structIMultiAssetHolder.ReclaimArgs\",\"name\":\"reclaimArgs\",\"type\":\"tuple\"}],\"name\":\"reclaim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"participants\",\"type\":\"address[]\"},{\"internalType\":\"uint64\",\"name\":\"channelNonce\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"appDefinition\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"challengeDuration\",\"type\":\"uint48\"}],\"internalType\":\"structINitroTypes.FixedPart\",\"name\":\"fixedPart\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart[]\",\"name\":\"proof\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"appData\",\"type\":\"bytes\"},{\"internalType\":\"uint48\",\"name\":\"turnNum\",\"type\":\"uint48\"},{\"internalType\":\"bool\",\"name\":\"isFinal\",\"type\":\"bool\"}],\"internalType\":\"structINitroTypes.VariablePart\",\"name\":\"variablePart\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"structINitroTypes.Signature[]\",\"name\":\"sigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structINitroTypes.SignedVariablePart\",\"name\":\"candidate\",\"type\":\"tuple\"}],\"name\":\"stateIsSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"statusOf\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assetIndex\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"fromChannelId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"outcomeBytes\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"stateHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"indices\",\"type\":\"uint256[]\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enumExitFormat.AssetType\",\"name\":\"assetType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.AssetMetadata\",\"name\":\"assetMetadata\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"destination\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"allocationType\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"structExitFormat.Allocation[]\",\"name\":\"allocations\",\"type\":\"tuple[]\"}],\"internalType\":\"structExitFormat.SingleAssetExit[]\",\"name\":\"outcome\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"stateHash\",\"type\":\"bytes32\"}],\"name\":\"transferAllAssets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"channelId\",\"type\":\"bytes32\"}],\"name\":\"unpackStatus\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"turnNumRecord\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"finalizesAt\",\"type\":\"uint48\"},{\"internalType\":\"uint160\",\"name\":\"fingerprint\",\"type\":\"uint160\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x6080806040523461001657613783908161001c8239f35b600080fdfe608060405260048036101561001357600080fd5b60003560e01c90816311e9f178146116f7578163166e56cd146116af5781632fb1d270146113b05781633033730e1461117657816331afa0b414610e9b578163552cfa5014610e56578163566d54c614610dec5781635685b7dc14610b9b5781636d2a9c9214610aa05781638286a0601461076d578163c7df14e214610743578163d3c4e73814610468578163ec346235146100d7575063ee049b50146100b957600080fd5b346100d2576100d06100ca36611ebe565b906122ef565b005b600080fd5b346100d2576100f1906100e936611ebe565b8093916122ef565b915151906100fe83613133565b610107826133bc565b61011084613706565b9391505060405192602093848101936000855260408201526040815261013581611788565b519092206001600160a01b03929083169083160361042c575060019183519161015d83611846565b9261016b6040519485611825565b80845261017a601f1991611846565b018260005b8281106103ed575050506101938551611f01565b61019d8651611f01565b9060005b8751811015610285576101b48189611f8b565b5188604082015191610215876101ca8685611f8b565b515116938460005260018a528d6040600020906000528a526040600020546101f28789611f8b565b526101fd8688611f8b565b51906040519161020c8361180a565b6000835261287d565b9094911561027c575b91604061023f8880989796948e966102396102779c8f611f8b565b52611f8b565b51015201516040519261025184611788565b83528883015260408201526102668289611f8b565b526102718188611f8b565b50611f33565b6101a1565b60009c5061021e565b50919095879460005b825181101561034f5780877fc36da2054c5669d6dac211b7366d59f2d369151c21edf4940468614b449e0b9a8b6102d684896102cd61034a988b611f8b565b51511692611f8b565b518160005260018b526040600020846000528b526102fa6040600020918254611f9f565b9055610306848a611f8b565b519060005260018a526040600020836000528a526040600020549061034260405192839287846040919493926060820195825260208201520152565b0390a2611f33565b61028e565b5085858389156103955750600091825252600060408120555b60005b81518110156100d0578061038b6103856103909385611f8b565b51612f2b565b611f33565b61036b565b906103de6103a46000936133bc565b6103ad85613706565b509190604051926103bd846117b9565b65ffffffffffff809216845216848301528460408301526060820152613695565b92825252604060002055610368565b6040516103f981611788565b60008152604051610409816117d4565b60008152606090818582015284830152604082015282828801015201839061017f565b60405162461bcd60e51b815290810183905260156024820152741a5b98dbdc9c9958dd08199a5b99d95c9c1c9a5b9d605a1b6044820152606490fd5b346100d257600319602036820181136100d2578235916001600160401b03938484116100d257610100809285360301126100d2576040519182018281108682111761072e57604052838101358252828201906024850135825260448501358681116100d2576104dc90823691880101611886565b906040840191825260608401956064810135875260808501906084810135825260a086019860a48201358a5260c48201359081116100d25761052560e491853691850101611886565b918260c089015201359860e08701938a85526105608851965161055b8c519861054d81613133565b8a518351848f0120906130ca565b6133f3565b809661056b856133f3565b9c6001600160a01b0391600260ff60406105a281610597868961058e828d611f8b565b5151169a611f8b565b5101518c5190611f8b565b51015116036106ea578e9695949392916105cf60406105c46105d7948e611f8b565b5101518a5190611f8b565b515197611f8b565b515116036106a657506106478a9b604061063c7f4d3754632451ebba9812a9305e7bca17b67a17186a5cff93d2e9ae1b01e3d27b9d610635888f6106529b9961069a9f9e9d9b99610628889b613133565b51918151910120906130ca565b5189611f8b565b510151945190611f8b565b510151905191612c28565b9184519260406106638a5185611f8b565b510152519060405161069181610683898201948a86526040830190612b07565b03601f198101835282611825565b5190209161318c565b519251604051908152a2005b60405162461bcd60e51b81529081018a9052601d60248201527f746172676574417373657420213d2067756172616e74656541737365740000006044820152606490fd5b60405162461bcd60e51b81528086018e9052601a60248201527f6e6f7420612067756172616e74656520616c6c6f636174696f6e0000000000006044820152606490fd5b604182634e487b7160e01b6000525260246000fd5b346100d25760203660031901126100d2573560005260006020526020604060002054604051908152f35b346100d25760c03660031901126100d2576001600160401b039080358281116100d25761079d9036908301611c2a565b906024358381116100d2576107b59036908301611ea0565b926044359081116100d2576107cd9036908301611cf1565b60603660631901126100d2576040516107e581611788565b60643560ff811681036100d2578152608435602082015260a435604082015261080d846132a2565b9365ffffffffffff604084510151169361082686613662565b61082f81612215565b610a6f5765ffffffffffff61084387613706565b5050168510610a2b575b61086161085b858985612487565b90612235565b6108ba61086f855184613345565b936108b584519160405160208101908882526040808201526009606082015268666f7263654d6f766560b81b6080820152608081526108ad816117ef565b5190206131dd565b612440565b156109e757506108de65ffffffffffff60608301511665ffffffffffff4216612265565b956040519665ffffffffffff60608901911688526060602089015281518091526080880190602060808260051b8b01019301916000905b8282106109bb575050505061097a65ffffffffffff60608194897f0aa12461ee6c137332989aa12cec79f4772ab2c1a8732a382aada7e9f3ec9d348c8061096c6109a79e9f996109829a810360408401528d61227f565b0390a2015116834216612265565b9351516133bc565b9260405194610990866117b9565b855216602084015260408301526060820152613695565b906000526000602052604060002055600080f35b909192936020806109d96001938e607f19908203018652885161227f565b960192019201909291610915565b60649060206040519162461bcd60e51b8352820152601f60248201527f4368616c6c656e676572206973206e6f742061207061727469636970616e74006044820152fd5b60649060206040519162461bcd60e51b8352820152601860248201527f7475726e4e756d5265636f7264206465637265617365642e00000000000000006044820152fd5b6001610a7a87613662565b610a8381612215565b03610a9757610a92858761274b565b61084d565b610a92866127af565b346100d25760603660031901126100d2576001600160401b0381358181116100d257610acf9036908401611c2a565b916024358281116100d257610ae79036908301611ea0565b926044359283116100d257610b5961085b610b286020947f07da0a0674fb921e484018c8b81d80e292745e5d8ed134b580c8b9c631c5e9e096369101611cf1565b610b31846132a2565b9665ffffffffffff6040835101511694610b4a896127af565b610b54868a61274b565b612487565b610b84604051610b68816117b9565b8281526000848201526000604082015260006060820152613695565b8460005260008352604060002055604051908152a2005b346100d2576003196060368201126100d2578135906001600160401b03928383116100d257828101833603946080848701126100d257602435948186116100d257366023870112156100d25785840135958287116100d2573660248860051b830101116100d257604435928084116100d25760408785360301126100d257604483019081359860018060a01b0393848b16809b036100d257610c7791610c53610c5992610c48368c611c2a565b926024369201611e31565b906125c4565b95610c71610c67368a611c2a565b9136908b01611cf1565b90612655565b966040519a634c9b6c0960e11b8c526060828d015260e48c01973590602219018112156100d25785016024810197910135908282116100d2578160051b360388136100d257608060648d01528190528a9897966101048a0196959493929160005b818110610db85750505094610d4d9465ffffffffffff610d296064878d9b9760009f9d99610d3e988e6084819f610d146024610d1d9601611c03565b16910152611add565b1660a48c015201611c17565b1660c4880152848783030160248801526121c0565b918483030160448501526121a0565b03915afa908115610dac57600090600092610d86575b50610d8260405192839215158352604060208401526040830190611a1d565b0390f35b9050610da591503d806000833e610d9d8183611825565b810190611ff0565b9082610d63565b6040513d6000823e3d90fd5b9198999a5091929394959660019086610dd08b611add565b168152602080910199019101918c9a9998979695949392610cd8565b346100d25760603660031901126100d2576001600160401b039080358281116100d257610e1c90369083016118cd565b6024359283116100d257610e39610e4292610d82943691016118cd565b60443591612c28565b604051918291602083526020830190611a42565b346100d25760203660031901126100d257610e7360609135613706565b6040805165ffffffffffff94851681529390921660208401526001600160a01b031690820152f35b346100d2576060806003193601126100d2576024356001600160401b0381116100d257610ecb9036908401611af1565b90610ed68335613133565b610eed610ee2836133bc565b8435906044356130ca565b600191805191610efc83611846565b92610f0a6040519485611825565b808452610f19601f1991611846565b019060005b82811061113757505050610f328151611f01565b610f3c8251611f01565b9160005b815181101561101157610f538183611f8b565b51604081015190610fa46001600160a01b03610f6f8587611f8b565b5151169283600052600160205260406000208b35600052602052604060002054610f998689611f8b565b526101fd8588611f8b565b9093929115611008575b9160209186959493610fc3611003988c611f8b565b526040610fd0878a611f8b565b510152015160405192610fe284611788565b835260208301526040820152610ff88288611f8b565b526102718187611f8b565b610f40565b60009a50610fae565b5090919260005b82518110156110dd576110d8906001600160a01b036110378286611f8b565b5151166110448288611f8b565b51816000526020906001825260406000208b35600052825261106c6040600020918254611f9f565b90556110788388611f8b565b5191600052600181526040600020908a35600052527fc36da2054c5669d6dac211b7366d59f2d369151c21edf4940468614b449e0b9a6103426040600020546040519182918d359587846040919493926060820195825260208201520152565b611018565b508582861561111a5750356000526000602052600060408120555b60005b81518110156100d0578061038b6103856111159385611f8b565b6110fb565b90611127611132926133bc565b90604435903561318c565b6110f8565b60209060405161114681611788565b60008152604051611156816117d4565b600081528390858282015281830152846040830152828801015201610f1e565b346100d25760a03660031901126100d2576001600160401b039080359060446024803582358681116100d2576111af9036908601611886565b946064968735906084359081116100d2576111cd903690880161199c565b9260005b6001810180821161139c578551811015611249576111fa6111f28388611f8b565b519187611f8b565b51111561120f5761120a90611f33565b6111d1565b60405162461bcd60e51b81526020818a015260168188015275125b991a58d95cc81b5d5cdd081899481cdbdc9d195960521b818901528a90fd5b5050876113776100d0959461125d84613133565b8361127684519461055b6020978897888401208a6130ca565b6001600160a01b03979091907fc36da2054c5669d6dac211b7366d59f2d369151c21edf4940468614b449e0b9a90896112af8686611f8b565b515116806000526001885260406000208460005288526113456112e76040600020549360406112de8a8a611f8b565b5101518561287d565b909d9291508460005260018c526040600020886000528c5261130f6040600020918254611f9f565b9055604061131d8a8a611f8b565b5101526040518a8101908b825261133b81610683604082018c612b07565b519020908661318c565b6000908152600188526040808220858352895290819020548151878152602081019390935290820152606090a2611f8b565b5193845116930151906040519361138d85611788565b84528301526040820152612f2b565b8660118a634e487b7160e01b600052526000fd5b60803660031901126100d2576113c4611ac7565b6024918235916064918235948460a01c1561166d5760018060a01b0383169384600052602092600184526040600020876000528452604060002054926044908135850361163757876114bc5789340361147d57505050507f87d4c0b5e30d6808bc8a94ba1c4d839b29d664151551a31753387ee9ef48429b949561144791612804565b60009384526001825260408085208786529092529281902083905580516001600160a01b039290921682526020820192909252a2005b60405162461bcd60e51b8152928301869052601f908301527f496e636f7272656374206d73672e76616c756520666f72206465706f7369740090820152fd5b989392906040518681016323b872dd60e01b8152338c830152308383015286848301528382526114eb826117ef565b604051916114f8836117d4565b8883527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564898401528a3b156115f55760008b611544949382809451925af161153e61309a565b90613731565b80518061157f575b50505050507f87d4c0b5e30d6808bc8a94ba1c4d839b29d664151551a31753387ee9ef48429b9596509061144791612804565b818891810103126100d257866115959101611fac565b156115a157808061154c565b60405162461bcd60e51b8152928301869052602a838b01527f5361666545524332303a204552433230206f7065726174696f6e20646964206e90830152691bdd081cdd58d8d9595960b21b90820152608490fd5b5050507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000008391601d8c896040519562461bcd60e51b8752860152840152820152fd5b60405162461bcd60e51b8152928301869052601490830152731a195b1908084f48195e1c1958dd195912195b1960621b90820152fd5b601f91925060206040519362461bcd60e51b85528401528201527f4465706f73697420746f2065787465726e616c2064657374696e6174696f6e006044820152fd5b346100d25760403660031901126100d2576001600160a01b036116d0611ac7565b16600052600160205260406000206024356000526020526020604060002054604051908152f35b346100d25760603660031901126100d2576001600160401b036024358181116100d25761172790369084016118cd565b906044359081116100d2576117699261177e9261174a611751933690840161199c565b913561287d565b92939190604051958695608087526080870190611a42565b91151560208601528482036040860152611a42565b9060608301520390f35b606081019081106001600160401b038211176117a357604052565b634e487b7160e01b600052604160045260246000fd5b608081019081106001600160401b038211176117a357604052565b604081019081106001600160401b038211176117a357604052565b60a081019081106001600160401b038211176117a357604052565b602081019081106001600160401b038211176117a357604052565b90601f801991011681019081106001600160401b038211176117a357604052565b6001600160401b0381116117a35760051b60200190565b359060ff821682036100d257565b6001600160401b0381116117a357601f01601f191660200190565b81601f820112156100d25780359061189d8261186b565b926118ab6040519485611825565b828452602083830101116100d257816000926020809301838601378301015290565b9080601f830112156100d25781356118e481611846565b926040916118f483519586611825565b808552602093848087019260051b840101938185116100d257858401925b858410611923575050505050505090565b6001600160401b0384358181116100d257860191608080601f1985880301126100d257845190611952826117b9565b8a8501358252858501358b83015260609061196e82870161185d565b878401528501359384116100d25761198d878c80979681970101611886565b90820152815201930192611912565b81601f820112156100d2578035916119b383611846565b926119c16040519485611825565b808452602092838086019260051b8201019283116100d2578301905b8282106119eb575050505090565b813581529083019083016119dd565b60005b838110611a0d5750506000910152565b81810151838201526020016119fd565b90602091611a36815180928185528580860191016119fa565b601f01601f1916010190565b908082519081815260208091019281808460051b8301019501936000915b848310611a705750505050505090565b9091929394958480611ab7600193601f198682030187528a51805182528381015184830152604060ff81830151169083015260608091015191608080928201520190611a1d565b9801930193019194939290611a60565b600435906001600160a01b03821682036100d257565b35906001600160a01b03821682036100d257565b9080601f830112156100d2578135611b0881611846565b92604091611b1883519586611825565b808552602093848087019260051b840101938185116100d257858401925b858410611b47575050505050505090565b6001600160401b0384358181116100d257860191601f196060848703820181136100d257855191611b7783611788565b611b828c8701611add565b8352868601358581116100d2578790870191828a0301126100d257865190611ba9826117d4565b8c81013560048110156100d2578252878101358681116100d2578d8a91611bd1930101611886565b8c8201528b8301528401359283116100d257611bf4868b809695819601016118cd565b85820152815201930192611b36565b35906001600160401b03821682036100d257565b359065ffffffffffff821682036100d257565b9190916080818403126100d25760405190611c44826117b9565b819381356001600160401b0381116100d25782019080601f830112156100d257813590611c7082611846565b91611c7e6040519384611825565b808352602093848085019260051b8201019283116100d2578401905b828210611cda57505050606092611cd59284928652611cba818301611c03565b90860152611cca60408201611add565b604086015201611c17565b910152565b848091611ce684611add565b815201910190611c9a565b919060409283818303126100d2578351848101916001600160401b0395828410878511176117a357838152829682358181116100d2578301926080848803126100d257611d3d866117b9565b83358281116100d25787611d52918601611af1565b8652602095868501358381116100d25788611d6e918701611886565b606095869182890152611d82868201611c17565b6080890152013580151581036100d25760a08701528552858101359182116100d257019085601f830112156100d257813590611dbd82611846565b96611dca82519889611825565b8288528685818a019402850101938185116100d2578701925b848410611df4575050505050500152565b85848303126100d2578786918451611e0b81611788565b611e148761185d565b815282870135838201528587013586820152815201930192611de3565b92919092611e3e84611846565b91611e4c6040519384611825565b829480845260208094019060051b8301928284116100d25780915b848310611e7657505050505050565b82356001600160401b0381116100d2578691611e958684938601611cf1565b815201920191611e67565b9080601f830112156100d257816020611ebb93359101611e31565b90565b9060406003198301126100d2576001600160401b036004358181116100d25783611eea91600401611c2a565b926024359182116100d257611ebb91600401611cf1565b90611f0b82611846565b611f186040519182611825565b8281528092611f29601f1991611846565b0190602036910137565b6000198114611f425760010190565b634e487b7160e01b600052601160045260246000fd5b805115611f655760200190565b634e487b7160e01b600052603260045260246000fd5b805160011015611f655760400190565b8051821015611f655760209160051b010190565b91908203918211611f4257565b519081151582036100d257565b90929192611fc68161186b565b91611fd46040519384611825565b8294828452828201116100d2576020611fee9301906119fa565b565b91906040838203126100d25761200583611fac565b926020810151906001600160401b0382116100d257019080601f830112156100d2578151611ebb92602001611fb9565b906080810182519060808352815180915260a0830190602060a08260051b8601019301916000905b82821061209e57505050506060612081819260208601518582036020870152611a1d565b9365ffffffffffff60408201511660408501520151151591015290565b90919293609f19868203018252845160018060a01b038151168252602081015160606020840152805160048082101561218b575060206040926120f2926060870152015182608086015260a0850190611a1d565b910151916040818303910152815180825260208201906020808260051b85010194019260005b82811061213857505050505060208060019296019201920190929161205d565b909192939460208061217e600193601f19878203018952608060608b5180518452858101518685015260ff60408201511660408501520151918160608201520190611a1d565b9701950193929101612118565b602190634e487b7160e01b6000525260246000fd5b906020806121b78451604085526040850190612035565b93015191015290565b90815180825260208092019182818360051b85019501936000915b8483106121eb5750505050505090565b909192939495848061220583856001950387528a516121a0565b98019301930191949392906121db565b6003111561221f57565b634e487b7160e01b600052602160045260246000fd5b1561223d5750565b60405162461bcd60e51b815260206004820152908190612261906024830190611a1d565b0390fd5b91909165ffffffffffff80809416911601918211611f4257565b80519061229460409283855283850190612035565b9060208091015193818184039101528080855193848152019401926000905b8382106122c257505050505090565b8451805160ff168752808401518785015281015186820152606090950194938201936001909101906122b3565b91906122fa836132a2565b92612304846127af565b6060825101511561240557602061231b8383612655565b015190816000925b6123e0575060ff9051519116036123ae577f4f465027a3d06ea73dd12be0f5c5fc0a34e21f19d6eaed4834a7a944edabc9016020849261239761237065ffffffffffff42169251516133bc565b6040519061237d826117b9565b600082528385830152600060408301526060820152613695565b8460005260008352604060002055604051908152a2565b60405162461bcd60e51b815260206004820152600a60248201526921756e616e696d6f757360b01b6044820152606490fd5b600019810190808211611f4257169160ff809116908114611f42576001019180612323565b60405162461bcd60e51b815260206004820152601360248201527214dd185d19481b5d5cdd08189948199a5b985b606a1b6044820152606490fd5b60005b825181101561247f576001600160a01b038061245f8386611f8b565b5116908316146124775761247290611f33565b612443565b505050600190565b505050600090565b9291604084019160018060a01b03916124ae6124a78486511693886125c4565b9187612655565b604051968794634c9b6c0960e11b86526060600487015260e4860196825160806064890152805180995261010488019860208092019060005b8181106125715750505060009865ffffffffffff6060868b99968a99966001600160401b03610d3e9761253e9b01511660848c0152511660a48a015201511660c487015260031993848783030160248801526121c0565b03915afa918215610dac57600090819361255757509190565b9061256d9293503d8091833e610d9d8183611825565b9091565b825186168c529a83019a8d9a50918301916001016124e7565b60405190612597826117d4565b60006020836040516125a8816117b9565b6060815260608382015283604082015283606082015281520152565b8151916125d083611846565b926125de6040519485611825565b8084526125ed601f1991611846565b0160005b81811061263e57505060005b8151811015612638578061261e6126176126339385611f8b565b5185612655565b6126288287611f8b565b526102718186611f8b565b6125fd565b50505090565b60209061264961258a565b828288010152016125f1565b919061265f61258a565b5080519060405191612670836117d4565b82526020928383019260009283855283955b80820180515188101561273f576126b2906126ab896126a4869896518d613345565b9251611f8b565b51906131dd565b6001600160a01b0390811694909390865b8a51805182101561272f576126d9828892611f8b565b511687146126ef576126ea90611f33565b6126c3565b929891955093509060ff811161271b57906001612711921b8751178752611f33565b9592919092612682565b634e487b7160e01b86526011600452602486fd5b5050935093509561271190611f33565b50505093509350505090565b61275490613706565b505065ffffffffffff8091169116111561276a57565b60405162461bcd60e51b815260206004820152601c60248201527f7475726e4e756d5265636f7264206e6f7420696e637265617365642e000000006044820152606490fd5b6127ba600291613662565b6127c381612215565b146127ca57565b60405162461bcd60e51b815260206004820152601260248201527121b430b73732b6103334b730b634bd32b21760711b6044820152606490fd5b91908201809211611f4257565b9061281b82611846565b60409061282a82519182611825565b838152809361283b601f1991611846565b0191600091825b848110612850575050505050565b602090835161285e816117b9565b8581528286818301528686830152606080830152828501015201612842565b9192908351801515600014612afc5761289590612811565b916000916128a38151612811565b95600190818097938960009586935b6128c0575b50505050505050565b909192939495978351851015612af3576128da8585611f8b565b51516128e68685611f8b565b515260409060ff80836128f98989611f8b565b51015116836129088988611f8b565b5101526060806129188989611f8b565b510151816129268a89611f8b565b510152602093846129378a8a611f8b565b51015186811115612aed575085965b8d8b51908b8215928315612ac3575b505050600014612a925750600283828f61296f908c611f8b565b5101511614612a4f578f96959493868f918f612a0c90612a1294612a1e988f988f908f91612a189a898f946129e78f8692886129c2836129bc88846129b4848e611f8b565b510151611f9f565b93611f8b565b5101526129cf8187611f8b565b515198856129dd8389611f8b565b5101511695611f8b565b510151948251966129f7886117b9565b87528601528401528201526102398383611f8b565b50612804565b9c611f33565b95611f8b565b510151612a46575b612a3991612a3391611f9f565b93611f33565b91909493928a90856128b2565b60009a50612a26565b5162461bcd60e51b815260048101859052601b60248201527f63616e6e6f74207472616e7366657220612067756172616e74656500000000006044820152606490fd5b9050612a1e925088915084612aad83959e989796958a611f8b565b51015184612abb8484611f8b565b510152611f8b565b821092509082612ad8575b50508e8b38612955565b612ae49192508d611f8b565b51148a8f612ace565b96612946565b978291506128b7565b506128958151612811565b90815180825260208092019182818360051b82019501936000915b848310612b325750505050505090565b9091929394958181038352865160018060a01b03815116825285810151906060918288850152805160048082101561218b57509188612b8a9285948796839801520151604092839182608088015260a0870190611a1d565b91015193828183039101528351908181528581019286808460051b8401019601946000915b848310612bd2575050505050505090806001929801930193019194939290612b22565b9193959780612c14600193959799601f19898203018b526080878d5180518452858101518685015260ff89820151168985015201519181898201520190611a1d565b99019701930190918b979695939492612baf565b80516000198101908111611f4257612c3f90612811565b91612c4a8483611f8b565b51606081015192604094855191612c60836117d4565b600095868452866020809501528781805181010312612f275787805191612c86836117d4565b85810151835201519084810191825287998890899c8a988b5b87518d1015612e08578f848e14612df9578c8f8f90612d0c858f8f908f612cc68782611f8b565b51519582612cd48984611f8b565b5101516060612cea8a60ff856129dd8389611f8b565b51015193825198612cfa8a6117b9565b89528801528601526060850152611f8b565b52612d17848d611f8b565b5087159081612de3575b50612da9575b501580612d94575b612d46575b612a12612d4091611f33565b9b612c9f565b9e5098612d89908f612d748b612d6a8f612d608391611f7b565b510151938d611f8b565b5101918251612804565b905289612d808d611f7b565b51015190612804565b60019e909990612d34565b50612d9f8d89611f8b565b5151875114612d2f565b829c919650612d80818c612dd28f612d6a612dd99882612dc98199611f58565b51015194611f8b565b9052611f58565b996001948c612d27565b612dee91508b611f8b565b51518851148f612d21565b509b9d50612d4060019e611f33565b509899509c969a99505093999250505015612eeb5715612eb15715612e765783015103612e3457505090565b60649250519062461bcd60e51b825280600483015260248201527f746f74616c5265636c61696d6564213d67756172616e7465652e616d6f756e746044820152fd5b825162461bcd60e51b815260048101859052601460248201527318dbdd5b19081b9bdd08199a5b99081c9a59da1d60621b6044820152606490fd5b835162461bcd60e51b815260048101869052601360248201527218dbdd5b19081b9bdd08199a5b99081b19599d606a1b6044820152606490fd5b845162461bcd60e51b815260048101879052601560248201527418dbdd5b19081b9bdd08199a5b99081d185c99d95d605a1b6044820152606490fd5b8680fd5b80516001600160a01b03908116919060005b60408084019081519182518410156128b75784612f5b858095611f8b565b515191612f6c602095869251611f8b565b510151918060a01c1560001461306f571687612fe557600080809381935af1612f9361309a565b5015612fa9575050612fa490611f33565b612f3d565b60649250519062461bcd60e51b825260048201526016602482015275086deead8c840dcdee840e8e4c2dce6cccae4408aa8960531b6044820152fd5b825163a9059cbb60e01b81526001600160a01b039190911660048201526024810191909152929190818460448160008b5af1908115613065575061302f575b50612fa49150611f33565b82813d831161305e575b6130438183611825565b810103126100d257613057612fa492611fac565b5038613024565b503d613039565b513d6000823e3d90fd5b60008981526001865284812091815294525091208054612fa4939261309391612804565b9055611f33565b3d156130c5573d906130ab8261186b565b916130b96040519384611825565b82523d6000602084013e565b606090565b916130d490613706565b936001600160a01b03938493506130ec9250906136d9565b169116036130f657565b60405162461bcd60e51b81526020600482015260156024820152741a5b98dbdc9c9958dd08199a5b99d95c9c1c9a5b9d605a1b6044820152606490fd5b61313e600291613662565b61314781612215565b0361314e57565b60405162461bcd60e51b815260206004820152601660248201527521b430b73732b6103737ba103334b730b634bd32b21760511b6044820152606490fd5b91906131cc9161319b84613706565b509290604051936131ab856117b9565b65ffffffffffff809216855216602084015260408301526060820152613695565b906000526000602052604060002055565b90600060806020926040948551858101917f19457468657265756d205369676e6564204d6573736167653a0a3332000000008352603c820152603c815261322381611788565b5190209060ff8151169086868201519101519187519384528684015286830152606082015282805260015afa1561306557600051906001600160a01b0382161561326b575090565b5162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b6044820152606490fd5b8051906020916001600160401b03838301511660018060a01b039165ffffffffffff606084604087015116950151166040519485938785019760a086019060808a5285518092528060c088019601976000905b838210613328575050505060408501526060840152608083015203601f1981018352613322915082611825565b51902090565b895181168852988201988a985096820196600191909101906132f5565b613322613354613392926132a2565b926020810151815191606065ffffffffffff60408301511691015115156133a560405196879460208601998a5260a0604087015260c0860190611a1d565b601f199586868303016060870152612b07565b91608084015260a083015203908101835282611825565b604051613322816106836020820194602086526040830190612b07565b9080601f830112156100d2578151611ebb92602001611fb9565b805181016020828203126100d25760208201516001600160401b0381116100d25760208201603f8285010112156100d257602081840101519061343582611846565b936134436040519586611825565b82855260208501916020850160408560051b8385010101116100d257604081830101925b60408560051b838501010184106134815750505050505090565b83516001600160401b0381116100d257601f19908484010160608189038301126100d257604051916134b283611788565b60408201516001600160a01b03811681036100d257835260608201516001600160401b0381116100d257604090830191828b0301126100d257604051906134f8826117d4565b604081015160048110156100d25782526060810151906001600160401b0382116100d257604061352e9260208d019201016133d9565b6020820152602083015260808101516001600160401b0381116100d25760208901605f8284010112156100d257604081830101519061356c82611846565b9261357a6040519485611825565b828452602084019060208c0160608560051b8584010101116100d257606083820101915b60608560051b858401010183106135c75750505050506040820152815260209384019301613467565b82516001600160401b0381116100d257608083860182018f03603f1901126100d257604051916135f6836117b9565b8386018201606081015184526080810151602085015260a0015160ff811681036100d257604084015260c082878601010151926001600160401b0384116100d2578f6020949360608695866136529401928b8a010101016133d9565b606082015281520192019161359e565b61367265ffffffffffff91613706565b5090501680156000146136855750600090565b421061369057600290565b600190565b65ffffffffffff60d01b815160d01b1665ffffffffffff60a01b602083015160a01b1617906136d46040820151606060018060a01b03930151906136d9565b161790565b60405191602083019182526040830152604082526136f682611788565b905190206001600160a01b031690565b60005260006020526040600020548060d01c9165ffffffffffff8260a01c169160018060a01b031690565b9091901561373d575090565b81511561223d5750805190602001fdfea2646970667358221220d04fc3bdc8595fb4800e4b3acb972e56c01fdb61f5d8fdc9f4a161864d6f11a564736f6c63430008110033", + Bin: "0x6080806040523461001657613783908161001c8239f35b600080fdfe608060405260048036101561001357600080fd5b60003560e01c90816311e9f178146116f7578163166e56cd146116af5781632fb1d270146113b05781633033730e1461117657816331afa0b414610e9b578163552cfa5014610e56578163566d54c614610dec5781635685b7dc14610b9b5781636d2a9c9214610aa05781638286a0601461076d578163c7df14e214610743578163d3c4e73814610468578163ec346235146100d7575063ee049b50146100b957600080fd5b346100d2576100d06100ca36611ebe565b906122ef565b005b600080fd5b346100d2576100f1906100e936611ebe565b8093916122ef565b915151906100fe83613133565b610107826133bc565b61011084613706565b9391505060405192602093848101936000855260408201526040815261013581611788565b519092206001600160a01b03929083169083160361042c575060019183519161015d83611846565b9261016b6040519485611825565b80845261017a601f1991611846565b018260005b8281106103ed575050506101938551611f01565b61019d8651611f01565b9060005b8751811015610285576101b48189611f8b565b5188604082015191610215876101ca8685611f8b565b515116938460005260018a528d6040600020906000528a526040600020546101f28789611f8b565b526101fd8688611f8b565b51906040519161020c8361180a565b6000835261287d565b9094911561027c575b91604061023f8880989796948e966102396102779c8f611f8b565b52611f8b565b51015201516040519261025184611788565b83528883015260408201526102668289611f8b565b526102718188611f8b565b50611f33565b6101a1565b60009c5061021e565b50919095879460005b825181101561034f5780877fc36da2054c5669d6dac211b7366d59f2d369151c21edf4940468614b449e0b9a8b6102d684896102cd61034a988b611f8b565b51511692611f8b565b518160005260018b526040600020846000528b526102fa6040600020918254611f9f565b9055610306848a611f8b565b519060005260018a526040600020836000528a526040600020549061034260405192839287846040919493926060820195825260208201520152565b0390a2611f33565b61028e565b5085858389156103955750600091825252600060408120555b60005b81518110156100d0578061038b6103856103909385611f8b565b51612f2b565b611f33565b61036b565b906103de6103a46000936133bc565b6103ad85613706565b509190604051926103bd846117b9565b65ffffffffffff809216845216848301528460408301526060820152613695565b92825252604060002055610368565b6040516103f981611788565b60008152604051610409816117d4565b60008152606090818582015284830152604082015282828801015201839061017f565b60405162461bcd60e51b815290810183905260156024820152741a5b98dbdc9c9958dd08199a5b99d95c9c1c9a5b9d605a1b6044820152606490fd5b346100d257600319602036820181136100d2578235916001600160401b03938484116100d257610100809285360301126100d2576040519182018281108682111761072e57604052838101358252828201906024850135825260448501358681116100d2576104dc90823691880101611886565b906040840191825260608401956064810135875260808501906084810135825260a086019860a48201358a5260c48201359081116100d25761052560e491853691850101611886565b918260c089015201359860e08701938a85526105608851965161055b8c519861054d81613133565b8a518351848f0120906130ca565b6133f3565b809661056b856133f3565b9c6001600160a01b0391600260ff60406105a281610597868961058e828d611f8b565b5151169a611f8b565b5101518c5190611f8b565b51015116036106ea578e9695949392916105cf60406105c46105d7948e611f8b565b5101518a5190611f8b565b515197611f8b565b515116036106a657506106478a9b604061063c7f4d3754632451ebba9812a9305e7bca17b67a17186a5cff93d2e9ae1b01e3d27b9d610635888f6106529b9961069a9f9e9d9b99610628889b613133565b51918151910120906130ca565b5189611f8b565b510151945190611f8b565b510151905191612c28565b9184519260406106638a5185611f8b565b510152519060405161069181610683898201948a86526040830190612b07565b03601f198101835282611825565b5190209161318c565b519251604051908152a2005b60405162461bcd60e51b81529081018a9052601d60248201527f746172676574417373657420213d2067756172616e74656541737365740000006044820152606490fd5b60405162461bcd60e51b81528086018e9052601a60248201527f6e6f7420612067756172616e74656520616c6c6f636174696f6e0000000000006044820152606490fd5b604182634e487b7160e01b6000525260246000fd5b346100d25760203660031901126100d2573560005260006020526020604060002054604051908152f35b346100d25760c03660031901126100d2576001600160401b039080358281116100d25761079d9036908301611c2a565b906024358381116100d2576107b59036908301611ea0565b926044359081116100d2576107cd9036908301611cf1565b60603660631901126100d2576040516107e581611788565b60643560ff811681036100d2578152608435602082015260a435604082015261080d846132a2565b9365ffffffffffff604084510151169361082686613662565b61082f81612215565b610a6f5765ffffffffffff61084387613706565b5050168510610a2b575b61086161085b858985612487565b90612235565b6108ba61086f855184613345565b936108b584519160405160208101908882526040808201526009606082015268666f7263654d6f766560b81b6080820152608081526108ad816117ef565b5190206131dd565b612440565b156109e757506108de65ffffffffffff60608301511665ffffffffffff4216612265565b956040519665ffffffffffff60608901911688526060602089015281518091526080880190602060808260051b8b01019301916000905b8282106109bb575050505061097a65ffffffffffff60608194897f0aa12461ee6c137332989aa12cec79f4772ab2c1a8732a382aada7e9f3ec9d348c8061096c6109a79e9f996109829a810360408401528d61227f565b0390a2015116834216612265565b9351516133bc565b9260405194610990866117b9565b855216602084015260408301526060820152613695565b906000526000602052604060002055600080f35b909192936020806109d96001938e607f19908203018652885161227f565b960192019201909291610915565b60649060206040519162461bcd60e51b8352820152601f60248201527f4368616c6c656e676572206973206e6f742061207061727469636970616e74006044820152fd5b60649060206040519162461bcd60e51b8352820152601860248201527f7475726e4e756d5265636f7264206465637265617365642e00000000000000006044820152fd5b6001610a7a87613662565b610a8381612215565b03610a9757610a92858761274b565b61084d565b610a92866127af565b346100d25760603660031901126100d2576001600160401b0381358181116100d257610acf9036908401611c2a565b916024358281116100d257610ae79036908301611ea0565b926044359283116100d257610b5961085b610b286020947f07da0a0674fb921e484018c8b81d80e292745e5d8ed134b580c8b9c631c5e9e096369101611cf1565b610b31846132a2565b9665ffffffffffff6040835101511694610b4a896127af565b610b54868a61274b565b612487565b610b84604051610b68816117b9565b8281526000848201526000604082015260006060820152613695565b8460005260008352604060002055604051908152a2005b346100d2576003196060368201126100d2578135906001600160401b03928383116100d257828101833603946080848701126100d257602435948186116100d257366023870112156100d25785840135958287116100d2573660248860051b830101116100d257604435928084116100d25760408785360301126100d257604483019081359860018060a01b0393848b16809b036100d257610c7791610c53610c5992610c48368c611c2a565b926024369201611e31565b906125c4565b95610c71610c67368a611c2a565b9136908b01611cf1565b90612655565b966040519a634c9b6c0960e11b8c526060828d015260e48c01973590602219018112156100d25785016024810197910135908282116100d2578160051b360388136100d257608060648d01528190528a9897966101048a0196959493929160005b818110610db85750505094610d4d9465ffffffffffff610d296064878d9b9760009f9d99610d3e988e6084819f610d146024610d1d9601611c03565b16910152611add565b1660a48c015201611c17565b1660c4880152848783030160248801526121c0565b918483030160448501526121a0565b03915afa908115610dac57600090600092610d86575b50610d8260405192839215158352604060208401526040830190611a1d565b0390f35b9050610da591503d806000833e610d9d8183611825565b810190611ff0565b9082610d63565b6040513d6000823e3d90fd5b9198999a5091929394959660019086610dd08b611add565b168152602080910199019101918c9a9998979695949392610cd8565b346100d25760603660031901126100d2576001600160401b039080358281116100d257610e1c90369083016118cd565b6024359283116100d257610e39610e4292610d82943691016118cd565b60443591612c28565b604051918291602083526020830190611a42565b346100d25760203660031901126100d257610e7360609135613706565b6040805165ffffffffffff94851681529390921660208401526001600160a01b031690820152f35b346100d2576060806003193601126100d2576024356001600160401b0381116100d257610ecb9036908401611af1565b90610ed68335613133565b610eed610ee2836133bc565b8435906044356130ca565b600191805191610efc83611846565b92610f0a6040519485611825565b808452610f19601f1991611846565b019060005b82811061113757505050610f328151611f01565b610f3c8251611f01565b9160005b815181101561101157610f538183611f8b565b51604081015190610fa46001600160a01b03610f6f8587611f8b565b5151169283600052600160205260406000208b35600052602052604060002054610f998689611f8b565b526101fd8588611f8b565b9093929115611008575b9160209186959493610fc3611003988c611f8b565b526040610fd0878a611f8b565b510152015160405192610fe284611788565b835260208301526040820152610ff88288611f8b565b526102718187611f8b565b610f40565b60009a50610fae565b5090919260005b82518110156110dd576110d8906001600160a01b036110378286611f8b565b5151166110448288611f8b565b51816000526020906001825260406000208b35600052825261106c6040600020918254611f9f565b90556110788388611f8b565b5191600052600181526040600020908a35600052527fc36da2054c5669d6dac211b7366d59f2d369151c21edf4940468614b449e0b9a6103426040600020546040519182918d359587846040919493926060820195825260208201520152565b611018565b508582861561111a5750356000526000602052600060408120555b60005b81518110156100d0578061038b6103856111159385611f8b565b6110fb565b90611127611132926133bc565b90604435903561318c565b6110f8565b60209060405161114681611788565b60008152604051611156816117d4565b600081528390858282015281830152846040830152828801015201610f1e565b346100d25760a03660031901126100d2576001600160401b039080359060446024803582358681116100d2576111af9036908601611886565b946064968735906084359081116100d2576111cd903690880161199c565b9260005b6001810180821161139c578551811015611249576111fa6111f28388611f8b565b519187611f8b565b51111561120f5761120a90611f33565b6111d1565b60405162461bcd60e51b81526020818a015260168188015275125b991a58d95cc81b5d5cdd081899481cdbdc9d195960521b818901528a90fd5b5050876113776100d0959461125d84613133565b8361127684519461055b6020978897888401208a6130ca565b6001600160a01b03979091907fc36da2054c5669d6dac211b7366d59f2d369151c21edf4940468614b449e0b9a90896112af8686611f8b565b515116806000526001885260406000208460005288526113456112e76040600020549360406112de8a8a611f8b565b5101518561287d565b909d9291508460005260018c526040600020886000528c5261130f6040600020918254611f9f565b9055604061131d8a8a611f8b565b5101526040518a8101908b825261133b81610683604082018c612b07565b519020908661318c565b6000908152600188526040808220858352895290819020548151878152602081019390935290820152606090a2611f8b565b5193845116930151906040519361138d85611788565b84528301526040820152612f2b565b8660118a634e487b7160e01b600052526000fd5b60803660031901126100d2576113c4611ac7565b6024918235916064918235948460a01c1561166d5760018060a01b0383169384600052602092600184526040600020876000528452604060002054926044908135850361163757876114bc5789340361147d57505050507f87d4c0b5e30d6808bc8a94ba1c4d839b29d664151551a31753387ee9ef48429b949561144791612804565b60009384526001825260408085208786529092529281902083905580516001600160a01b039290921682526020820192909252a2005b60405162461bcd60e51b8152928301869052601f908301527f496e636f7272656374206d73672e76616c756520666f72206465706f7369740090820152fd5b989392906040518681016323b872dd60e01b8152338c830152308383015286848301528382526114eb826117ef565b604051916114f8836117d4565b8883527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564898401528a3b156115f55760008b611544949382809451925af161153e61309a565b90613731565b80518061157f575b50505050507f87d4c0b5e30d6808bc8a94ba1c4d839b29d664151551a31753387ee9ef48429b9596509061144791612804565b818891810103126100d257866115959101611fac565b156115a157808061154c565b60405162461bcd60e51b8152928301869052602a838b01527f5361666545524332303a204552433230206f7065726174696f6e20646964206e90830152691bdd081cdd58d8d9595960b21b90820152608490fd5b5050507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000008391601d8c896040519562461bcd60e51b8752860152840152820152fd5b60405162461bcd60e51b8152928301869052601490830152731a195b1908084f48195e1c1958dd195912195b1960621b90820152fd5b601f91925060206040519362461bcd60e51b85528401528201527f4465706f73697420746f2065787465726e616c2064657374696e6174696f6e006044820152fd5b346100d25760403660031901126100d2576001600160a01b036116d0611ac7565b16600052600160205260406000206024356000526020526020604060002054604051908152f35b346100d25760603660031901126100d2576001600160401b036024358181116100d25761172790369084016118cd565b906044359081116100d2576117699261177e9261174a611751933690840161199c565b913561287d565b92939190604051958695608087526080870190611a42565b91151560208601528482036040860152611a42565b9060608301520390f35b606081019081106001600160401b038211176117a357604052565b634e487b7160e01b600052604160045260246000fd5b608081019081106001600160401b038211176117a357604052565b604081019081106001600160401b038211176117a357604052565b60a081019081106001600160401b038211176117a357604052565b602081019081106001600160401b038211176117a357604052565b90601f801991011681019081106001600160401b038211176117a357604052565b6001600160401b0381116117a35760051b60200190565b359060ff821682036100d257565b6001600160401b0381116117a357601f01601f191660200190565b81601f820112156100d25780359061189d8261186b565b926118ab6040519485611825565b828452602083830101116100d257816000926020809301838601378301015290565b9080601f830112156100d25781356118e481611846565b926040916118f483519586611825565b808552602093848087019260051b840101938185116100d257858401925b858410611923575050505050505090565b6001600160401b0384358181116100d257860191608080601f1985880301126100d257845190611952826117b9565b8a8501358252858501358b83015260609061196e82870161185d565b878401528501359384116100d25761198d878c80979681970101611886565b90820152815201930192611912565b81601f820112156100d2578035916119b383611846565b926119c16040519485611825565b808452602092838086019260051b8201019283116100d2578301905b8282106119eb575050505090565b813581529083019083016119dd565b60005b838110611a0d5750506000910152565b81810151838201526020016119fd565b90602091611a36815180928185528580860191016119fa565b601f01601f1916010190565b908082519081815260208091019281808460051b8301019501936000915b848310611a705750505050505090565b9091929394958480611ab7600193601f198682030187528a51805182528381015184830152604060ff81830151169083015260608091015191608080928201520190611a1d565b9801930193019194939290611a60565b600435906001600160a01b03821682036100d257565b35906001600160a01b03821682036100d257565b9080601f830112156100d2578135611b0881611846565b92604091611b1883519586611825565b808552602093848087019260051b840101938185116100d257858401925b858410611b47575050505050505090565b6001600160401b0384358181116100d257860191601f196060848703820181136100d257855191611b7783611788565b611b828c8701611add565b8352868601358581116100d2578790870191828a0301126100d257865190611ba9826117d4565b8c81013560048110156100d2578252878101358681116100d2578d8a91611bd1930101611886565b8c8201528b8301528401359283116100d257611bf4868b809695819601016118cd565b85820152815201930192611b36565b35906001600160401b03821682036100d257565b359065ffffffffffff821682036100d257565b9190916080818403126100d25760405190611c44826117b9565b819381356001600160401b0381116100d25782019080601f830112156100d257813590611c7082611846565b91611c7e6040519384611825565b808352602093848085019260051b8201019283116100d2578401905b828210611cda57505050606092611cd59284928652611cba818301611c03565b90860152611cca60408201611add565b604086015201611c17565b910152565b848091611ce684611add565b815201910190611c9a565b919060409283818303126100d2578351848101916001600160401b0395828410878511176117a357838152829682358181116100d2578301926080848803126100d257611d3d866117b9565b83358281116100d25787611d52918601611af1565b8652602095868501358381116100d25788611d6e918701611886565b606095869182890152611d82868201611c17565b6080890152013580151581036100d25760a08701528552858101359182116100d257019085601f830112156100d257813590611dbd82611846565b96611dca82519889611825565b8288528685818a019402850101938185116100d2578701925b848410611df4575050505050500152565b85848303126100d2578786918451611e0b81611788565b611e148761185d565b815282870135838201528587013586820152815201930192611de3565b92919092611e3e84611846565b91611e4c6040519384611825565b829480845260208094019060051b8301928284116100d25780915b848310611e7657505050505050565b82356001600160401b0381116100d2578691611e958684938601611cf1565b815201920191611e67565b9080601f830112156100d257816020611ebb93359101611e31565b90565b9060406003198301126100d2576001600160401b036004358181116100d25783611eea91600401611c2a565b926024359182116100d257611ebb91600401611cf1565b90611f0b82611846565b611f186040519182611825565b8281528092611f29601f1991611846565b0190602036910137565b6000198114611f425760010190565b634e487b7160e01b600052601160045260246000fd5b805115611f655760200190565b634e487b7160e01b600052603260045260246000fd5b805160011015611f655760400190565b8051821015611f655760209160051b010190565b91908203918211611f4257565b519081151582036100d257565b90929192611fc68161186b565b91611fd46040519384611825565b8294828452828201116100d2576020611fee9301906119fa565b565b91906040838203126100d25761200583611fac565b926020810151906001600160401b0382116100d257019080601f830112156100d2578151611ebb92602001611fb9565b906080810182519060808352815180915260a0830190602060a08260051b8601019301916000905b82821061209e57505050506060612081819260208601518582036020870152611a1d565b9365ffffffffffff60408201511660408501520151151591015290565b90919293609f19868203018252845160018060a01b038151168252602081015160606020840152805160048082101561218b575060206040926120f2926060870152015182608086015260a0850190611a1d565b910151916040818303910152815180825260208201906020808260051b85010194019260005b82811061213857505050505060208060019296019201920190929161205d565b909192939460208061217e600193601f19878203018952608060608b5180518452858101518685015260ff60408201511660408501520151918160608201520190611a1d565b9701950193929101612118565b602190634e487b7160e01b6000525260246000fd5b906020806121b78451604085526040850190612035565b93015191015290565b90815180825260208092019182818360051b85019501936000915b8483106121eb5750505050505090565b909192939495848061220583856001950387528a516121a0565b98019301930191949392906121db565b6003111561221f57565b634e487b7160e01b600052602160045260246000fd5b1561223d5750565b60405162461bcd60e51b815260206004820152908190612261906024830190611a1d565b0390fd5b91909165ffffffffffff80809416911601918211611f4257565b80519061229460409283855283850190612035565b9060208091015193818184039101528080855193848152019401926000905b8382106122c257505050505090565b8451805160ff168752808401518785015281015186820152606090950194938201936001909101906122b3565b91906122fa836132a2565b92612304846127af565b6060825101511561240557602061231b8383612655565b015190816000925b6123e0575060ff9051519116036123ae577f4f465027a3d06ea73dd12be0f5c5fc0a34e21f19d6eaed4834a7a944edabc9016020849261239761237065ffffffffffff42169251516133bc565b6040519061237d826117b9565b600082528385830152600060408301526060820152613695565b8460005260008352604060002055604051908152a2565b60405162461bcd60e51b815260206004820152600a60248201526921756e616e696d6f757360b01b6044820152606490fd5b600019810190808211611f4257169160ff809116908114611f42576001019180612323565b60405162461bcd60e51b815260206004820152601360248201527214dd185d19481b5d5cdd08189948199a5b985b606a1b6044820152606490fd5b60005b825181101561247f576001600160a01b038061245f8386611f8b565b5116908316146124775761247290611f33565b612443565b505050600190565b505050600090565b9291604084019160018060a01b03916124ae6124a78486511693886125c4565b9187612655565b604051968794634c9b6c0960e11b86526060600487015260e4860196825160806064890152805180995261010488019860208092019060005b8181106125715750505060009865ffffffffffff6060868b99968a99966001600160401b03610d3e9761253e9b01511660848c0152511660a48a015201511660c487015260031993848783030160248801526121c0565b03915afa918215610dac57600090819361255757509190565b9061256d9293503d8091833e610d9d8183611825565b9091565b825186168c529a83019a8d9a50918301916001016124e7565b60405190612597826117d4565b60006020836040516125a8816117b9565b6060815260608382015283604082015283606082015281520152565b8151916125d083611846565b926125de6040519485611825565b8084526125ed601f1991611846565b0160005b81811061263e57505060005b8151811015612638578061261e6126176126339385611f8b565b5185612655565b6126288287611f8b565b526102718186611f8b565b6125fd565b50505090565b60209061264961258a565b828288010152016125f1565b919061265f61258a565b5080519060405191612670836117d4565b82526020928383019260009283855283955b80820180515188101561273f576126b2906126ab896126a4869896518d613345565b9251611f8b565b51906131dd565b6001600160a01b0390811694909390865b8a51805182101561272f576126d9828892611f8b565b511687146126ef576126ea90611f33565b6126c3565b929891955093509060ff811161271b57906001612711921b8751178752611f33565b9592919092612682565b634e487b7160e01b86526011600452602486fd5b5050935093509561271190611f33565b50505093509350505090565b61275490613706565b505065ffffffffffff8091169116111561276a57565b60405162461bcd60e51b815260206004820152601c60248201527f7475726e4e756d5265636f7264206e6f7420696e637265617365642e000000006044820152606490fd5b6127ba600291613662565b6127c381612215565b146127ca57565b60405162461bcd60e51b815260206004820152601260248201527121b430b73732b6103334b730b634bd32b21760711b6044820152606490fd5b91908201809211611f4257565b9061281b82611846565b60409061282a82519182611825565b838152809361283b601f1991611846565b0191600091825b848110612850575050505050565b602090835161285e816117b9565b8581528286818301528686830152606080830152828501015201612842565b9192908351801515600014612afc5761289590612811565b916000916128a38151612811565b95600190818097938960009586935b6128c0575b50505050505050565b909192939495978351851015612af3576128da8585611f8b565b51516128e68685611f8b565b515260409060ff80836128f98989611f8b565b51015116836129088988611f8b565b5101526060806129188989611f8b565b510151816129268a89611f8b565b510152602093846129378a8a611f8b565b51015186811115612aed575085965b8d8b51908b8215928315612ac3575b505050600014612a925750600283828f61296f908c611f8b565b5101511614612a4f578f96959493868f918f612a0c90612a1294612a1e988f988f908f91612a189a898f946129e78f8692886129c2836129bc88846129b4848e611f8b565b510151611f9f565b93611f8b565b5101526129cf8187611f8b565b515198856129dd8389611f8b565b5101511695611f8b565b510151948251966129f7886117b9565b87528601528401528201526102398383611f8b565b50612804565b9c611f33565b95611f8b565b510151612a46575b612a3991612a3391611f9f565b93611f33565b91909493928a90856128b2565b60009a50612a26565b5162461bcd60e51b815260048101859052601b60248201527f63616e6e6f74207472616e7366657220612067756172616e74656500000000006044820152606490fd5b9050612a1e925088915084612aad83959e989796958a611f8b565b51015184612abb8484611f8b565b510152611f8b565b821092509082612ad8575b50508e8b38612955565b612ae49192508d611f8b565b51148a8f612ace565b96612946565b978291506128b7565b506128958151612811565b90815180825260208092019182818360051b82019501936000915b848310612b325750505050505090565b9091929394958181038352865160018060a01b03815116825285810151906060918288850152805160048082101561218b57509188612b8a9285948796839801520151604092839182608088015260a0870190611a1d565b91015193828183039101528351908181528581019286808460051b8401019601946000915b848310612bd2575050505050505090806001929801930193019194939290612b22565b9193959780612c14600193959799601f19898203018b526080878d5180518452858101518685015260ff89820151168985015201519181898201520190611a1d565b99019701930190918b979695939492612baf565b80516000198101908111611f4257612c3f90612811565b91612c4a8483611f8b565b51606081015192604094855191612c60836117d4565b600095868452866020809501528781805181010312612f275787805191612c86836117d4565b85810151835201519084810191825287998890899c8a988b5b87518d1015612e08578f848e14612df9578c8f8f90612d0c858f8f908f612cc68782611f8b565b51519582612cd48984611f8b565b5101516060612cea8a60ff856129dd8389611f8b565b51015193825198612cfa8a6117b9565b89528801528601526060850152611f8b565b52612d17848d611f8b565b5087159081612de3575b50612da9575b501580612d94575b612d46575b612a12612d4091611f33565b9b612c9f565b9e5098612d89908f612d748b612d6a8f612d608391611f7b565b510151938d611f8b565b5101918251612804565b905289612d808d611f7b565b51015190612804565b60019e909990612d34565b50612d9f8d89611f8b565b5151875114612d2f565b829c919650612d80818c612dd28f612d6a612dd99882612dc98199611f58565b51015194611f8b565b9052611f58565b996001948c612d27565b612dee91508b611f8b565b51518851148f612d21565b509b9d50612d4060019e611f33565b509899509c969a99505093999250505015612eeb5715612eb15715612e765783015103612e3457505090565b60649250519062461bcd60e51b825280600483015260248201527f746f74616c5265636c61696d6564213d67756172616e7465652e616d6f756e746044820152fd5b825162461bcd60e51b815260048101859052601460248201527318dbdd5b19081b9bdd08199a5b99081c9a59da1d60621b6044820152606490fd5b835162461bcd60e51b815260048101869052601360248201527218dbdd5b19081b9bdd08199a5b99081b19599d606a1b6044820152606490fd5b845162461bcd60e51b815260048101879052601560248201527418dbdd5b19081b9bdd08199a5b99081d185c99d95d605a1b6044820152606490fd5b8680fd5b80516001600160a01b03908116919060005b60408084019081519182518410156128b75784612f5b858095611f8b565b515191612f6c602095869251611f8b565b510151918060a01c1560001461306f571687612fe557600080809381935af1612f9361309a565b5015612fa9575050612fa490611f33565b612f3d565b60649250519062461bcd60e51b825260048201526016602482015275086deead8c840dcdee840e8e4c2dce6cccae4408aa8960531b6044820152fd5b825163a9059cbb60e01b81526001600160a01b039190911660048201526024810191909152929190818460448160008b5af1908115613065575061302f575b50612fa49150611f33565b82813d831161305e575b6130438183611825565b810103126100d257613057612fa492611fac565b5038613024565b503d613039565b513d6000823e3d90fd5b60008981526001865284812091815294525091208054612fa4939261309391612804565b9055611f33565b3d156130c5573d906130ab8261186b565b916130b96040519384611825565b82523d6000602084013e565b606090565b916130d490613706565b936001600160a01b03938493506130ec9250906136d9565b169116036130f657565b60405162461bcd60e51b81526020600482015260156024820152741a5b98dbdc9c9958dd08199a5b99d95c9c1c9a5b9d605a1b6044820152606490fd5b61313e600291613662565b61314781612215565b0361314e57565b60405162461bcd60e51b815260206004820152601660248201527521b430b73732b6103737ba103334b730b634bd32b21760511b6044820152606490fd5b91906131cc9161319b84613706565b509290604051936131ab856117b9565b65ffffffffffff809216855216602084015260408301526060820152613695565b906000526000602052604060002055565b90600060806020926040948551858101917f19457468657265756d205369676e6564204d6573736167653a0a3332000000008352603c820152603c815261322381611788565b5190209060ff8151169086868201519101519187519384528684015286830152606082015282805260015afa1561306557600051906001600160a01b0382161561326b575090565b5162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b6044820152606490fd5b8051906020916001600160401b03838301511660018060a01b039165ffffffffffff606084604087015116950151166040519485938785019760a086019060808a5285518092528060c088019601976000905b838210613328575050505060408501526060840152608083015203601f1981018352613322915082611825565b51902090565b895181168852988201988a985096820196600191909101906132f5565b613322613354613392926132a2565b926020810151815191606065ffffffffffff60408301511691015115156133a560405196879460208601998a5260a0604087015260c0860190611a1d565b601f199586868303016060870152612b07565b91608084015260a083015203908101835282611825565b604051613322816106836020820194602086526040830190612b07565b9080601f830112156100d2578151611ebb92602001611fb9565b805181016020828203126100d25760208201516001600160401b0381116100d25760208201603f8285010112156100d257602081840101519061343582611846565b936134436040519586611825565b82855260208501916020850160408560051b8385010101116100d257604081830101925b60408560051b838501010184106134815750505050505090565b83516001600160401b0381116100d257601f19908484010160608189038301126100d257604051916134b283611788565b60408201516001600160a01b03811681036100d257835260608201516001600160401b0381116100d257604090830191828b0301126100d257604051906134f8826117d4565b604081015160048110156100d25782526060810151906001600160401b0382116100d257604061352e9260208d019201016133d9565b6020820152602083015260808101516001600160401b0381116100d25760208901605f8284010112156100d257604081830101519061356c82611846565b9261357a6040519485611825565b828452602084019060208c0160608560051b8584010101116100d257606083820101915b60608560051b858401010183106135c75750505050506040820152815260209384019301613467565b82516001600160401b0381116100d257608083860182018f03603f1901126100d257604051916135f6836117b9565b8386018201606081015184526080810151602085015260a0015160ff811681036100d257604084015260c082878601010151926001600160401b0384116100d2578f6020949360608695866136529401928b8a010101016133d9565b606082015281520192019161359e565b61367265ffffffffffff91613706565b5090501680156000146136855750600090565b421061369057600290565b600190565b65ffffffffffff60d01b815160d01b1665ffffffffffff60a01b602083015160a01b1617906136d46040820151606060018060a01b03930151906136d9565b161790565b60405191602083019182526040830152604082526136f682611788565b905190206001600160a01b031690565b60005260006020526040600020548060d01c9165ffffffffffff8260a01c169160018060a01b031690565b9091901561373d575090565b81511561223d5750805190602001fdfea264697066735822122074c9248a1970d925f7adae72debefb7d2a3e09edb7eb621d315ff09c7ada903a64736f6c63430008110033", } // NitroAdjudicatorABI is the input ABI used to generate the binding from.