Hierarchy

  • ContractFactory
    • SuperTokenMock__factory

Constructors

  • Parameters

    • Rest ...args: SuperTokenMockConstructorParams

    Returns SuperTokenMock__factory

Properties

abi: readonly [{
    inputs: readonly [{
        internalType: "contract ISuperfluid";
        name: "host";
        type: "address";
    }, {
        internalType: "uint256";
        name: "w";
        type: "uint256";
    }, {
        internalType: "contract IConstantOutflowNFT";
        name: "constantOutflowNFTProxy";
        type: "address";
    }, {
        internalType: "contract IConstantInflowNFT";
        name: "constantInflowNFTProxy";
        type: "address";
    }, {
        internalType: "contract IPoolAdminNFT";
        name: "poolAdminNFTProxy";
        type: "address";
    }, {
        internalType: "contract IPoolMemberNFT";
        name: "poolMemberNFTProxy";
        type: "address";
    }];
    stateMutability: "nonpayable";
    type: "constructor";
}, {
    inputs: readonly [];
    name: "SF_TOKEN_AGREEMENT_ALREADY_EXISTS";
    type: "error";
}, {
    inputs: readonly [];
    name: "SF_TOKEN_AGREEMENT_DOES_NOT_EXIST";
    type: "error";
}, {
    inputs: readonly [];
    name: "SF_TOKEN_BURN_INSUFFICIENT_BALANCE";
    type: "error";
}, {
    inputs: readonly [];
    name: "SF_TOKEN_MOVE_INSUFFICIENT_BALANCE";
    type: "error";
}, {
    inputs: readonly [];
    name: "SF_TOKEN_ONLY_HOST";
    type: "error";
}, {
    inputs: readonly [];
    name: "SF_TOKEN_ONLY_LISTED_AGREEMENT";
    type: "error";
}, {
    inputs: readonly [];
    name: "SUPER_TOKEN_APPROVE_FROM_ZERO_ADDRESS";
    type: "error";
}, {
    inputs: readonly [];
    name: "SUPER_TOKEN_APPROVE_TO_ZERO_ADDRESS";
    type: "error";
}, {
    inputs: readonly [];
    name: "SUPER_TOKEN_BURN_FROM_ZERO_ADDRESS";
    type: "error";
}, {
    inputs: readonly [];
    name: "SUPER_TOKEN_CALLER_IS_NOT_OPERATOR_FOR_HOLDER";
    type: "error";
}, {
    inputs: readonly [];
    name: "SUPER_TOKEN_INFLATIONARY_DEFLATIONARY_NOT_SUPPORTED";
    type: "error";
}, {
    inputs: readonly [];
    name: "SUPER_TOKEN_MINT_TO_ZERO_ADDRESS";
    type: "error";
}, {
    inputs: readonly [];
    name: "SUPER_TOKEN_NFT_PROXY_ADDRESS_CHANGED";
    type: "error";
}, {
    inputs: readonly [];
    name: "SUPER_TOKEN_NOT_ERC777_TOKENS_RECIPIENT";
    type: "error";
}, {
    inputs: readonly [];
    name: "SUPER_TOKEN_NO_UNDERLYING_TOKEN";
    type: "error";
}, {
    inputs: readonly [];
    name: "SUPER_TOKEN_ONLY_ADMIN";
    type: "error";
}, {
    inputs: readonly [];
    name: "SUPER_TOKEN_ONLY_GOV_OWNER";
    type: "error";
}, {
    inputs: readonly [];
    name: "SUPER_TOKEN_ONLY_SELF";
    type: "error";
}, {
    inputs: readonly [];
    name: "SUPER_TOKEN_TRANSFER_FROM_ZERO_ADDRESS";
    type: "error";
}, {
    inputs: readonly [];
    name: "SUPER_TOKEN_TRANSFER_TO_ZERO_ADDRESS";
    type: "error";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "address";
        name: "oldAdmin";
        type: "address";
    }, {
        indexed: true;
        internalType: "address";
        name: "newAdmin";
        type: "address";
    }];
    name: "AdminChanged";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "address";
        name: "agreementClass";
        type: "address";
    }, {
        indexed: false;
        internalType: "bytes32";
        name: "id";
        type: "bytes32";
    }, {
        indexed: false;
        internalType: "bytes32[]";
        name: "data";
        type: "bytes32[]";
    }];
    name: "AgreementCreated";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "address";
        name: "agreementClass";
        type: "address";
    }, {
        indexed: false;
        internalType: "bytes32";
        name: "id";
        type: "bytes32";
    }, {
        indexed: true;
        internalType: "address";
        name: "penaltyAccount";
        type: "address";
    }, {
        indexed: true;
        internalType: "address";
        name: "rewardAccount";
        type: "address";
    }, {
        indexed: false;
        internalType: "uint256";
        name: "rewardAmount";
        type: "uint256";
    }];
    name: "AgreementLiquidated";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: false;
        internalType: "address";
        name: "liquidatorAccount";
        type: "address";
    }, {
        indexed: true;
        internalType: "address";
        name: "agreementClass";
        type: "address";
    }, {
        indexed: false;
        internalType: "bytes32";
        name: "id";
        type: "bytes32";
    }, {
        indexed: true;
        internalType: "address";
        name: "penaltyAccount";
        type: "address";
    }, {
        indexed: true;
        internalType: "address";
        name: "bondAccount";
        type: "address";
    }, {
        indexed: false;
        internalType: "uint256";
        name: "rewardAmount";
        type: "uint256";
    }, {
        indexed: false;
        internalType: "uint256";
        name: "bailoutAmount";
        type: "uint256";
    }];
    name: "AgreementLiquidatedBy";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "address";
        name: "agreementClass";
        type: "address";
    }, {
        indexed: false;
        internalType: "bytes32";
        name: "id";
        type: "bytes32";
    }, {
        indexed: true;
        internalType: "address";
        name: "liquidatorAccount";
        type: "address";
    }, {
        indexed: true;
        internalType: "address";
        name: "targetAccount";
        type: "address";
    }, {
        indexed: false;
        internalType: "address";
        name: "rewardAmountReceiver";
        type: "address";
    }, {
        indexed: false;
        internalType: "uint256";
        name: "rewardAmount";
        type: "uint256";
    }, {
        indexed: false;
        internalType: "int256";
        name: "targetAccountBalanceDelta";
        type: "int256";
    }, {
        indexed: false;
        internalType: "bytes";
        name: "liquidationTypeData";
        type: "bytes";
    }];
    name: "AgreementLiquidatedV2";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "address";
        name: "agreementClass";
        type: "address";
    }, {
        indexed: true;
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        indexed: false;
        internalType: "uint256";
        name: "slotId";
        type: "uint256";
    }];
    name: "AgreementStateUpdated";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "address";
        name: "agreementClass";
        type: "address";
    }, {
        indexed: false;
        internalType: "bytes32";
        name: "id";
        type: "bytes32";
    }];
    name: "AgreementTerminated";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "address";
        name: "agreementClass";
        type: "address";
    }, {
        indexed: false;
        internalType: "bytes32";
        name: "id";
        type: "bytes32";
    }, {
        indexed: false;
        internalType: "bytes32[]";
        name: "data";
        type: "bytes32[]";
    }];
    name: "AgreementUpdated";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        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: readonly [{
        indexed: true;
        internalType: "address";
        name: "operator";
        type: "address";
    }, {
        indexed: true;
        internalType: "address";
        name: "tokenHolder";
        type: "address";
    }];
    name: "AuthorizedOperator";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "address";
        name: "bailoutAccount";
        type: "address";
    }, {
        indexed: false;
        internalType: "uint256";
        name: "bailoutAmount";
        type: "uint256";
    }];
    name: "Bailout";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "address";
        name: "operator";
        type: "address";
    }, {
        indexed: true;
        internalType: "address";
        name: "from";
        type: "address";
    }, {
        indexed: false;
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }, {
        indexed: false;
        internalType: "bytes";
        name: "data";
        type: "bytes";
    }, {
        indexed: false;
        internalType: "bytes";
        name: "operatorData";
        type: "bytes";
    }];
    name: "Burned";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: false;
        internalType: "bytes32";
        name: "uuid";
        type: "bytes32";
    }, {
        indexed: false;
        internalType: "address";
        name: "codeAddress";
        type: "address";
    }];
    name: "CodeUpdated";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "contract IConstantInflowNFT";
        name: "constantInflowNFT";
        type: "address";
    }];
    name: "ConstantInflowNFTCreated";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "contract IConstantOutflowNFT";
        name: "constantOutflowNFT";
        type: "address";
    }];
    name: "ConstantOutflowNFTCreated";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: false;
        internalType: "uint8";
        name: "version";
        type: "uint8";
    }];
    name: "Initialized";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "address";
        name: "operator";
        type: "address";
    }, {
        indexed: true;
        internalType: "address";
        name: "to";
        type: "address";
    }, {
        indexed: false;
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }, {
        indexed: false;
        internalType: "bytes";
        name: "data";
        type: "bytes";
    }, {
        indexed: false;
        internalType: "bytes";
        name: "operatorData";
        type: "bytes";
    }];
    name: "Minted";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "contract IPoolAdminNFT";
        name: "poolAdminNFT";
        type: "address";
    }];
    name: "PoolAdminNFTCreated";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "contract IPoolMemberNFT";
        name: "poolMemberNFT";
        type: "address";
    }];
    name: "PoolMemberNFTCreated";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "address";
        name: "operator";
        type: "address";
    }, {
        indexed: true;
        internalType: "address";
        name: "tokenHolder";
        type: "address";
    }];
    name: "RevokedOperator";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "address";
        name: "operator";
        type: "address";
    }, {
        indexed: true;
        internalType: "address";
        name: "from";
        type: "address";
    }, {
        indexed: true;
        internalType: "address";
        name: "to";
        type: "address";
    }, {
        indexed: false;
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }, {
        indexed: false;
        internalType: "bytes";
        name: "data";
        type: "bytes";
    }, {
        indexed: false;
        internalType: "bytes";
        name: "operatorData";
        type: "bytes";
    }];
    name: "Sent";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        indexed: false;
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }];
    name: "TokenDowngraded";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        indexed: false;
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }];
    name: "TokenUpgraded";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        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";
}, {
    inputs: readonly [];
    name: "CONSTANT_INFLOW_NFT";
    outputs: readonly [{
        internalType: "contract IConstantInflowNFT";
        name: "";
        type: "address";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [];
    name: "CONSTANT_OUTFLOW_NFT";
    outputs: readonly [{
        internalType: "contract IConstantOutflowNFT";
        name: "";
        type: "address";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [];
    name: "POOL_ADMIN_NFT";
    outputs: readonly [{
        internalType: "contract IPoolAdminNFT";
        name: "";
        type: "address";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [];
    name: "POOL_MEMBER_NFT";
    outputs: readonly [{
        internalType: "contract IPoolMemberNFT";
        name: "";
        type: "address";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "address";
        name: "spender";
        type: "address";
    }];
    name: "allowance";
    outputs: readonly [{
        internalType: "uint256";
        name: "";
        type: "uint256";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "spender";
        type: "address";
    }, {
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }];
    name: "approve";
    outputs: readonly [{
        internalType: "bool";
        name: "";
        type: "bool";
    }];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "owner";
        type: "address";
    }, {
        internalType: "address";
        name: "spender";
        type: "address";
    }, {
        internalType: "uint256";
        name: "value";
        type: "uint256";
    }];
    name: "approveInternal";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "operator";
        type: "address";
    }];
    name: "authorizeOperator";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }];
    name: "balanceOf";
    outputs: readonly [{
        internalType: "uint256";
        name: "balance";
        type: "uint256";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }, {
        internalType: "bytes";
        name: "userData";
        type: "bytes";
    }];
    name: "burn";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [];
    name: "castrate";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "newAdmin";
        type: "address";
    }];
    name: "changeAdmin";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "bytes32";
        name: "id";
        type: "bytes32";
    }, {
        internalType: "bytes32[]";
        name: "data";
        type: "bytes32[]";
    }];
    name: "createAgreement";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [];
    name: "decimals";
    outputs: readonly [{
        internalType: "uint8";
        name: "";
        type: "uint8";
    }];
    stateMutability: "pure";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "spender";
        type: "address";
    }, {
        internalType: "uint256";
        name: "subtractedValue";
        type: "uint256";
    }];
    name: "decreaseAllowance";
    outputs: readonly [{
        internalType: "bool";
        name: "";
        type: "bool";
    }];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [];
    name: "defaultOperators";
    outputs: readonly [{
        internalType: "address[]";
        name: "";
        type: "address[]";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }];
    name: "downgrade";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "to";
        type: "address";
    }, {
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }];
    name: "downgradeTo";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }];
    name: "getAccountActiveAgreements";
    outputs: readonly [{
        internalType: "contract ISuperAgreement[]";
        name: "";
        type: "address[]";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [];
    name: "getAdmin";
    outputs: readonly [{
        internalType: "address";
        name: "";
        type: "address";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "agreementClass";
        type: "address";
    }, {
        internalType: "bytes32";
        name: "id";
        type: "bytes32";
    }, {
        internalType: "uint256";
        name: "dataLength";
        type: "uint256";
    }];
    name: "getAgreementData";
    outputs: readonly [{
        internalType: "bytes32[]";
        name: "data";
        type: "bytes32[]";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "agreementClass";
        type: "address";
    }, {
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "uint256";
        name: "slotId";
        type: "uint256";
    }, {
        internalType: "uint256";
        name: "dataLength";
        type: "uint256";
    }];
    name: "getAgreementStateSlot";
    outputs: readonly [{
        internalType: "bytes32[]";
        name: "slotData";
        type: "bytes32[]";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [];
    name: "getCodeAddress";
    outputs: readonly [{
        internalType: "address";
        name: "codeAddress";
        type: "address";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [];
    name: "getHost";
    outputs: readonly [{
        internalType: "address";
        name: "host";
        type: "address";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [];
    name: "getUnderlyingDecimals";
    outputs: readonly [{
        internalType: "uint8";
        name: "";
        type: "uint8";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [];
    name: "getUnderlyingToken";
    outputs: readonly [{
        internalType: "address";
        name: "";
        type: "address";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [];
    name: "granularity";
    outputs: readonly [{
        internalType: "uint256";
        name: "";
        type: "uint256";
    }];
    stateMutability: "pure";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "spender";
        type: "address";
    }, {
        internalType: "uint256";
        name: "addedValue";
        type: "uint256";
    }];
    name: "increaseAllowance";
    outputs: readonly [{
        internalType: "bool";
        name: "";
        type: "bool";
    }];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract IERC20";
        name: "underlyingToken";
        type: "address";
    }, {
        internalType: "uint8";
        name: "underlyingDecimals";
        type: "uint8";
    }, {
        internalType: "string";
        name: "n";
        type: "string";
    }, {
        internalType: "string";
        name: "s";
        type: "string";
    }];
    name: "initialize";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract IERC20";
        name: "underlyingToken";
        type: "address";
    }, {
        internalType: "uint8";
        name: "underlyingDecimals";
        type: "uint8";
    }, {
        internalType: "string";
        name: "n";
        type: "string";
    }, {
        internalType: "string";
        name: "s";
        type: "string";
    }, {
        internalType: "address";
        name: "admin";
        type: "address";
    }];
    name: "initializeWithAdmin";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "uint256";
        name: "timestamp";
        type: "uint256";
    }];
    name: "isAccountCritical";
    outputs: readonly [{
        internalType: "bool";
        name: "isCritical";
        type: "bool";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }];
    name: "isAccountCriticalNow";
    outputs: readonly [{
        internalType: "bool";
        name: "isCritical";
        type: "bool";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "uint256";
        name: "timestamp";
        type: "uint256";
    }];
    name: "isAccountSolvent";
    outputs: readonly [{
        internalType: "bool";
        name: "isSolvent";
        type: "bool";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }];
    name: "isAccountSolventNow";
    outputs: readonly [{
        internalType: "bool";
        name: "isSolvent";
        type: "bool";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "operator";
        type: "address";
    }, {
        internalType: "address";
        name: "tokenHolder";
        type: "address";
    }];
    name: "isOperatorFor";
    outputs: readonly [{
        internalType: "bool";
        name: "";
        type: "bool";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "bytes32";
        name: "id";
        type: "bytes32";
    }, {
        internalType: "bytes";
        name: "liquidationTypeData";
        type: "bytes";
    }, {
        internalType: "address";
        name: "liquidatorAccount";
        type: "address";
    }, {
        internalType: "bool";
        name: "useDefaultRewardAccount";
        type: "bool";
    }, {
        internalType: "address";
        name: "targetAccount";
        type: "address";
    }, {
        internalType: "uint256";
        name: "rewardAmount";
        type: "uint256";
    }, {
        internalType: "int256";
        name: "targetAccountBalanceDelta";
        type: "int256";
    }];
    name: "makeLiquidationPayoutsV2";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "to";
        type: "address";
    }, {
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }, {
        internalType: "bytes";
        name: "userData";
        type: "bytes";
    }, {
        internalType: "bytes";
        name: "operatorData";
        type: "bytes";
    }];
    name: "mintInternal";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [];
    name: "name";
    outputs: readonly [{
        internalType: "string";
        name: "";
        type: "string";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "address";
        name: "spender";
        type: "address";
    }, {
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }];
    name: "operationApprove";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "address";
        name: "spender";
        type: "address";
    }, {
        internalType: "uint256";
        name: "subtractedValue";
        type: "uint256";
    }];
    name: "operationDecreaseAllowance";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }];
    name: "operationDowngrade";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "address";
        name: "spender";
        type: "address";
    }, {
        internalType: "uint256";
        name: "addedValue";
        type: "uint256";
    }];
    name: "operationIncreaseAllowance";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "spender";
        type: "address";
    }, {
        internalType: "address";
        name: "recipient";
        type: "address";
    }, {
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }, {
        internalType: "bytes";
        name: "userData";
        type: "bytes";
    }];
    name: "operationSend";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "address";
        name: "spender";
        type: "address";
    }, {
        internalType: "address";
        name: "recipient";
        type: "address";
    }, {
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }];
    name: "operationTransferFrom";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }];
    name: "operationUpgrade";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }, {
        internalType: "bytes";
        name: "userData";
        type: "bytes";
    }, {
        internalType: "bytes";
        name: "operatorData";
        type: "bytes";
    }];
    name: "operatorBurn";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "sender";
        type: "address";
    }, {
        internalType: "address";
        name: "recipient";
        type: "address";
    }, {
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }, {
        internalType: "bytes";
        name: "userData";
        type: "bytes";
    }, {
        internalType: "bytes";
        name: "operatorData";
        type: "bytes";
    }];
    name: "operatorSend";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [];
    name: "proxiableUUID";
    outputs: readonly [{
        internalType: "bytes32";
        name: "";
        type: "bytes32";
    }];
    stateMutability: "pure";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "uint256";
        name: "timestamp";
        type: "uint256";
    }];
    name: "realtimeBalanceOf";
    outputs: readonly [{
        internalType: "int256";
        name: "availableBalance";
        type: "int256";
    }, {
        internalType: "uint256";
        name: "deposit";
        type: "uint256";
    }, {
        internalType: "uint256";
        name: "owedDeposit";
        type: "uint256";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }];
    name: "realtimeBalanceOfNow";
    outputs: readonly [{
        internalType: "int256";
        name: "availableBalance";
        type: "int256";
    }, {
        internalType: "uint256";
        name: "deposit";
        type: "uint256";
    }, {
        internalType: "uint256";
        name: "owedDeposit";
        type: "uint256";
    }, {
        internalType: "uint256";
        name: "timestamp";
        type: "uint256";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "operator";
        type: "address";
    }];
    name: "revokeOperator";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "address";
        name: "spender";
        type: "address";
    }, {
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }];
    name: "selfApproveFor";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }, {
        internalType: "bytes";
        name: "userData";
        type: "bytes";
    }];
    name: "selfBurn";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }, {
        internalType: "bytes";
        name: "userData";
        type: "bytes";
    }];
    name: "selfMint";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "holder";
        type: "address";
    }, {
        internalType: "address";
        name: "spender";
        type: "address";
    }, {
        internalType: "address";
        name: "recipient";
        type: "address";
    }, {
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }];
    name: "selfTransferFrom";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "recipient";
        type: "address";
    }, {
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }, {
        internalType: "bytes";
        name: "userData";
        type: "bytes";
    }];
    name: "send";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "int256";
        name: "delta";
        type: "int256";
    }];
    name: "settleBalance";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address[]";
        name: "operators";
        type: "address[]";
    }];
    name: "setupDefaultOperators";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [];
    name: "symbol";
    outputs: readonly [{
        internalType: "string";
        name: "";
        type: "string";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "bytes32";
        name: "id";
        type: "bytes32";
    }, {
        internalType: "uint256";
        name: "dataLength";
        type: "uint256";
    }];
    name: "terminateAgreement";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }];
    name: "toUnderlyingAmount";
    outputs: readonly [{
        internalType: "uint256";
        name: "underlyingAmount";
        type: "uint256";
    }, {
        internalType: "uint256";
        name: "adjustedAmount";
        type: "uint256";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [];
    name: "totalSupply";
    outputs: readonly [{
        internalType: "uint256";
        name: "";
        type: "uint256";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "recipient";
        type: "address";
    }, {
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }];
    name: "transfer";
    outputs: readonly [{
        internalType: "bool";
        name: "";
        type: "bool";
    }];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "recipient";
        type: "address";
    }];
    name: "transferAll";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "holder";
        type: "address";
    }, {
        internalType: "address";
        name: "recipient";
        type: "address";
    }, {
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }];
    name: "transferFrom";
    outputs: readonly [{
        internalType: "bool";
        name: "";
        type: "bool";
    }];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "from";
        type: "address";
    }, {
        internalType: "address";
        name: "to";
        type: "address";
    }, {
        internalType: "uint256";
        name: "value";
        type: "uint256";
    }];
    name: "transferInternal";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "bytes32";
        name: "id";
        type: "bytes32";
    }, {
        internalType: "bytes32[]";
        name: "data";
        type: "bytes32[]";
    }];
    name: "updateAgreementData";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "uint256";
        name: "slotId";
        type: "uint256";
    }, {
        internalType: "bytes32[]";
        name: "slotData";
        type: "bytes32[]";
    }];
    name: "updateAgreementStateSlot";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "newAddress";
        type: "address";
    }];
    name: "updateCode";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }];
    name: "upgrade";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "to";
        type: "address";
    }, {
        internalType: "uint256";
        name: "amount";
        type: "uint256";
    }, {
        internalType: "bytes";
        name: "userData";
        type: "bytes";
    }];
    name: "upgradeTo";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [];
    name: "waterMark";
    outputs: readonly [{
        internalType: "uint256";
        name: "";
        type: "uint256";
    }];
    stateMutability: "view";
    type: "function";
}]
bytecode: "0x6101406040523480156200001257600080fd5b50604051620054243803806200542483398101604081905262000035916200015f565b6001600160a01b0380871660805280851660a081905281851660c0528184166101005290821660e05260405187918691869186918691907fcf554eb342edf010a94e07701ae91e99e90b769f649f03aeb1153654ddd43c0190600090a26040516001600160a01b038416907f8837af285f4d380af9227df9ebafa13d992b487fa6d7a4366bd4154576085b8990600090a26040516001600160a01b038316907feb87fb34067547f3dc0b85096c3da73c99d4fbb08ff41212b8d7c0b5008b42e690600090a26040516001600160a01b038216907fc1050c54a299c837fe281a2623c29ec8e34b455daef48760b6a29f4b6cc9906090600090a25050506101209690965250620001e795505050505050565b6001600160a01b03811681146200015c57600080fd5b50565b60008060008060008060c087890312156200017957600080fd5b8651620001868162000146565b602088015160408901519197509550620001a08162000146565b6060880151909450620001b38162000146565b6080880151909350620001c68162000146565b60a0880151909250620001d98162000146565b809150509295509295509295565b60805160a05160c05160e051610100516101205161515a620002ca600039600061072b015260006108ac01526000610a300152600081816106a90152611640015260008181610a0901526115a30152600081816104f801528181610d0c01528181610d7b015281816110c3015281816111f3015281816112c2015281816114e201528181611690015281816117dd0152818161197d01528181611a5c01528181611e5d01528181611f2701528181611fbf01528181612027015281816120af0152818161295f015281816129f601528181613b770152613db6015261515a6000f3fe608060405234801561001057600080fd5b50600436106104285760003560e01c80636c2d9f2f1161022b578063b84cdd4a11610130578063dd62ed3e116100b8578063ef43d2c611610087578063ef43d2c614610a04578063f5a8b4dd14610a2b578063fad8b32a14610a52578063fc673c4f14610a65578063fe9d930314610a7857600080fd5b8063dd62ed3e14610979578063eb3537cc146109b2578063ec0d6343146109e0578063ee719bc8146109f357600080fd5b8063ca0c1e7f116100ff578063ca0c1e7f1461091a578063ca7894641461092d578063cf97256d14610940578063d95b637114610953578063d9d078d61461096657600080fd5b8063b84cdd4a146108ce578063bb0d196e146108e1578063c68d4283146108f4578063c780fd821461090757600080fd5b80639903ad38116101b3578063a3a7e7f311610182578063a3a7e7f31461085b578063a457c2d71461086e578063a9059cbb14610881578063b1f0b5be14610894578063b20db1ac146108a757600080fd5b80639903ad381461081a5780639bd9bbc6146108225780639d87674114610835578063a1b2bf8b1461084857600080fd5b806383ba2525116101fa57806383ba2525146107c75780638f283970146107da57806392081a47146107ed578063959b8c3f146107ff57806395d89b411461081257600080fd5b80636c2d9f2f146107865780636e9960c31461079957806370a08231146107a157806379359f6f146107b457600080fd5b8063395093511161033157806350d75d25116102b95780635b9d09cc116102885780635b9d09cc146107135780636154b1021461072657806362aa52871461074d57806362ad1b831461076057806366a12fb61461077357600080fd5b806350d75d25146106cb57806352d1902d146106d3578063556f0dc7146106f957806356189cb41461070057600080fd5b806345977d031161030057806345977d031461064b578063469519541461065e5780634b2763b3146106715780634b61cc33146106845780634c5c0c85146106a457600080fd5b806339509351146105ff578063397be9311461061257806341b706be1461062557806342fe09801461063857600080fd5b806320bc4425116103b457806327048397116103835780632704839714610569578063282a050b1461057c5780632ec8eec7146105a4578063313ce567146105d7578063386fa221146105ec57600080fd5b806320bc4425146104f6578063222f5be01461053057806323b872dd14610543578063245887fc1461055657600080fd5b806311bcc81e116103fb57806311bcc81e1461049857806312a6a3f8146104ab57806316d055d6146104be57806318160ddd146104d15780631863e809146104e357600080fd5b806306e485381461042d57806306fdde031461044b578063090c415e14610460578063095ea7b314610475575b600080fd5b610435610a8b565b6040516104429190614041565b60405180910390f35b610453610a9c565b60405161044291906140de565b61047361046e366004614151565b610b2e565b005b6104886104833660046141ac565b610be1565b6040519015158152602001610442565b6104736104a63660046141d8565b610bf8565b6104736104b93660046141f1565b610c27565b6104736104cc36600461423c565b610d0a565b6003545b604051908152602001610442565b6104736104f1366004614350565b610d66565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610442565b61047361053e3660046143e2565b611099565b6104886105513660046143e2565b6110ab565b6104736105643660046141ac565b6110c1565b610473610577366004614423565b61113a565b61058f61058a3660046141d8565b6111d6565b60408051928352602083019190915201610442565b6105b76105b2366004614445565b6111eb565b604080519485526020850193909352918301526060820152608001610442565b60125b60405160ff9091168152602001610442565b6104356105fa366004614445565b61128e565b61048861060d3660046141ac565b611331565b610473610620366004614485565b61136d565b61047361063336600461423c565b611376565b61047361064636600461456f565b6113a2565b6104736106593660046141d8565b611483565b61047361066c366004614445565b6114af565b61047361067f3660046143e2565b61168e565b610697610692366004614601565b611710565b6040516104429190614647565b6105187f000000000000000000000000000000000000000000000000000000000000000081565b610518611755565b7f6bfbb132610e56cb96575dba244667b9d6dbfeffe22b68a79fa16f2d18eb00196104d5565b60016104d5565b61047361070e3660046143e2565b61177f565b61047361072136600461467f565b61178a565b6104d57f000000000000000000000000000000000000000000000000000000000000000081565b61047361075b3660046143e2565b6117db565b61047361076e3660046146ce565b611824565b6104736107813660046143e2565b6118d2565b61069761079436600461476c565b6118f2565b610518611934565b6104d56107af366004614445565b61194c565b6104886107c2366004614445565b611975565b6104736107d53660046141ac565b6119fd565b6104736107e8366004614445565b611a29565b600e54600160a01b900460ff166105da565b61047361080d366004614445565b611b1d565b610453611b6e565b610473611b7d565b61047361083036600461467f565b611c3f565b6104736108433660046147a1565b611c93565b6104736108563660046141f1565b611cd9565b610473610869366004614445565b611d83565b61048861087c3660046141ac565b611d97565b61048861088f3660046141ac565b611de6565b6104736108a23660046147f9565b611df4565b6105187f000000000000000000000000000000000000000000000000000000000000000081565b6104886108dc3660046141ac565b611e04565b6104886108ef366004614445565b611e55565b6104736109023660046147a1565b611edd565b6104736109153660046143e2565b611f25565b610473610928366004614878565b611fbd565b61047361093b3660046141ac565b612025565b61047361094e3660046141ac565b61209a565b6104886109613660046148d7565b612183565b6104886109743660046141ac565b612191565b6104d56109873660046148d7565b6001600160a01b03918216600090815260116020908152604080832093909416825291909152205490565b6109c56109c03660046141ac565b6121ab565b60408051938452602084019290925290820152606001610442565b6104736109ee366004614910565b6122df565b600e546001600160a01b0316610518565b6105187f000000000000000000000000000000000000000000000000000000000000000081565b6105187f000000000000000000000000000000000000000000000000000000000000000081565b610473610a60366004614445565b6123b6565b610473610a733660046149b6565b612407565b610473610a863660046149fd565b6124a8565b6060610a9760126124f9565b905090565b6060600f8054610aab90614a3b565b80601f0160208091040260200160405190810160405280929190818152602001828054610ad790614a3b565b8015610b245780601f10610af957610100808354040283529160200191610b24565b820191906000526020600020905b815481529060010190602001808311610b0757829003601f168201915b5050505050905090565b6000338585604051602001610b4593929190614a75565b604051602081830303815290604052805190602001209050610b9a8184848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061255f92505050565b6040518481526001600160a01b0386169033907f30f416fa68fca014a0f334464c64b000ba53e99b6d2afdea9d5ca756372d59859060200160405180910390a35050505050565b6000610bee338484612597565b5060015b92915050565b610c24333333846040518060200160405280600081525060405180602001604052806000815250612646565b50565b6040513390600090610c3f9083908790602001614abe565b60408051601f1981840301815291905280516020909101209050610c638184612806565b15610c815760405163782a90fb60e11b815260040160405180910390fd5b610cbe8185858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061255f92505050565b816001600160a01b03167f770ea40a13a4644573ed785e5c7116890709947918747febc5add46feb531e2d868686604051610cfb93929190614afb565b60405180910390a25050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314610d535760405163c51efddd60e01b815260040160405180910390fd5b610d5f8484848461283a565b5050505050565b604051632329212160e21b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690638ca4848490602401602060405180830381865afa158015610dca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dee9190614b3c565b610e0b5760405163327fd99160e21b815260040160405180910390fd5b6000610e1561295a565b90506001600160a01b038116610e285750845b600085610e355786610e37565b815b905060008313610f0557610e4a83614b6f565b610e5385612a9f565b14610e6057610e60614b8b565b610e6984612a9f565b6001600160a01b03821660009081526002602052604081208054909190610e91908490614ba1565b90915550506001600160a01b03851660009081526002602052604081208054859290610ebe908490614ba1565b92505081905550806001600160a01b0316856001600160a01b03166000805160206150d883398151915286604051610ef891815260200190565b60405180910390a3611031565b8515610f1357610f13614b8b565b82610f1d85612a9f565b610f279190614ba1565b6001600160a01b03831660009081526002602052604081208054909190610f4f908490614bc9565b90915550610f5e905084612a9f565b6001600160a01b03881660009081526002602052604081208054909190610f86908490614ba1565b90915550506001600160a01b03851660009081526002602052604081208054859290610fb3908490614ba1565b92505081905550866001600160a01b0316826001600160a01b03166000805160206150d883398151915286604051610fed91815260200190565b60405180910390a3846001600160a01b0316826001600160a01b03166000805160206150d88339815191528560405161102891815260200190565b60405180910390a35b846001600160a01b0316876001600160a01b0316336001600160a01b03167fb8381a3ce157650e06186e3e8f4dd4dc29236f2688b6eed1893d0a60d7c6386f8c8589898f604051611086959493929190614be9565b60405180910390a4505050505050505050565b6110a58384848461283a565b50505050565b60006110b93385858561283a565b949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316331461110a5760405163c51efddd60e01b815260040160405180910390fd5b611136338384846040518060200160405280600081525060405180602001604052806000815250612646565b5050565b60405133906000906111529083908690602001614abe565b6040516020818303038152906040528051906020012090506111748184612806565b6111915760405163dae1880960e01b815260040160405180910390fd5b61119b8184612b0d565b60405184815233907f71a63dc095de07aa5512ad57a7596a39516317e316981a1cd71000057be1537b9060200160405180910390a250505050565b6000806111e283612b26565b91509150915091565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa15801561124f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112739190614c1c565b905061127f85826121ab565b91979096509094509092509050565b6001600160a01b038181166000908152600160205260409081902054905163c56a069d60e01b8152901960048201526060917f0000000000000000000000000000000000000000000000000000000000000000169063c56a069d90602401600060405180830381865afa158015611309573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bf29190810190614c35565b3360008181526011602090815260408083206001600160a01b03871684529091528120549091610bee918590611368908690614cc3565b612597565b610c2481612be2565b33301461139657604051630fff4cc960e31b815260040160405180910390fd5b610d5f8385848461283a565b600054610100900460ff16158080156113c25750600054600160ff909116105b806113dc5750303b1580156113dc575060005460ff166001145b6114015760405162461bcd60e51b81526004016113f890614cd6565b60405180910390fd5b6000805460ff191660011790558015611424576000805461ff0019166101001790555b6114348787878787876000612bed565b801561147a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b610c24333333846040518060200160405280600081525060405180602001604052806000815250612cb5565b60006114c760008051602061508e8339815191525490565b905060006001600160a01b038216156114e05781611502565b7f00000000000000000000000000000000000000000000000000000000000000005b9050336001600160a01b0382161461152d57604051630484acab60e01b815260040160405180910390fd5b61153683612e68565b826001600160a01b031663ef43d2c66040518163ffffffff1660e01b8152600401602060405180830381865afa158015611574573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115989190614d24565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614158061166b5750826001600160a01b0316634c5c0c856040518163ffffffff1660e01b8152600401602060405180830381865afa158015611611573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116359190614d24565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614155b156116895760405163ef1b6ddf60e01b815260040160405180910390fd5b505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146116d75760405163c51efddd60e01b815260040160405180910390fd5b6001600160a01b038084166000908152601160209081526040808320938616835292905220546116899084908490611368908590614cc3565b6060600085858560405160200161172993929190614a75565b60405160208183030381529060405280519060200120905061174b81846130a2565b9695505050505050565b6000610a977f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b611689838383612597565b6110a53333868686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602081019091529081529250612cb5915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316331461177f5760405163c51efddd60e01b815260040160405180910390fd5b336118316012828a613129565b61184e5760405163f7f0222760e01b815260040160405180910390fd5b6118c88189898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a9081908401838280828437600092019190915250600192506131d2915050565b5050505050505050565b33301461177f57604051630fff4cc960e31b815260040160405180910390fd5b606060008484604051602001611909929190614abe565b60405160208183030381529060405280519060200120905061192b81846130a2565b95945050505050565b6000610a9760008051602061508e8339815191525490565b600080611958836111eb565b50505090506000811261196b578061196e565b60005b9392505050565b6000610bf2827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109749190614c1c565b611136333384846040518060200160405280600081525060405180602001604052806000815250612646565b6000611a4160008051602061508e8339815191525490565b905060006001600160a01b03821615611a5a5781611a7c565b7f00000000000000000000000000000000000000000000000000000000000000005b9050336001600160a01b03821614611aa757604051630484acab60e01b815260040160405180910390fd5b6000611abf60008051602061508e8339815191525490565b9050611ad78460008051602061508e83398151915255565b836001600160a01b0316816001600160a01b03167f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f60405160405180910390a350505050565b33611b2a6012828461324b565b806001600160a01b0316826001600160a01b03167ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f960405160405180910390a35050565b606060108054610aab90614a3b565b600054610100900460ff1615808015611b9d5750600054600160ff909116105b80611bb75750303b158015611bb7575060005460ff166001145b611bd35760405162461bcd60e51b81526004016113f890614cd6565b6000805460ff191660011790558015611bf6576000805461ff0019166101001790555b8015610c24576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a150565b6110a53333868686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602081019091529081529250600191506131d29050565b333014611cb357604051630fff4cc960e31b815260040160405180910390fd5b80516040805160008152602081019091526116899133918691869190151590869061334f565b6040513390600090611cf19083908790602001614abe565b604051602081830303815290604052805190602001209050611d468185858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061255f92505050565b336001600160a01b03167f0c4c547b3a4fcaa5be8353b3111472b124155bccc86de811d4a481c9e6e9faca868686604051610cfb93929190614afb565b611136333383611d923361194c565b61283a565b6000610bee3384611368856040518060600160405280602a81526020016150ae602a91393360009081526011602090815260408083206001600160a01b038d168452909152902054919061341c565b600061196e3333858561283a565b6110a53385856001808787613448565b600080600080611e1486866121ab565b9250925092506000611e3c828411611e2d576000612a9f565b611e378385614d41565b612a9f565b611e469085614ba1565b60001315979650505050505050565b6000610bf2827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa158015611eb9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108dc9190614c1c565b333014611efd57604051630fff4cc960e31b815260040160405180910390fd5b8051604080516000815260208101909152611689913391869186919015159081908790613448565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314611f6e5760405163c51efddd60e01b815260040160405180910390fd5b6116898383611368846040518060600160405280602a81526020016150ae602a91396001600160a01b03808a166000908152601160209081526040808320938c1683529290522054919061341c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146120065760405163c51efddd60e01b815260040160405180910390fd5b6110a533858585856040518060200160405280600081525060016131d2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316331461206e5760405163c51efddd60e01b815260040160405180910390fd5b611136338384846040518060200160405280600081525060405180602001604052806000815250612cb5565b604051632329212160e21b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690638ca4848490602401602060405180830381865afa1580156120fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121229190614b3c565b61213f5760405163327fd99160e21b815260040160405180910390fd5b6001600160a01b038216600090815260026020526040902054612163908290614ba1565b6001600160a01b0390921660009081526002602052604090209190915550565b600061196e60128484613129565b60008061219e84846121ab565b5050600013949350505050565b6001600160a01b0382166000908152600260205260408120549080806121d08661128e565b905060005b81518110156122d65760008060008484815181106121f5576121f5614d54565b60209081029190910101516040516326cb922f60e21b81523060048201526001600160a01b038c81166024830152604482018c905290911690639b2e48bc90606401606060405180830381865afa158015612254573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122789190614d6a565b919450925090506122898288614cc3565b96506122958187614cc3565b95506122b28183116122a8576000612a9f565b611e378284614d41565b6122bc848a614ba1565b6122c69190614bc9565b97505050508060010190506121d5565b50509250925092565b600054610100900460ff16158080156122ff5750600054600160ff909116105b806123195750303b158015612319575060005460ff166001145b6123355760405162461bcd60e51b81526004016113f890614cd6565b6000805460ff191660011790558015612358576000805461ff0019166101001790555b61236788888888888888612bed565b80156118c8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050505050565b336123c360128284613516565b806001600160a01b0316826001600160a01b03167f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa160405160405180910390a35050565b3361241460128289613129565b6124315760405163f7f0222760e01b815260040160405180910390fd5b61147a8188898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525061264692505050565b6116893333338686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602081019091529081529250612646915050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561255357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612535575b50505050509050919050565b60005b815181101561168957600082828151811061257f5761257f614d54565b60209081029190910101518483015550600101612562565b6001600160a01b0383166125be57604051638163862760e01b815260040160405180910390fd5b6001600160a01b0382166125e5576040516337c1c09d60e21b815260040160405180910390fd5b6001600160a01b0383811660008181526011602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600e546001600160a01b031661266f57604051637bce7b2b60e11b815260040160405180910390fd5b60008061267b85612b26565b91509150612692888883875160001415888861334f565b600e546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156126db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ff9190614c1c565b600e54909150612719906001600160a01b0316888561360e565b600e546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015612762573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127869190614c1c565b905060006127948284614d41565b90508085146127b657604051631c7c26d360e31b815260040160405180910390fd5b896001600160a01b03167f3bc27981aebbb57f9247dc00fde9d6cd91e4b230083fec3238fedbcba1f9ab3d856040516127f191815260200190565b60405180910390a25050505050505050505050565b6000805b828110156128305783810154801561282757600192505050610bf2565b5060010161280a565b5060009392505050565b60006001600160a01b0384166128635760405163eecd6c9b60e01b815260040160405180910390fd5b6001600160a01b03831661288a5760405163e219bd3960e01b815260040160405180910390fd5b60003390506128bb818686866040518060200160405280600081525060405180602001604052806000815250613671565b846001600160a01b0316866001600160a01b03161461294e5761294e8587611368866040518060600160405280602d81526020016150f8602d9139601160008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008d6001600160a01b03166001600160a01b031681526020019081526020016000205461341c9092919063ffffffff16565b50600195945050505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129df9190614d24565b604051638369a0f160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301523060248301527f9f60ae461adf056670e03ae602566409933242392cb06744f5747c9f38b05d09604483015291925090821690638369a0f190606401602060405180830381865afa158015612a75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a999190614d24565b91505090565b60006001600160ff1b03821115612b095760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016113f8565b5090565b60005b8181101561168957600083820155600101612b10565b600e54600090819081906012600160a01b90910460ff161015612b8557600e54612b5b90600160a01b900460ff166012614d98565b612b6690600a614e95565b9050612b728185614ea4565b9250612b7e8184614ec6565b9150612bdc565b600e546012600160a01b90910460ff161115612bd557600e54612bb490601290600160a01b900460ff16614d98565b612bbf90600a614e95565b9050612bcb8185614ec6565b9250839150612bdc565b8391508192505b50915091565b610c24601282613710565b600e805460ff8816600160a01b026001600160a81b03199091166001600160a01b038a1617179055600f612c22858783614f2d565b506010612c30838583614f2d565b50612c478160008051602061508e83398151915255565b612c5030613792565b60405160008082529081906000805160206150d88339815191529060200160405180910390a36040516001600160a01b038216906000907f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f908290a350505050505050565b600e546001600160a01b0316612cde57604051637bce7b2b60e11b815260040160405180910390fd5b600080612cea85612b26565b600e546040516370a0823160e01b81523060048201529294509092506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015612d3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d5f9190614c1c565b600e54909150612d7a906001600160a01b03168930866138c0565b600e546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015612dc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de79190614c1c565b90506000612df58383614d41565b9050808514612e1757604051631c7c26d360e31b815260040160405180910390fd5b8651612e2d908c908b9087901515808c8c613448565b886001600160a01b03167f25ca84076773b0455db53621c459ddc84fe40840e4932a62706a032566f399df856040516127f191815260200190565b6000612e927f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b031603612ee85760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c6500000060448201526064016113f8565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f4a9190614c1c565b7f6bfbb132610e56cb96575dba244667b9d6dbfeffe22b68a79fa16f2d18eb001914612fc45760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b60648201526084016113f8565b6001600160a01b038116300361301c5760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f700000000000000060448201526064016113f8565b613044817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc7f6bfbb132610e56cb96575dba244667b9d6dbfeffe22b68a79fa16f2d18eb0019604080519182526001600160a01b038416602083015201611c34565b6060816001600160401b038111156130bc576130bc61428d565b6040519080825280602002602001820160405280156130e5578160200160208202803683370190505b50905060005b828110156131225760008185015490508083838151811061310e5761310e614d54565b6020908102919091010152506001016130eb565b5092915050565b6000816001600160a01b0316836001600160a01b0316148061319857506001600160a01b038316600090815260018501602052604090205460ff16801561319857506001600160a01b03808316600090815260038601602090815260408083209387168352929052205460ff16155b806110b957506001600160a01b03808316600090815260028601602090815260408083209387168352929052205460ff1690509392505050565b6001600160a01b0386166131f95760405163eecd6c9b60e01b815260040160405180910390fd5b6001600160a01b0385166132205760405163e219bd3960e01b815260040160405180910390fd5b61322e8787878787876138f8565b61323c878787878787613671565b61147a87878787878787613a1f565b806001600160a01b0316826001600160a01b0316036132c25760405162461bcd60e51b815260206004820152602d60248201527f4552433737374f70657261746f72733a20617574686f72697a696e672073656c60448201526c331030b99037b832b930ba37b960991b60648201526084016113f8565b6001600160a01b038116600090815260018401602052604090205460ff1615613318576001600160a01b03918216600090815260039390930160209081526040808520929093168452529020805460ff19169055565b6001600160a01b0380831660009081526002850160209081526040808320938516835292905220805460ff19166001179055505050565b6001600160a01b03851661337657604051632e8aac6160e21b815260040160405180910390fd5b821561338b5761338b868660008786866138f8565b6133958585613b6f565b846001600160a01b0316866001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a40988685856040516133dc93929190614fec565b60405180910390a36040518481526000906001600160a01b038716906000805160206150d8833981519152906020015b60405180910390a3505050505050565b600081848411156134405760405162461bcd60e51b81526004016113f891906140de565b505050900390565b6001600160a01b03861661346f57604051630d24315760e01b815260040160405180910390fd5b6134798686613c7f565b831561348f5761348f8760008888868689613a1f565b856001600160a01b0316876001600160a01b03167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d8785856040516134d693929190614fec565b60405180910390a36040518581526001600160a01b038716906000906000805160206150d88339815191529060200160405180910390a350505050505050565b336001600160a01b038216036135815760405162461bcd60e51b815260206004820152602a60248201527f4552433737374f70657261746f72733a207265766f6b696e672073656c662061604482015269399037b832b930ba37b960b11b60648201526084016113f8565b6001600160a01b038116600090815260018401602052604090205460ff16156135db576001600160a01b0380831660009081526003850160209081526040808320938516835292905220805460ff19166001179055505050565b6001600160a01b03918216600090815260029390930160209081526040808520929093168452529020805460ff19169055565b6040516001600160a01b03831660248201526044810182905261168990849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613cd9565b613684858561367f86612a9f565b613dae565b836001600160a01b0316856001600160a01b0316876001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc826146779878686866040516136d593929190614fec565b60405180910390a4836001600160a01b0316856001600160a01b03166000805160206150d88339815191528560405161340c91815260200190565b81541561371f5761371f614b8b565b80516137319083906020840190613fd0565b5060005b815181101561168957600183600101600084848151811061375857613758614d54565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055600101613735565b6040516329965a1d60e01b81526001600160a01b03821660048201527fac7fbab5f54a3ca8194167523c6753bfeb96a445279294b6125b68cce21770546024820152306044820152731820a4b7618bde71dce8cdc73aab6c95905fad24906329965a1d90606401600060405180830381600087803b15801561381357600080fd5b505af1158015613827573d6000803e3d6000fd5b50506040516329965a1d60e01b81526001600160a01b03841660048201527faea199e31a596269b42cdafd93407f14436db6e4cad65417994c2eb37381e05a6024820152306044820152731820a4b7618bde71dce8cdc73aab6c95905fad2492506329965a1d9150606401600060405180830381600087803b1580156138ac57600080fd5b505af1158015610d5f573d6000803e3d6000fd5b6040516001600160a01b03808516602483015283166044820152606481018290526110a59085906323b872dd60e01b9060840161363a565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa158015613979573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061399d9190614d24565b90506001600160a01b0381161561147a57604051633ad5cbc160e11b81526001600160a01b038216906375ab9782906139e4908a908a908a908a908a908a90600401615017565b600060405180830381600087803b1580156139fe57600080fd5b505af1158015613a12573d6000803e3d6000fd5b5050505050505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa158015613aa0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ac49190614d24565b90506001600160a01b03811615613b40576040516223de2960e01b81526001600160a01b038216906223de2990613b09908b908b908b908b908b908b90600401615017565b600060405180830381600087803b158015613b2357600080fd5b505af1158015613b37573d6000803e3d6000fd5b505050506118c8565b81156118c8576001600160a01b0386163b156118c85760405163fe737d0560e01b815260040160405180910390fd5b6000613bf7837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bd3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c09190614c1c565b50509050613c0482612a9f565b811215613c245760405163043b37d160e21b815260040160405180910390fd5b613c2d82612a9f565b6001600160a01b038416600090815260026020526040902054613c509190614bc9565b6001600160a01b038416600090815260026020526040902055600354613c77908390614d41565b600355505050565b613c8881612a9f565b6001600160a01b038316600090815260026020526040902054613cab9190614ba1565b6001600160a01b038316600090815260026020526040902055600354613cd2908290614cc3565b6003555050565b6000613d2e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613ead9092919063ffffffff16565b9050805160001480613d4f575080806020019051810190613d4f9190614b3c565b6116895760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016113f8565b6000613e12847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bd3573d6000803e3d6000fd5b5050905081811215613e3757604051632f4cb94160e01b815260040160405180910390fd5b6001600160a01b038416600090815260026020526040902054613e5b908390614bc9565b6001600160a01b038086166000908152600260205260408082209390935590851681522054613e8b908390614ba1565b6001600160a01b03909316600090815260026020526040902092909255505050565b60606110b9848460008585600080866001600160a01b03168587604051613ed49190615071565b60006040518083038185875af1925050503d8060008114613f11576040519150601f19603f3d011682016040523d82523d6000602084013e613f16565b606091505b5091509150613f2787838387613f32565b979650505050505050565b60608315613fa1578251600003613f9a576001600160a01b0385163b613f9a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016113f8565b50816110b9565b6110b98383815115613fb65781518083602001fd5b8060405162461bcd60e51b81526004016113f891906140de565b828054828255906000526020600020908101928215614025579160200282015b8281111561402557825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190613ff0565b50612b099291505b80821115612b09576000815560010161402d565b6020808252825182820181905260009190848201906040850190845b818110156140825783516001600160a01b03168352928401929184019160010161405d565b50909695505050505050565b60005b838110156140a9578181015183820152602001614091565b50506000910152565b600081518084526140ca81602086016020860161408e565b601f01601f19169290920160200192915050565b60208152600061196e60208301846140b2565b6001600160a01b0381168114610c2457600080fd5b60008083601f84011261411857600080fd5b5081356001600160401b0381111561412f57600080fd5b6020830191508360208260051b850101111561414a57600080fd5b9250929050565b6000806000806060858703121561416757600080fd5b8435614172816140f1565b93506020850135925060408501356001600160401b0381111561419457600080fd5b6141a087828801614106565b95989497509550505050565b600080604083850312156141bf57600080fd5b82356141ca816140f1565b946020939093013593505050565b6000602082840312156141ea57600080fd5b5035919050565b60008060006040848603121561420657600080fd5b8335925060208401356001600160401b0381111561422357600080fd5b61422f86828701614106565b9497909650939450505050565b6000806000806080858703121561425257600080fd5b843561425d816140f1565b9350602085013561426d816140f1565b9250604085013561427d816140f1565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156142cb576142cb61428d565b604052919050565b600082601f8301126142e457600080fd5b81356001600160401b038111156142fd576142fd61428d565b614310601f8201601f19166020016142a3565b81815284602083860101111561432557600080fd5b816020850160208301376000918101602001919091529392505050565b8015158114610c2457600080fd5b600080600080600080600060e0888a03121561436b57600080fd5b8735965060208801356001600160401b0381111561438857600080fd5b6143948a828b016142d3565b96505060408801356143a5816140f1565b945060608801356143b581614342565b935060808801356143c5816140f1565b9699959850939692959460a0840135945060c09093013592915050565b6000806000606084860312156143f757600080fd5b8335614402816140f1565b92506020840135614412816140f1565b929592945050506040919091013590565b6000806040838503121561443657600080fd5b50508035926020909101359150565b60006020828403121561445757600080fd5b813561196e816140f1565b60006001600160401b0382111561447b5761447b61428d565b5060051b60200190565b6000602080838503121561449857600080fd5b82356001600160401b038111156144ae57600080fd5b8301601f810185136144bf57600080fd5b80356144d26144cd82614462565b6142a3565b81815260059190911b820183019083810190878311156144f157600080fd5b928401925b82841015613f27578335614509816140f1565b825292840192908401906144f6565b803560ff8116811461452957600080fd5b919050565b60008083601f84011261454057600080fd5b5081356001600160401b0381111561455757600080fd5b60208301915083602082850101111561414a57600080fd5b6000806000806000806080878903121561458857600080fd5b8635614593816140f1565b95506145a160208801614518565b945060408701356001600160401b03808211156145bd57600080fd5b6145c98a838b0161452e565b909650945060608901359150808211156145e257600080fd5b506145ef89828a0161452e565b979a9699509497509295939492505050565b6000806000806080858703121561461757600080fd5b8435614622816140f1565b93506020850135614632816140f1565b93969395505050506040820135916060013590565b6020808252825182820181905260009190848201906040850190845b8181101561408257835183529284019291840191600101614663565b6000806000806060858703121561469557600080fd5b84356146a0816140f1565b93506020850135925060408501356001600160401b038111156146c257600080fd5b6141a08782880161452e565b600080600080600080600060a0888a0312156146e957600080fd5b87356146f4816140f1565b96506020880135614704816140f1565b95506040880135945060608801356001600160401b038082111561472757600080fd5b6147338b838c0161452e565b909650945060808a013591508082111561474c57600080fd5b506147598a828b0161452e565b989b979a50959850939692959293505050565b60008060006060848603121561478157600080fd5b833561478c816140f1565b95602085013595506040909401359392505050565b6000806000606084860312156147b657600080fd5b83356147c1816140f1565b92506020840135915060408401356001600160401b038111156147e357600080fd5b6147ef868287016142d3565b9150509250925092565b6000806000806080858703121561480f57600080fd5b843561481a816140f1565b93506020850135925060408501356001600160401b038082111561483d57600080fd5b614849888389016142d3565b9350606087013591508082111561485f57600080fd5b5061486c878288016142d3565b91505092959194509250565b6000806000806080858703121561488e57600080fd5b8435614899816140f1565b935060208501356148a9816140f1565b92506040850135915060608501356001600160401b038111156148cb57600080fd5b61486c878288016142d3565b600080604083850312156148ea57600080fd5b82356148f5816140f1565b91506020830135614905816140f1565b809150509250929050565b600080600080600080600060a0888a03121561492b57600080fd5b8735614936816140f1565b965061494460208901614518565b955060408801356001600160401b038082111561496057600080fd5b61496c8b838c0161452e565b909750955060608a013591508082111561498557600080fd5b506149928a828b0161452e565b90945092505060808801356149a6816140f1565b8091505092959891949750929550565b600080600080600080608087890312156149cf57600080fd5b86356149da816140f1565b95506020870135945060408701356001600160401b03808211156145bd57600080fd5b600080600060408486031215614a1257600080fd5b8335925060208401356001600160401b03811115614a2f57600080fd5b61422f8682870161452e565b600181811c90821680614a4f57607f821691505b602082108103614a6f57634e487b7160e01b600052602260045260246000fd5b50919050565b6080808252600e908201526d41677265656d656e74537461746560901b60a08201526001600160a01b039384166020820152919092166040820152606081019190915260c00190565b6060808252600d908201526c41677265656d656e744461746160981b60808201526001600160a01b03929092166020830152604082015260a00190565b838152604060208201819052810182905260006001600160fb1b03831115614b2257600080fd5b8260051b8085606085013791909101606001949350505050565b600060208284031215614b4e57600080fd5b815161196e81614342565b634e487b7160e01b600052601160045260246000fd5b6000600160ff1b8201614b8457614b84614b59565b5060000390565b634e487b7160e01b600052600160045260246000fd5b8082018281126000831280158216821582161715614bc157614bc1614b59565b505092915050565b818103600083128015838313168383128216171561312257613122614b59565b85815260018060a01b038516602082015283604082015282606082015260a060808201526000613f2760a08301846140b2565b600060208284031215614c2e57600080fd5b5051919050565b60006020808385031215614c4857600080fd5b82516001600160401b03811115614c5e57600080fd5b8301601f81018513614c6f57600080fd5b8051614c7d6144cd82614462565b81815260059190911b82018301908381019087831115614c9c57600080fd5b928401925b82841015613f27578351614cb4816140f1565b82529284019290840190614ca1565b80820180821115610bf257610bf2614b59565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b600060208284031215614d3657600080fd5b815161196e816140f1565b81810381811115610bf257610bf2614b59565b634e487b7160e01b600052603260045260246000fd5b600080600060608486031215614d7f57600080fd5b8351925060208401519150604084015190509250925092565b60ff8281168282160390811115610bf257610bf2614b59565b600181815b80851115614dec578160001904821115614dd257614dd2614b59565b80851615614ddf57918102915b93841c9390800290614db6565b509250929050565b600082614e0357506001610bf2565b81614e1057506000610bf2565b8160018114614e265760028114614e3057614e4c565b6001915050610bf2565b60ff841115614e4157614e41614b59565b50506001821b610bf2565b5060208310610133831016604e8410600b8410161715614e6f575081810a610bf2565b614e798383614db1565b8060001904821115614e8d57614e8d614b59565b029392505050565b600061196e60ff841683614df4565b600082614ec157634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610bf257610bf2614b59565b601f821115611689576000816000526020600020601f850160051c81016020861015614f065750805b601f850160051c820191505b81811015614f2557828155600101614f12565b505050505050565b6001600160401b03831115614f4457614f4461428d565b614f5883614f528354614a3b565b83614edd565b6000601f841160018114614f8c5760008515614f745750838201355b600019600387901b1c1916600186901b178355610d5f565b600083815260209020601f19861690835b82811015614fbd5786850135825560209485019460019092019101614f9d565b5086821015614fda5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b83815260606020820152600061500560608301856140b2565b828103604084015261174b81856140b2565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c060808201819052600090615052908301856140b2565b82810360a084015261506481856140b2565b9998505050505050505050565b6000825161508381846020870161408e565b919091019291505056feb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035375706572546f6b656e3a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5375706572546f6b656e3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207113998c3f289916d0409de6d6459a6ed5af6684d9fba3ed913d28e03b195ae364736f6c63430008170033" = "0x6101406040523480156200001257600080fd5b50604051620054243803806200542483398101604081905262000035916200015f565b6001600160a01b0380871660805280851660a081905281851660c0528184166101005290821660e05260405187918691869186918691907fcf554eb342edf010a94e07701ae91e99e90b769f649f03aeb1153654ddd43c0190600090a26040516001600160a01b038416907f8837af285f4d380af9227df9ebafa13d992b487fa6d7a4366bd4154576085b8990600090a26040516001600160a01b038316907feb87fb34067547f3dc0b85096c3da73c99d4fbb08ff41212b8d7c0b5008b42e690600090a26040516001600160a01b038216907fc1050c54a299c837fe281a2623c29ec8e34b455daef48760b6a29f4b6cc9906090600090a25050506101209690965250620001e795505050505050565b6001600160a01b03811681146200015c57600080fd5b50565b60008060008060008060c087890312156200017957600080fd5b8651620001868162000146565b602088015160408901519197509550620001a08162000146565b6060880151909450620001b38162000146565b6080880151909350620001c68162000146565b60a0880151909250620001d98162000146565b809150509295509295509295565b60805160a05160c05160e051610100516101205161515a620002ca600039600061072b015260006108ac01526000610a300152600081816106a90152611640015260008181610a0901526115a30152600081816104f801528181610d0c01528181610d7b015281816110c3015281816111f3015281816112c2015281816114e201528181611690015281816117dd0152818161197d01528181611a5c01528181611e5d01528181611f2701528181611fbf01528181612027015281816120af0152818161295f015281816129f601528181613b770152613db6015261515a6000f3fe608060405234801561001057600080fd5b50600436106104285760003560e01c80636c2d9f2f1161022b578063b84cdd4a11610130578063dd62ed3e116100b8578063ef43d2c611610087578063ef43d2c614610a04578063f5a8b4dd14610a2b578063fad8b32a14610a52578063fc673c4f14610a65578063fe9d930314610a7857600080fd5b8063dd62ed3e14610979578063eb3537cc146109b2578063ec0d6343146109e0578063ee719bc8146109f357600080fd5b8063ca0c1e7f116100ff578063ca0c1e7f1461091a578063ca7894641461092d578063cf97256d14610940578063d95b637114610953578063d9d078d61461096657600080fd5b8063b84cdd4a146108ce578063bb0d196e146108e1578063c68d4283146108f4578063c780fd821461090757600080fd5b80639903ad38116101b3578063a3a7e7f311610182578063a3a7e7f31461085b578063a457c2d71461086e578063a9059cbb14610881578063b1f0b5be14610894578063b20db1ac146108a757600080fd5b80639903ad381461081a5780639bd9bbc6146108225780639d87674114610835578063a1b2bf8b1461084857600080fd5b806383ba2525116101fa57806383ba2525146107c75780638f283970146107da57806392081a47146107ed578063959b8c3f146107ff57806395d89b411461081257600080fd5b80636c2d9f2f146107865780636e9960c31461079957806370a08231146107a157806379359f6f146107b457600080fd5b8063395093511161033157806350d75d25116102b95780635b9d09cc116102885780635b9d09cc146107135780636154b1021461072657806362aa52871461074d57806362ad1b831461076057806366a12fb61461077357600080fd5b806350d75d25146106cb57806352d1902d146106d3578063556f0dc7146106f957806356189cb41461070057600080fd5b806345977d031161030057806345977d031461064b578063469519541461065e5780634b2763b3146106715780634b61cc33146106845780634c5c0c85146106a457600080fd5b806339509351146105ff578063397be9311461061257806341b706be1461062557806342fe09801461063857600080fd5b806320bc4425116103b457806327048397116103835780632704839714610569578063282a050b1461057c5780632ec8eec7146105a4578063313ce567146105d7578063386fa221146105ec57600080fd5b806320bc4425146104f6578063222f5be01461053057806323b872dd14610543578063245887fc1461055657600080fd5b806311bcc81e116103fb57806311bcc81e1461049857806312a6a3f8146104ab57806316d055d6146104be57806318160ddd146104d15780631863e809146104e357600080fd5b806306e485381461042d57806306fdde031461044b578063090c415e14610460578063095ea7b314610475575b600080fd5b610435610a8b565b6040516104429190614041565b60405180910390f35b610453610a9c565b60405161044291906140de565b61047361046e366004614151565b610b2e565b005b6104886104833660046141ac565b610be1565b6040519015158152602001610442565b6104736104a63660046141d8565b610bf8565b6104736104b93660046141f1565b610c27565b6104736104cc36600461423c565b610d0a565b6003545b604051908152602001610442565b6104736104f1366004614350565b610d66565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610442565b61047361053e3660046143e2565b611099565b6104886105513660046143e2565b6110ab565b6104736105643660046141ac565b6110c1565b610473610577366004614423565b61113a565b61058f61058a3660046141d8565b6111d6565b60408051928352602083019190915201610442565b6105b76105b2366004614445565b6111eb565b604080519485526020850193909352918301526060820152608001610442565b60125b60405160ff9091168152602001610442565b6104356105fa366004614445565b61128e565b61048861060d3660046141ac565b611331565b610473610620366004614485565b61136d565b61047361063336600461423c565b611376565b61047361064636600461456f565b6113a2565b6104736106593660046141d8565b611483565b61047361066c366004614445565b6114af565b61047361067f3660046143e2565b61168e565b610697610692366004614601565b611710565b6040516104429190614647565b6105187f000000000000000000000000000000000000000000000000000000000000000081565b610518611755565b7f6bfbb132610e56cb96575dba244667b9d6dbfeffe22b68a79fa16f2d18eb00196104d5565b60016104d5565b61047361070e3660046143e2565b61177f565b61047361072136600461467f565b61178a565b6104d57f000000000000000000000000000000000000000000000000000000000000000081565b61047361075b3660046143e2565b6117db565b61047361076e3660046146ce565b611824565b6104736107813660046143e2565b6118d2565b61069761079436600461476c565b6118f2565b610518611934565b6104d56107af366004614445565b61194c565b6104886107c2366004614445565b611975565b6104736107d53660046141ac565b6119fd565b6104736107e8366004614445565b611a29565b600e54600160a01b900460ff166105da565b61047361080d366004614445565b611b1d565b610453611b6e565b610473611b7d565b61047361083036600461467f565b611c3f565b6104736108433660046147a1565b611c93565b6104736108563660046141f1565b611cd9565b610473610869366004614445565b611d83565b61048861087c3660046141ac565b611d97565b61048861088f3660046141ac565b611de6565b6104736108a23660046147f9565b611df4565b6105187f000000000000000000000000000000000000000000000000000000000000000081565b6104886108dc3660046141ac565b611e04565b6104886108ef366004614445565b611e55565b6104736109023660046147a1565b611edd565b6104736109153660046143e2565b611f25565b610473610928366004614878565b611fbd565b61047361093b3660046141ac565b612025565b61047361094e3660046141ac565b61209a565b6104886109613660046148d7565b612183565b6104886109743660046141ac565b612191565b6104d56109873660046148d7565b6001600160a01b03918216600090815260116020908152604080832093909416825291909152205490565b6109c56109c03660046141ac565b6121ab565b60408051938452602084019290925290820152606001610442565b6104736109ee366004614910565b6122df565b600e546001600160a01b0316610518565b6105187f000000000000000000000000000000000000000000000000000000000000000081565b6105187f000000000000000000000000000000000000000000000000000000000000000081565b610473610a60366004614445565b6123b6565b610473610a733660046149b6565b612407565b610473610a863660046149fd565b6124a8565b6060610a9760126124f9565b905090565b6060600f8054610aab90614a3b565b80601f0160208091040260200160405190810160405280929190818152602001828054610ad790614a3b565b8015610b245780601f10610af957610100808354040283529160200191610b24565b820191906000526020600020905b815481529060010190602001808311610b0757829003601f168201915b5050505050905090565b6000338585604051602001610b4593929190614a75565b604051602081830303815290604052805190602001209050610b9a8184848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061255f92505050565b6040518481526001600160a01b0386169033907f30f416fa68fca014a0f334464c64b000ba53e99b6d2afdea9d5ca756372d59859060200160405180910390a35050505050565b6000610bee338484612597565b5060015b92915050565b610c24333333846040518060200160405280600081525060405180602001604052806000815250612646565b50565b6040513390600090610c3f9083908790602001614abe565b60408051601f1981840301815291905280516020909101209050610c638184612806565b15610c815760405163782a90fb60e11b815260040160405180910390fd5b610cbe8185858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061255f92505050565b816001600160a01b03167f770ea40a13a4644573ed785e5c7116890709947918747febc5add46feb531e2d868686604051610cfb93929190614afb565b60405180910390a25050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314610d535760405163c51efddd60e01b815260040160405180910390fd5b610d5f8484848461283a565b5050505050565b604051632329212160e21b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690638ca4848490602401602060405180830381865afa158015610dca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dee9190614b3c565b610e0b5760405163327fd99160e21b815260040160405180910390fd5b6000610e1561295a565b90506001600160a01b038116610e285750845b600085610e355786610e37565b815b905060008313610f0557610e4a83614b6f565b610e5385612a9f565b14610e6057610e60614b8b565b610e6984612a9f565b6001600160a01b03821660009081526002602052604081208054909190610e91908490614ba1565b90915550506001600160a01b03851660009081526002602052604081208054859290610ebe908490614ba1565b92505081905550806001600160a01b0316856001600160a01b03166000805160206150d883398151915286604051610ef891815260200190565b60405180910390a3611031565b8515610f1357610f13614b8b565b82610f1d85612a9f565b610f279190614ba1565b6001600160a01b03831660009081526002602052604081208054909190610f4f908490614bc9565b90915550610f5e905084612a9f565b6001600160a01b03881660009081526002602052604081208054909190610f86908490614ba1565b90915550506001600160a01b03851660009081526002602052604081208054859290610fb3908490614ba1565b92505081905550866001600160a01b0316826001600160a01b03166000805160206150d883398151915286604051610fed91815260200190565b60405180910390a3846001600160a01b0316826001600160a01b03166000805160206150d88339815191528560405161102891815260200190565b60405180910390a35b846001600160a01b0316876001600160a01b0316336001600160a01b03167fb8381a3ce157650e06186e3e8f4dd4dc29236f2688b6eed1893d0a60d7c6386f8c8589898f604051611086959493929190614be9565b60405180910390a4505050505050505050565b6110a58384848461283a565b50505050565b60006110b93385858561283a565b949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316331461110a5760405163c51efddd60e01b815260040160405180910390fd5b611136338384846040518060200160405280600081525060405180602001604052806000815250612646565b5050565b60405133906000906111529083908690602001614abe565b6040516020818303038152906040528051906020012090506111748184612806565b6111915760405163dae1880960e01b815260040160405180910390fd5b61119b8184612b0d565b60405184815233907f71a63dc095de07aa5512ad57a7596a39516317e316981a1cd71000057be1537b9060200160405180910390a250505050565b6000806111e283612b26565b91509150915091565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa15801561124f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112739190614c1c565b905061127f85826121ab565b91979096509094509092509050565b6001600160a01b038181166000908152600160205260409081902054905163c56a069d60e01b8152901960048201526060917f0000000000000000000000000000000000000000000000000000000000000000169063c56a069d90602401600060405180830381865afa158015611309573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bf29190810190614c35565b3360008181526011602090815260408083206001600160a01b03871684529091528120549091610bee918590611368908690614cc3565b612597565b610c2481612be2565b33301461139657604051630fff4cc960e31b815260040160405180910390fd5b610d5f8385848461283a565b600054610100900460ff16158080156113c25750600054600160ff909116105b806113dc5750303b1580156113dc575060005460ff166001145b6114015760405162461bcd60e51b81526004016113f890614cd6565b60405180910390fd5b6000805460ff191660011790558015611424576000805461ff0019166101001790555b6114348787878787876000612bed565b801561147a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b610c24333333846040518060200160405280600081525060405180602001604052806000815250612cb5565b60006114c760008051602061508e8339815191525490565b905060006001600160a01b038216156114e05781611502565b7f00000000000000000000000000000000000000000000000000000000000000005b9050336001600160a01b0382161461152d57604051630484acab60e01b815260040160405180910390fd5b61153683612e68565b826001600160a01b031663ef43d2c66040518163ffffffff1660e01b8152600401602060405180830381865afa158015611574573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115989190614d24565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614158061166b5750826001600160a01b0316634c5c0c856040518163ffffffff1660e01b8152600401602060405180830381865afa158015611611573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116359190614d24565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614155b156116895760405163ef1b6ddf60e01b815260040160405180910390fd5b505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146116d75760405163c51efddd60e01b815260040160405180910390fd5b6001600160a01b038084166000908152601160209081526040808320938616835292905220546116899084908490611368908590614cc3565b6060600085858560405160200161172993929190614a75565b60405160208183030381529060405280519060200120905061174b81846130a2565b9695505050505050565b6000610a977f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b611689838383612597565b6110a53333868686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602081019091529081529250612cb5915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316331461177f5760405163c51efddd60e01b815260040160405180910390fd5b336118316012828a613129565b61184e5760405163f7f0222760e01b815260040160405180910390fd5b6118c88189898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a9081908401838280828437600092019190915250600192506131d2915050565b5050505050505050565b33301461177f57604051630fff4cc960e31b815260040160405180910390fd5b606060008484604051602001611909929190614abe565b60405160208183030381529060405280519060200120905061192b81846130a2565b95945050505050565b6000610a9760008051602061508e8339815191525490565b600080611958836111eb565b50505090506000811261196b578061196e565b60005b9392505050565b6000610bf2827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109749190614c1c565b611136333384846040518060200160405280600081525060405180602001604052806000815250612646565b6000611a4160008051602061508e8339815191525490565b905060006001600160a01b03821615611a5a5781611a7c565b7f00000000000000000000000000000000000000000000000000000000000000005b9050336001600160a01b03821614611aa757604051630484acab60e01b815260040160405180910390fd5b6000611abf60008051602061508e8339815191525490565b9050611ad78460008051602061508e83398151915255565b836001600160a01b0316816001600160a01b03167f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f60405160405180910390a350505050565b33611b2a6012828461324b565b806001600160a01b0316826001600160a01b03167ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f960405160405180910390a35050565b606060108054610aab90614a3b565b600054610100900460ff1615808015611b9d5750600054600160ff909116105b80611bb75750303b158015611bb7575060005460ff166001145b611bd35760405162461bcd60e51b81526004016113f890614cd6565b6000805460ff191660011790558015611bf6576000805461ff0019166101001790555b8015610c24576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a150565b6110a53333868686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602081019091529081529250600191506131d29050565b333014611cb357604051630fff4cc960e31b815260040160405180910390fd5b80516040805160008152602081019091526116899133918691869190151590869061334f565b6040513390600090611cf19083908790602001614abe565b604051602081830303815290604052805190602001209050611d468185858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061255f92505050565b336001600160a01b03167f0c4c547b3a4fcaa5be8353b3111472b124155bccc86de811d4a481c9e6e9faca868686604051610cfb93929190614afb565b611136333383611d923361194c565b61283a565b6000610bee3384611368856040518060600160405280602a81526020016150ae602a91393360009081526011602090815260408083206001600160a01b038d168452909152902054919061341c565b600061196e3333858561283a565b6110a53385856001808787613448565b600080600080611e1486866121ab565b9250925092506000611e3c828411611e2d576000612a9f565b611e378385614d41565b612a9f565b611e469085614ba1565b60001315979650505050505050565b6000610bf2827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa158015611eb9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108dc9190614c1c565b333014611efd57604051630fff4cc960e31b815260040160405180910390fd5b8051604080516000815260208101909152611689913391869186919015159081908790613448565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314611f6e5760405163c51efddd60e01b815260040160405180910390fd5b6116898383611368846040518060600160405280602a81526020016150ae602a91396001600160a01b03808a166000908152601160209081526040808320938c1683529290522054919061341c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146120065760405163c51efddd60e01b815260040160405180910390fd5b6110a533858585856040518060200160405280600081525060016131d2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316331461206e5760405163c51efddd60e01b815260040160405180910390fd5b611136338384846040518060200160405280600081525060405180602001604052806000815250612cb5565b604051632329212160e21b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690638ca4848490602401602060405180830381865afa1580156120fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121229190614b3c565b61213f5760405163327fd99160e21b815260040160405180910390fd5b6001600160a01b038216600090815260026020526040902054612163908290614ba1565b6001600160a01b0390921660009081526002602052604090209190915550565b600061196e60128484613129565b60008061219e84846121ab565b5050600013949350505050565b6001600160a01b0382166000908152600260205260408120549080806121d08661128e565b905060005b81518110156122d65760008060008484815181106121f5576121f5614d54565b60209081029190910101516040516326cb922f60e21b81523060048201526001600160a01b038c81166024830152604482018c905290911690639b2e48bc90606401606060405180830381865afa158015612254573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122789190614d6a565b919450925090506122898288614cc3565b96506122958187614cc3565b95506122b28183116122a8576000612a9f565b611e378284614d41565b6122bc848a614ba1565b6122c69190614bc9565b97505050508060010190506121d5565b50509250925092565b600054610100900460ff16158080156122ff5750600054600160ff909116105b806123195750303b158015612319575060005460ff166001145b6123355760405162461bcd60e51b81526004016113f890614cd6565b6000805460ff191660011790558015612358576000805461ff0019166101001790555b61236788888888888888612bed565b80156118c8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050505050565b336123c360128284613516565b806001600160a01b0316826001600160a01b03167f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa160405160405180910390a35050565b3361241460128289613129565b6124315760405163f7f0222760e01b815260040160405180910390fd5b61147a8188898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525061264692505050565b6116893333338686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602081019091529081529250612646915050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561255357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612535575b50505050509050919050565b60005b815181101561168957600082828151811061257f5761257f614d54565b60209081029190910101518483015550600101612562565b6001600160a01b0383166125be57604051638163862760e01b815260040160405180910390fd5b6001600160a01b0382166125e5576040516337c1c09d60e21b815260040160405180910390fd5b6001600160a01b0383811660008181526011602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600e546001600160a01b031661266f57604051637bce7b2b60e11b815260040160405180910390fd5b60008061267b85612b26565b91509150612692888883875160001415888861334f565b600e546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156126db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ff9190614c1c565b600e54909150612719906001600160a01b0316888561360e565b600e546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015612762573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127869190614c1c565b905060006127948284614d41565b90508085146127b657604051631c7c26d360e31b815260040160405180910390fd5b896001600160a01b03167f3bc27981aebbb57f9247dc00fde9d6cd91e4b230083fec3238fedbcba1f9ab3d856040516127f191815260200190565b60405180910390a25050505050505050505050565b6000805b828110156128305783810154801561282757600192505050610bf2565b5060010161280a565b5060009392505050565b60006001600160a01b0384166128635760405163eecd6c9b60e01b815260040160405180910390fd5b6001600160a01b03831661288a5760405163e219bd3960e01b815260040160405180910390fd5b60003390506128bb818686866040518060200160405280600081525060405180602001604052806000815250613671565b846001600160a01b0316866001600160a01b03161461294e5761294e8587611368866040518060600160405280602d81526020016150f8602d9139601160008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008d6001600160a01b03166001600160a01b031681526020019081526020016000205461341c9092919063ffffffff16565b50600195945050505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129df9190614d24565b604051638369a0f160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301523060248301527f9f60ae461adf056670e03ae602566409933242392cb06744f5747c9f38b05d09604483015291925090821690638369a0f190606401602060405180830381865afa158015612a75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a999190614d24565b91505090565b60006001600160ff1b03821115612b095760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016113f8565b5090565b60005b8181101561168957600083820155600101612b10565b600e54600090819081906012600160a01b90910460ff161015612b8557600e54612b5b90600160a01b900460ff166012614d98565b612b6690600a614e95565b9050612b728185614ea4565b9250612b7e8184614ec6565b9150612bdc565b600e546012600160a01b90910460ff161115612bd557600e54612bb490601290600160a01b900460ff16614d98565b612bbf90600a614e95565b9050612bcb8185614ec6565b9250839150612bdc565b8391508192505b50915091565b610c24601282613710565b600e805460ff8816600160a01b026001600160a81b03199091166001600160a01b038a1617179055600f612c22858783614f2d565b506010612c30838583614f2d565b50612c478160008051602061508e83398151915255565b612c5030613792565b60405160008082529081906000805160206150d88339815191529060200160405180910390a36040516001600160a01b038216906000907f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f908290a350505050505050565b600e546001600160a01b0316612cde57604051637bce7b2b60e11b815260040160405180910390fd5b600080612cea85612b26565b600e546040516370a0823160e01b81523060048201529294509092506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015612d3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d5f9190614c1c565b600e54909150612d7a906001600160a01b03168930866138c0565b600e546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015612dc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de79190614c1c565b90506000612df58383614d41565b9050808514612e1757604051631c7c26d360e31b815260040160405180910390fd5b8651612e2d908c908b9087901515808c8c613448565b886001600160a01b03167f25ca84076773b0455db53621c459ddc84fe40840e4932a62706a032566f399df856040516127f191815260200190565b6000612e927f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b031603612ee85760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c6500000060448201526064016113f8565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f4a9190614c1c565b7f6bfbb132610e56cb96575dba244667b9d6dbfeffe22b68a79fa16f2d18eb001914612fc45760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b60648201526084016113f8565b6001600160a01b038116300361301c5760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f700000000000000060448201526064016113f8565b613044817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc7f6bfbb132610e56cb96575dba244667b9d6dbfeffe22b68a79fa16f2d18eb0019604080519182526001600160a01b038416602083015201611c34565b6060816001600160401b038111156130bc576130bc61428d565b6040519080825280602002602001820160405280156130e5578160200160208202803683370190505b50905060005b828110156131225760008185015490508083838151811061310e5761310e614d54565b6020908102919091010152506001016130eb565b5092915050565b6000816001600160a01b0316836001600160a01b0316148061319857506001600160a01b038316600090815260018501602052604090205460ff16801561319857506001600160a01b03808316600090815260038601602090815260408083209387168352929052205460ff16155b806110b957506001600160a01b03808316600090815260028601602090815260408083209387168352929052205460ff1690509392505050565b6001600160a01b0386166131f95760405163eecd6c9b60e01b815260040160405180910390fd5b6001600160a01b0385166132205760405163e219bd3960e01b815260040160405180910390fd5b61322e8787878787876138f8565b61323c878787878787613671565b61147a87878787878787613a1f565b806001600160a01b0316826001600160a01b0316036132c25760405162461bcd60e51b815260206004820152602d60248201527f4552433737374f70657261746f72733a20617574686f72697a696e672073656c60448201526c331030b99037b832b930ba37b960991b60648201526084016113f8565b6001600160a01b038116600090815260018401602052604090205460ff1615613318576001600160a01b03918216600090815260039390930160209081526040808520929093168452529020805460ff19169055565b6001600160a01b0380831660009081526002850160209081526040808320938516835292905220805460ff19166001179055505050565b6001600160a01b03851661337657604051632e8aac6160e21b815260040160405180910390fd5b821561338b5761338b868660008786866138f8565b6133958585613b6f565b846001600160a01b0316866001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a40988685856040516133dc93929190614fec565b60405180910390a36040518481526000906001600160a01b038716906000805160206150d8833981519152906020015b60405180910390a3505050505050565b600081848411156134405760405162461bcd60e51b81526004016113f891906140de565b505050900390565b6001600160a01b03861661346f57604051630d24315760e01b815260040160405180910390fd5b6134798686613c7f565b831561348f5761348f8760008888868689613a1f565b856001600160a01b0316876001600160a01b03167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d8785856040516134d693929190614fec565b60405180910390a36040518581526001600160a01b038716906000906000805160206150d88339815191529060200160405180910390a350505050505050565b336001600160a01b038216036135815760405162461bcd60e51b815260206004820152602a60248201527f4552433737374f70657261746f72733a207265766f6b696e672073656c662061604482015269399037b832b930ba37b960b11b60648201526084016113f8565b6001600160a01b038116600090815260018401602052604090205460ff16156135db576001600160a01b0380831660009081526003850160209081526040808320938516835292905220805460ff19166001179055505050565b6001600160a01b03918216600090815260029390930160209081526040808520929093168452529020805460ff19169055565b6040516001600160a01b03831660248201526044810182905261168990849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613cd9565b613684858561367f86612a9f565b613dae565b836001600160a01b0316856001600160a01b0316876001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc826146779878686866040516136d593929190614fec565b60405180910390a4836001600160a01b0316856001600160a01b03166000805160206150d88339815191528560405161340c91815260200190565b81541561371f5761371f614b8b565b80516137319083906020840190613fd0565b5060005b815181101561168957600183600101600084848151811061375857613758614d54565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055600101613735565b6040516329965a1d60e01b81526001600160a01b03821660048201527fac7fbab5f54a3ca8194167523c6753bfeb96a445279294b6125b68cce21770546024820152306044820152731820a4b7618bde71dce8cdc73aab6c95905fad24906329965a1d90606401600060405180830381600087803b15801561381357600080fd5b505af1158015613827573d6000803e3d6000fd5b50506040516329965a1d60e01b81526001600160a01b03841660048201527faea199e31a596269b42cdafd93407f14436db6e4cad65417994c2eb37381e05a6024820152306044820152731820a4b7618bde71dce8cdc73aab6c95905fad2492506329965a1d9150606401600060405180830381600087803b1580156138ac57600080fd5b505af1158015610d5f573d6000803e3d6000fd5b6040516001600160a01b03808516602483015283166044820152606481018290526110a59085906323b872dd60e01b9060840161363a565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa158015613979573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061399d9190614d24565b90506001600160a01b0381161561147a57604051633ad5cbc160e11b81526001600160a01b038216906375ab9782906139e4908a908a908a908a908a908a90600401615017565b600060405180830381600087803b1580156139fe57600080fd5b505af1158015613a12573d6000803e3d6000fd5b5050505050505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa158015613aa0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ac49190614d24565b90506001600160a01b03811615613b40576040516223de2960e01b81526001600160a01b038216906223de2990613b09908b908b908b908b908b908b90600401615017565b600060405180830381600087803b158015613b2357600080fd5b505af1158015613b37573d6000803e3d6000fd5b505050506118c8565b81156118c8576001600160a01b0386163b156118c85760405163fe737d0560e01b815260040160405180910390fd5b6000613bf7837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bd3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c09190614c1c565b50509050613c0482612a9f565b811215613c245760405163043b37d160e21b815260040160405180910390fd5b613c2d82612a9f565b6001600160a01b038416600090815260026020526040902054613c509190614bc9565b6001600160a01b038416600090815260026020526040902055600354613c77908390614d41565b600355505050565b613c8881612a9f565b6001600160a01b038316600090815260026020526040902054613cab9190614ba1565b6001600160a01b038316600090815260026020526040902055600354613cd2908290614cc3565b6003555050565b6000613d2e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613ead9092919063ffffffff16565b9050805160001480613d4f575080806020019051810190613d4f9190614b3c565b6116895760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016113f8565b6000613e12847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bd3573d6000803e3d6000fd5b5050905081811215613e3757604051632f4cb94160e01b815260040160405180910390fd5b6001600160a01b038416600090815260026020526040902054613e5b908390614bc9565b6001600160a01b038086166000908152600260205260408082209390935590851681522054613e8b908390614ba1565b6001600160a01b03909316600090815260026020526040902092909255505050565b60606110b9848460008585600080866001600160a01b03168587604051613ed49190615071565b60006040518083038185875af1925050503d8060008114613f11576040519150601f19603f3d011682016040523d82523d6000602084013e613f16565b606091505b5091509150613f2787838387613f32565b979650505050505050565b60608315613fa1578251600003613f9a576001600160a01b0385163b613f9a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016113f8565b50816110b9565b6110b98383815115613fb65781518083602001fd5b8060405162461bcd60e51b81526004016113f891906140de565b828054828255906000526020600020908101928215614025579160200282015b8281111561402557825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190613ff0565b50612b099291505b80821115612b09576000815560010161402d565b6020808252825182820181905260009190848201906040850190845b818110156140825783516001600160a01b03168352928401929184019160010161405d565b50909695505050505050565b60005b838110156140a9578181015183820152602001614091565b50506000910152565b600081518084526140ca81602086016020860161408e565b601f01601f19169290920160200192915050565b60208152600061196e60208301846140b2565b6001600160a01b0381168114610c2457600080fd5b60008083601f84011261411857600080fd5b5081356001600160401b0381111561412f57600080fd5b6020830191508360208260051b850101111561414a57600080fd5b9250929050565b6000806000806060858703121561416757600080fd5b8435614172816140f1565b93506020850135925060408501356001600160401b0381111561419457600080fd5b6141a087828801614106565b95989497509550505050565b600080604083850312156141bf57600080fd5b82356141ca816140f1565b946020939093013593505050565b6000602082840312156141ea57600080fd5b5035919050565b60008060006040848603121561420657600080fd5b8335925060208401356001600160401b0381111561422357600080fd5b61422f86828701614106565b9497909650939450505050565b6000806000806080858703121561425257600080fd5b843561425d816140f1565b9350602085013561426d816140f1565b9250604085013561427d816140f1565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156142cb576142cb61428d565b604052919050565b600082601f8301126142e457600080fd5b81356001600160401b038111156142fd576142fd61428d565b614310601f8201601f19166020016142a3565b81815284602083860101111561432557600080fd5b816020850160208301376000918101602001919091529392505050565b8015158114610c2457600080fd5b600080600080600080600060e0888a03121561436b57600080fd5b8735965060208801356001600160401b0381111561438857600080fd5b6143948a828b016142d3565b96505060408801356143a5816140f1565b945060608801356143b581614342565b935060808801356143c5816140f1565b9699959850939692959460a0840135945060c09093013592915050565b6000806000606084860312156143f757600080fd5b8335614402816140f1565b92506020840135614412816140f1565b929592945050506040919091013590565b6000806040838503121561443657600080fd5b50508035926020909101359150565b60006020828403121561445757600080fd5b813561196e816140f1565b60006001600160401b0382111561447b5761447b61428d565b5060051b60200190565b6000602080838503121561449857600080fd5b82356001600160401b038111156144ae57600080fd5b8301601f810185136144bf57600080fd5b80356144d26144cd82614462565b6142a3565b81815260059190911b820183019083810190878311156144f157600080fd5b928401925b82841015613f27578335614509816140f1565b825292840192908401906144f6565b803560ff8116811461452957600080fd5b919050565b60008083601f84011261454057600080fd5b5081356001600160401b0381111561455757600080fd5b60208301915083602082850101111561414a57600080fd5b6000806000806000806080878903121561458857600080fd5b8635614593816140f1565b95506145a160208801614518565b945060408701356001600160401b03808211156145bd57600080fd5b6145c98a838b0161452e565b909650945060608901359150808211156145e257600080fd5b506145ef89828a0161452e565b979a9699509497509295939492505050565b6000806000806080858703121561461757600080fd5b8435614622816140f1565b93506020850135614632816140f1565b93969395505050506040820135916060013590565b6020808252825182820181905260009190848201906040850190845b8181101561408257835183529284019291840191600101614663565b6000806000806060858703121561469557600080fd5b84356146a0816140f1565b93506020850135925060408501356001600160401b038111156146c257600080fd5b6141a08782880161452e565b600080600080600080600060a0888a0312156146e957600080fd5b87356146f4816140f1565b96506020880135614704816140f1565b95506040880135945060608801356001600160401b038082111561472757600080fd5b6147338b838c0161452e565b909650945060808a013591508082111561474c57600080fd5b506147598a828b0161452e565b989b979a50959850939692959293505050565b60008060006060848603121561478157600080fd5b833561478c816140f1565b95602085013595506040909401359392505050565b6000806000606084860312156147b657600080fd5b83356147c1816140f1565b92506020840135915060408401356001600160401b038111156147e357600080fd5b6147ef868287016142d3565b9150509250925092565b6000806000806080858703121561480f57600080fd5b843561481a816140f1565b93506020850135925060408501356001600160401b038082111561483d57600080fd5b614849888389016142d3565b9350606087013591508082111561485f57600080fd5b5061486c878288016142d3565b91505092959194509250565b6000806000806080858703121561488e57600080fd5b8435614899816140f1565b935060208501356148a9816140f1565b92506040850135915060608501356001600160401b038111156148cb57600080fd5b61486c878288016142d3565b600080604083850312156148ea57600080fd5b82356148f5816140f1565b91506020830135614905816140f1565b809150509250929050565b600080600080600080600060a0888a03121561492b57600080fd5b8735614936816140f1565b965061494460208901614518565b955060408801356001600160401b038082111561496057600080fd5b61496c8b838c0161452e565b909750955060608a013591508082111561498557600080fd5b506149928a828b0161452e565b90945092505060808801356149a6816140f1565b8091505092959891949750929550565b600080600080600080608087890312156149cf57600080fd5b86356149da816140f1565b95506020870135945060408701356001600160401b03808211156145bd57600080fd5b600080600060408486031215614a1257600080fd5b8335925060208401356001600160401b03811115614a2f57600080fd5b61422f8682870161452e565b600181811c90821680614a4f57607f821691505b602082108103614a6f57634e487b7160e01b600052602260045260246000fd5b50919050565b6080808252600e908201526d41677265656d656e74537461746560901b60a08201526001600160a01b039384166020820152919092166040820152606081019190915260c00190565b6060808252600d908201526c41677265656d656e744461746160981b60808201526001600160a01b03929092166020830152604082015260a00190565b838152604060208201819052810182905260006001600160fb1b03831115614b2257600080fd5b8260051b8085606085013791909101606001949350505050565b600060208284031215614b4e57600080fd5b815161196e81614342565b634e487b7160e01b600052601160045260246000fd5b6000600160ff1b8201614b8457614b84614b59565b5060000390565b634e487b7160e01b600052600160045260246000fd5b8082018281126000831280158216821582161715614bc157614bc1614b59565b505092915050565b818103600083128015838313168383128216171561312257613122614b59565b85815260018060a01b038516602082015283604082015282606082015260a060808201526000613f2760a08301846140b2565b600060208284031215614c2e57600080fd5b5051919050565b60006020808385031215614c4857600080fd5b82516001600160401b03811115614c5e57600080fd5b8301601f81018513614c6f57600080fd5b8051614c7d6144cd82614462565b81815260059190911b82018301908381019087831115614c9c57600080fd5b928401925b82841015613f27578351614cb4816140f1565b82529284019290840190614ca1565b80820180821115610bf257610bf2614b59565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b600060208284031215614d3657600080fd5b815161196e816140f1565b81810381811115610bf257610bf2614b59565b634e487b7160e01b600052603260045260246000fd5b600080600060608486031215614d7f57600080fd5b8351925060208401519150604084015190509250925092565b60ff8281168282160390811115610bf257610bf2614b59565b600181815b80851115614dec578160001904821115614dd257614dd2614b59565b80851615614ddf57918102915b93841c9390800290614db6565b509250929050565b600082614e0357506001610bf2565b81614e1057506000610bf2565b8160018114614e265760028114614e3057614e4c565b6001915050610bf2565b60ff841115614e4157614e41614b59565b50506001821b610bf2565b5060208310610133831016604e8410600b8410161715614e6f575081810a610bf2565b614e798383614db1565b8060001904821115614e8d57614e8d614b59565b029392505050565b600061196e60ff841683614df4565b600082614ec157634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610bf257610bf2614b59565b601f821115611689576000816000526020600020601f850160051c81016020861015614f065750805b601f850160051c820191505b81811015614f2557828155600101614f12565b505050505050565b6001600160401b03831115614f4457614f4461428d565b614f5883614f528354614a3b565b83614edd565b6000601f841160018114614f8c5760008515614f745750838201355b600019600387901b1c1916600186901b178355610d5f565b600083815260209020601f19861690835b82811015614fbd5786850135825560209485019460019092019101614f9d565b5086821015614fda5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b83815260606020820152600061500560608301856140b2565b828103604084015261174b81856140b2565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c060808201819052600090615052908301856140b2565b82810360a084015261506481856140b2565b9998505050505050505050565b6000825161508381846020870161408e565b919091019291505056feb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035375706572546f6b656e3a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5375706572546f6b656e3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207113998c3f289916d0409de6d6459a6ed5af6684d9fba3ed913d28e03b195ae364736f6c63430008170033"

Methods

  • Parameters

    • address: string

    Returns SuperTokenMock

  • Parameters

    • signer: Signer

    Returns SuperTokenMock__factory

  • Parameters

    • host: string
    • w: BigNumberish
    • constantOutflowNFTProxy: string
    • constantInflowNFTProxy: string
    • poolAdminNFTProxy: string
    • poolMemberNFTProxy: string
    • Optional overrides: Overrides & {
          from?: string;
      }

    Returns Promise<SuperTokenMock>

  • Parameters

    • host: string
    • w: BigNumberish
    • constantOutflowNFTProxy: string
    • constantInflowNFTProxy: string
    • poolAdminNFTProxy: string
    • poolMemberNFTProxy: string
    • Optional overrides: Overrides & {
          from?: string;
      }

    Returns TransactionRequest

  • Parameters

    • address: string
    • signerOrProvider: Signer | Provider

    Returns SuperTokenMock

  • Returns SuperTokenMockInterface

Generated using TypeDoc