Hierarchy

  • ContractFactory
    • GeneralDistributionAgreementV1__factory

Constructors

Properties

abi: readonly [{
    inputs: readonly [{
        internalType: "contract ISuperfluid";
        name: "host";
        type: "address";
    }, {
        internalType: "contract SuperfluidUpgradeableBeacon";
        name: "superfluidPoolBeacon_";
        type: "address";
    }];
    stateMutability: "nonpayable";
    type: "constructor";
}, {
    inputs: readonly [];
    name: "AGREEMENT_BASE_ONLY_HOST";
    type: "error";
}, {
    inputs: readonly [];
    name: "GDA_ADMIN_CANNOT_BE_POOL";
    type: "error";
}, {
    inputs: readonly [];
    name: "GDA_DISTRIBUTE_FOR_OTHERS_NOT_ALLOWED";
    type: "error";
}, {
    inputs: readonly [];
    name: "GDA_DISTRIBUTE_FROM_ANY_ADDRESS_NOT_ALLOWED";
    type: "error";
}, {
    inputs: readonly [];
    name: "GDA_FLOW_DOES_NOT_EXIST";
    type: "error";
}, {
    inputs: readonly [];
    name: "GDA_INSUFFICIENT_BALANCE";
    type: "error";
}, {
    inputs: readonly [];
    name: "GDA_NON_CRITICAL_SENDER";
    type: "error";
}, {
    inputs: readonly [];
    name: "GDA_NOT_POOL_ADMIN";
    type: "error";
}, {
    inputs: readonly [];
    name: "GDA_NO_NEGATIVE_FLOW_RATE";
    type: "error";
}, {
    inputs: readonly [];
    name: "GDA_NO_ZERO_ADDRESS_ADMIN";
    type: "error";
}, {
    inputs: readonly [];
    name: "GDA_ONLY_SUPER_TOKEN_POOL";
    type: "error";
}, {
    inputs: readonly [];
    name: "OUT_OF_GAS";
    type: "error";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        indexed: true;
        internalType: "contract ISuperfluidPool";
        name: "pool";
        type: "address";
    }, {
        indexed: true;
        internalType: "address";
        name: "from";
        type: "address";
    }, {
        indexed: false;
        internalType: "int256";
        name: "bufferDelta";
        type: "int256";
    }, {
        indexed: false;
        internalType: "uint256";
        name: "newBufferAmount";
        type: "uint256";
    }, {
        indexed: false;
        internalType: "uint256";
        name: "totalBufferAmount";
        type: "uint256";
    }];
    name: "BufferAdjusted";
    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 ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        indexed: true;
        internalType: "contract ISuperfluidPool";
        name: "pool";
        type: "address";
    }, {
        indexed: true;
        internalType: "address";
        name: "distributor";
        type: "address";
    }, {
        indexed: false;
        internalType: "address";
        name: "operator";
        type: "address";
    }, {
        indexed: false;
        internalType: "int96";
        name: "oldFlowRate";
        type: "int96";
    }, {
        indexed: false;
        internalType: "int96";
        name: "newDistributorToPoolFlowRate";
        type: "int96";
    }, {
        indexed: false;
        internalType: "int96";
        name: "newTotalDistributionFlowRate";
        type: "int96";
    }, {
        indexed: false;
        internalType: "address";
        name: "adjustmentFlowRecipient";
        type: "address";
    }, {
        indexed: false;
        internalType: "int96";
        name: "adjustmentFlowRate";
        type: "int96";
    }, {
        indexed: false;
        internalType: "bytes";
        name: "userData";
        type: "bytes";
    }];
    name: "FlowDistributionUpdated";
    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: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        indexed: true;
        internalType: "contract ISuperfluidPool";
        name: "pool";
        type: "address";
    }, {
        indexed: true;
        internalType: "address";
        name: "distributor";
        type: "address";
    }, {
        indexed: false;
        internalType: "address";
        name: "operator";
        type: "address";
    }, {
        indexed: false;
        internalType: "uint256";
        name: "requestedAmount";
        type: "uint256";
    }, {
        indexed: false;
        internalType: "uint256";
        name: "actualAmount";
        type: "uint256";
    }, {
        indexed: false;
        internalType: "bytes";
        name: "userData";
        type: "bytes";
    }];
    name: "InstantDistributionUpdated";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        indexed: true;
        internalType: "contract ISuperfluidPool";
        name: "pool";
        type: "address";
    }, {
        indexed: true;
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        indexed: false;
        internalType: "bool";
        name: "connected";
        type: "bool";
    }, {
        indexed: false;
        internalType: "bytes";
        name: "userData";
        type: "bytes";
    }];
    name: "PoolConnectionUpdated";
    type: "event";
}, {
    anonymous: false;
    inputs: readonly [{
        indexed: true;
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        indexed: true;
        internalType: "address";
        name: "admin";
        type: "address";
    }, {
        indexed: false;
        internalType: "contract ISuperfluidPool";
        name: "pool";
        type: "address";
    }];
    name: "PoolCreated";
    type: "event";
}, {
    inputs: readonly [];
    name: "SLOTS_BITMAP_LIBRARY_ADDRESS";
    outputs: readonly [{
        internalType: "address";
        name: "";
        type: "address";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [];
    name: "SUPERFLUID_POOL_DEPLOYER_ADDRESS";
    outputs: readonly [{
        internalType: "address";
        name: "";
        type: "address";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [];
    name: "agreementType";
    outputs: readonly [{
        internalType: "bytes32";
        name: "";
        type: "bytes32";
    }];
    stateMutability: "pure";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        components: readonly [{
            internalType: "Time";
            name: "_settled_at";
            type: "uint32";
        }, {
            internalType: "FlowRate";
            name: "_flow_rate";
            type: "int128";
        }, {
            internalType: "Value";
            name: "_settled_value";
            type: "int256";
        }];
        internalType: "struct BasicParticle";
        name: "p";
        type: "tuple";
    }, {
        internalType: "Time";
        name: "t";
        type: "uint32";
    }];
    name: "appendIndexUpdateByPool";
    outputs: readonly [{
        internalType: "bool";
        name: "";
        type: "bool";
    }];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [];
    name: "castrate";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidPool";
        name: "pool";
        type: "address";
    }, {
        internalType: "address";
        name: "memberAddress";
        type: "address";
    }, {
        internalType: "bytes";
        name: "ctx";
        type: "bytes";
    }];
    name: "claimAll";
    outputs: readonly [{
        internalType: "bytes";
        name: "newCtx";
        type: "bytes";
    }];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidPool";
        name: "pool";
        type: "address";
    }, {
        internalType: "bool";
        name: "doConnect";
        type: "bool";
    }, {
        internalType: "bytes";
        name: "ctx";
        type: "bytes";
    }];
    name: "connectPool";
    outputs: readonly [{
        internalType: "bytes";
        name: "newCtx";
        type: "bytes";
    }];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidPool";
        name: "pool";
        type: "address";
    }, {
        internalType: "bytes";
        name: "ctx";
        type: "bytes";
    }];
    name: "connectPool";
    outputs: readonly [{
        internalType: "bytes";
        name: "newCtx";
        type: "bytes";
    }];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "address";
        name: "admin";
        type: "address";
    }, {
        components: readonly [{
            internalType: "bool";
            name: "transferabilityForUnitsOwner";
            type: "bool";
        }, {
            internalType: "bool";
            name: "distributionFromAnyAddress";
            type: "bool";
        }];
        internalType: "struct PoolConfig";
        name: "config";
        type: "tuple";
    }];
    name: "createPool";
    outputs: readonly [{
        internalType: "contract ISuperfluidPool";
        name: "pool";
        type: "address";
    }];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidPool";
        name: "pool";
        type: "address";
    }, {
        internalType: "bytes";
        name: "ctx";
        type: "bytes";
    }];
    name: "disconnectPool";
    outputs: readonly [{
        internalType: "bytes";
        name: "newCtx";
        type: "bytes";
    }];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "address";
        name: "from";
        type: "address";
    }, {
        internalType: "contract ISuperfluidPool";
        name: "pool";
        type: "address";
    }, {
        internalType: "uint256";
        name: "requestedAmount";
        type: "uint256";
    }, {
        internalType: "bytes";
        name: "ctx";
        type: "bytes";
    }];
    name: "distribute";
    outputs: readonly [{
        internalType: "bytes";
        name: "newCtx";
        type: "bytes";
    }];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "address";
        name: "from";
        type: "address";
    }, {
        internalType: "contract ISuperfluidPool";
        name: "pool";
        type: "address";
    }, {
        internalType: "int96";
        name: "requestedFlowRate";
        type: "int96";
    }, {
        internalType: "bytes";
        name: "ctx";
        type: "bytes";
    }];
    name: "distributeFlow";
    outputs: readonly [{
        internalType: "bytes";
        name: "newCtx";
        type: "bytes";
    }];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "address";
        name: "from";
        type: "address";
    }, {
        internalType: "contract ISuperfluidPool";
        name: "to";
        type: "address";
    }, {
        internalType: "uint256";
        name: "requestedAmount";
        type: "uint256";
    }];
    name: "estimateDistributionActualAmount";
    outputs: readonly [{
        internalType: "uint256";
        name: "actualAmount";
        type: "uint256";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "address";
        name: "from";
        type: "address";
    }, {
        internalType: "contract ISuperfluidPool";
        name: "to";
        type: "address";
    }, {
        internalType: "int96";
        name: "requestedFlowRate";
        type: "int96";
    }];
    name: "estimateFlowDistributionActualFlowRate";
    outputs: readonly [{
        internalType: "int96";
        name: "actualFlowRate";
        type: "int96";
    }, {
        internalType: "int96";
        name: "totalDistributionFlowRate";
        type: "int96";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "address";
        name: "account";
        type: "address";
    }];
    name: "getAccountFlowInfo";
    outputs: readonly [{
        internalType: "uint256";
        name: "timestamp";
        type: "uint256";
    }, {
        internalType: "int96";
        name: "flowRate";
        type: "int96";
    }, {
        internalType: "uint256";
        name: "deposit";
        type: "uint256";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [];
    name: "getCodeAddress";
    outputs: readonly [{
        internalType: "address";
        name: "codeAddress";
        type: "address";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "address";
        name: "from";
        type: "address";
    }, {
        internalType: "contract ISuperfluidPool";
        name: "to";
        type: "address";
    }];
    name: "getFlow";
    outputs: readonly [{
        internalType: "uint256";
        name: "lastUpdated";
        type: "uint256";
    }, {
        internalType: "int96";
        name: "flowRate";
        type: "int96";
    }, {
        internalType: "uint256";
        name: "deposit";
        type: "uint256";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "address";
        name: "from";
        type: "address";
    }, {
        internalType: "contract ISuperfluidPool";
        name: "to";
        type: "address";
    }];
    name: "getFlowRate";
    outputs: readonly [{
        internalType: "int96";
        name: "";
        type: "int96";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "address";
        name: "account";
        type: "address";
    }];
    name: "getNetFlow";
    outputs: readonly [{
        internalType: "int96";
        name: "netFlowRate";
        type: "int96";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidPool";
        name: "pool";
        type: "address";
    }];
    name: "getPoolAdjustmentFlowInfo";
    outputs: readonly [{
        internalType: "address";
        name: "recipient";
        type: "address";
    }, {
        internalType: "bytes32";
        name: "flowHash";
        type: "bytes32";
    }, {
        internalType: "int96";
        name: "flowRate";
        type: "int96";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "pool";
        type: "address";
    }];
    name: "getPoolAdjustmentFlowRate";
    outputs: readonly [{
        internalType: "int96";
        name: "";
        type: "int96";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidPool";
        name: "pool";
        type: "address";
    }, {
        internalType: "address";
        name: "member";
        type: "address";
    }];
    name: "isMemberConnected";
    outputs: readonly [{
        internalType: "bool";
        name: "";
        type: "bool";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "uint256";
        name: "timestamp";
        type: "uint256";
    }];
    name: "isPatricianPeriod";
    outputs: readonly [{
        internalType: "bool";
        name: "";
        type: "bool";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "address";
        name: "account";
        type: "address";
    }];
    name: "isPatricianPeriodNow";
    outputs: readonly [{
        internalType: "bool";
        name: "isCurrentlyPatricianPeriod";
        type: "bool";
    }, {
        internalType: "uint256";
        name: "timestamp";
        type: "uint256";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "address";
        name: "account";
        type: "address";
    }];
    name: "isPool";
    outputs: readonly [{
        internalType: "bool";
        name: "";
        type: "bool";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "superToken";
        type: "address";
    }, {
        internalType: "address";
        name: "claimRecipient";
        type: "address";
    }, {
        internalType: "int256";
        name: "amount";
        type: "int256";
    }];
    name: "poolSettleClaim";
    outputs: readonly [{
        internalType: "bool";
        name: "";
        type: "bool";
    }];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [];
    name: "proxiableUUID";
    outputs: readonly [{
        internalType: "bytes32";
        name: "";
        type: "bytes32";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "address";
        name: "account";
        type: "address";
    }, {
        internalType: "uint256";
        name: "time";
        type: "uint256";
    }];
    name: "realtimeBalanceOf";
    outputs: readonly [{
        internalType: "int256";
        name: "rtb";
        type: "int256";
    }, {
        internalType: "uint256";
        name: "buf";
        type: "uint256";
    }, {
        internalType: "uint256";
        name: "owedBuffer";
        type: "uint256";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidToken";
        name: "token";
        type: "address";
    }, {
        internalType: "address";
        name: "account";
        type: "address";
    }];
    name: "realtimeBalanceOfNow";
    outputs: readonly [{
        internalType: "int256";
        name: "availableBalance";
        type: "int256";
    }, {
        internalType: "uint256";
        name: "buffer";
        type: "uint256";
    }, {
        internalType: "uint256";
        name: "owedBuffer";
        type: "uint256";
    }, {
        internalType: "uint256";
        name: "timestamp";
        type: "uint256";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [];
    name: "superfluidPoolBeacon";
    outputs: readonly [{
        internalType: "contract SuperfluidUpgradeableBeacon";
        name: "";
        type: "address";
    }];
    stateMutability: "view";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "address";
        name: "newAddress";
        type: "address";
    }];
    name: "updateCode";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
}, {
    inputs: readonly [{
        internalType: "contract ISuperfluidPool";
        name: "pool";
        type: "address";
    }, {
        internalType: "address";
        name: "memberAddress";
        type: "address";
    }, {
        internalType: "uint128";
        name: "newUnits";
        type: "uint128";
    }, {
        internalType: "bytes";
        name: "ctx";
        type: "bytes";
    }];
    name: "updateMemberUnits";
    outputs: readonly [{
        internalType: "bytes";
        name: "newCtx";
        type: "bytes";
    }];
    stateMutability: "nonpayable";
    type: "function";
}]
bytecode: "0x60c06040523480156200001157600080fd5b5060405162005dbd38038062005dbd833981016040819052620000349162000065565b6001600160a01b039182166080521660a052620000a4565b6001600160a01b03811681146200006257600080fd5b50565b600080604083850312156200007957600080fd5b825162000086816200004c565b602084015190925062000099816200004c565b809150509250929050565b60805160a051615cc9620000f46000396000818161040b0152612516015260008181610c7601528181610d5401528181610f9c015281816136880152818161389701526139bc0152615cc96000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c806352d1902d1161010f5780639b2e48bc116100a2578063e8e7e2d111610071578063e8e7e2d11461052e578063eccfc6a514610541578063f0b7b91514610554578063fa48736d1461056757600080fd5b80639b2e48bc146104c7578063c782eb9c146104f5578063d2c0d54214610508578063e6a1e8881461051b57600080fd5b80636d1007a6116100de5780636d1007a6146104735780637730599e146104865780637b2cc0da146104ac5780639903ad38146104bf57600080fd5b806352d1902d146103f05780635437dd97146104065780635a6c6dbc1461042d5780635cfd50d71461044057600080fd5b80633fd4176a116101875780634d5c91ec116101565780634d5c91ec1461037e5780634e9ced57146103ab5780634fe9c291146103be57806350d75d25146103e857600080fd5b80633fd4176a146103185780634543b7451461033357806346951954146103565780634b839e0b1461036b57600080fd5b806330925b79116101c357806330925b791461029c57806337bd42e0146102af578063398c74e1146102ea5780633c56f090146102fd57600080fd5b80630735d750146101f55780630779d365146102205780630f1ac4951461024b57806310dc87921461027c575b600080fd5b610208610203366004614d59565b61057a565b604051600b9190910b81526020015b60405180910390f35b61023361022e366004614e21565b6105a0565b6040516001600160a01b039091168152602001610217565b61025e610259366004614ebb565b6105b5565b60408051938452600b9290920b602084015290820152606001610217565b61028f61028a366004614f35565b61060d565b6040516102179190614fe9565b61028f6102aa366004614ffc565b61095a565b6102c26102bd366004615050565b610969565b604080516001600160a01b0390941684526020840192909252600b0b90820152606001610217565b61028f6102f8366004615082565b610a0a565b61023373__$fb8a7211f6e0fb144ea3d242e9f7f2eec2$__81565b61023373__$97ed594b3f931187fb739dcb88a7dff641$__81565b6103466103413660046150fd565b610c03565b6040519015158152602001610217565b610369610364366004615050565b610c6b565b005b6103466103793660046150fd565b610cc0565b61039161038c36600461514d565b610dd7565b60408051600b93840b81529190920b602082015201610217565b6102086103b9366004615050565b610ef6565b6103d16103cc366004614ebb565b610f97565b604080519215158352602083019190915201610217565b610233611032565b6103f8611061565b604051908152602001610217565b6102337f000000000000000000000000000000000000000000000000000000000000000081565b61028f61043b3660046151a9565b6110c5565b61045361044e366004614ebb565b611837565b604080519485526020850193909352918301526060820152608001610217565b61028f610481366004615236565b611859565b7fdfd8ece9bfbcb8c5c540edb935641f63d67686490a1ab97f000288759f30a9466103f8565b6103466104ba366004614ebb565b611b74565b610369611b89565b6104da6104d53660046150fd565b611c97565b60408051938452602084019290925290820152606001610217565b610346610503366004614ebb565b611ee3565b61028f61051636600461529c565b611f51565b61025e610529366004614d59565b6120a5565b61020861053c366004614ebb565b6120dd565b6103f861054f3660046152cd565b612264565b61028f610562366004614ffc565b6122cf565b610346610575366004615330565b6122de565b6000806105908561058b8686612377565b6123e7565b60200151925050505b9392505050565b60006105ad8484846124ae565b949350505050565b604080516001600160a01b03841660208201526000918291829182916105eb910160405160208183030381529060405286612740565b6020810151815160409092015163ffffffff9091169891975095509350505050565b60606000856001600160a01b0316632b4116f76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561064f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067391906153da565b905060006106b78286868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506127ff92505050565b905060008160600151905085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093975061070892508691508b9050846129c3565b90508015158815151461094e57604083810151905163d877ec8760e01b81526001600160a01b0384811660048301528a1515602483015263ffffffff9092166044820152908a169063d877ec87906064016020604051808303816000875af1158015610778573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079c91906153f7565b6107a8576107a8615414565b87156108605760006107c485846001600160a01b038d166129d1565b9050846001600160a01b03166312a6a3f86107df858d612a70565b61080b60405180604001604052808f6001600160a01b031681526020018663ffffffff16815250612ac0565b6040518363ffffffff1660e01b8152600401610828929190615466565b600060405180830381600087803b15801561084257600080fd5b505af1158015610856573d6000803e3d6000fd5b50505050506108f2565b600061086d85848c612b27565b915050846001600160a01b03166327048397610889858d612a70565b6040516001600160e01b031960e084901b168152600481019190915260016024820152604401600060405180830381600087803b1580156108c957600080fd5b505af11580156108dd573d6000803e3d6000fd5b505050506108f085848360200151612c01565b505b816001600160a01b0316896001600160a01b0316856001600160a01b03167ff357a2e6919da4efedb0301baf1caaed2bca70b115b913f9add41bbefc75c9b38b8760a0015160405161094592919061547f565b60405180910390a45b50505050949350505050565b60606105ad846000858561060d565b60008060006109fd846001600160a01b0316632b4116f76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d391906153da565b604080516001600160a01b0390921660208301520160405160208183030381529060405285612c8c565b9250925092509193909250565b6060856001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6e91906153da565b6001600160a01b0316610b18876001600160a01b0316632b4116f76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ab8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adc91906153da565b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506127ff92505050565b606001516001600160a01b031614610b4357604051633a87e56560e01b815260040160405180910390fd5b82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604051631b16777760e01b81526001600160a01b0389811660048301526001600160801b038916602483015293945092891692631b167777925060440190506020604051808303816000875af1158015610bd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf991906153f7565b5095945050505050565b6000610c0f8433612d1d565b1515600003610c31576040516390028c3760e01b815260040160405180910390fd5b604080516001600160a01b0386166020820152610c609101604051602081830303815290604052338585612dca565b506001949350505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610cb457604051630b00ec8f60e11b815260040160405180910390fd5b610cbd81612e30565b50565b604051633acd4df360e21b81526001600160a01b03838116600483015260248201839052600091829186169063eb3537cc90604401606060405180830381865afa158015610d12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d36919061549a565b5050905060008112610d4c576001915050610599565b600080610d797f000000000000000000000000000000000000000000000000000000000000000088613038565b91509150610dcc83610dc5610dbc8a604051602001610da791906001600160a01b0391909116815260200190565b6040516020818303038152906040528a612740565b60400151613156565b84846131c4565b979650505050505050565b604080516001600160a01b0386166020820152600091829182910160405160208183030381529060405290506000610e0f8787612377565b90506000610e1d8389613212565b90506000610e3a60405180602001604052806000815250896132be565b90506000610e488585613335565b9050600080610e5684613365565b9050600080610e688c600b0b8661337f565b90506000610e768a8f61338b565b905042610e9088610e8785856133a5565b8b9190846133b1565b919a5098509350610eb3610ead88610ea8878961337f565b6133a5565b8361337f565b9550610ec186600f0b61347d565b9c50610ecf84600f0b61347d565b9b5060008d600b0b1215610ee25760009c505b505050505050505050505094509492505050565b600080826001600160a01b0316632b4116f76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5b91906153da565b604080516001600160a01b038316602082015291925061059991610f8f91016040516020818303038152906040528561338b565b600f0b61347d565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ff8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101c91906154c8565b9050611029848483610cc0565b91509250929050565b600061105c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b6000306001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110a1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105c91906154c8565b60606110d18786612d1d565b15156000036110f3576040516390028c3760e01b815260040160405180910390fd5b600084600b0b1215611118576040516315f2566360e01b815260040160405180910390fd5b611120614c85565b6111608885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506127ff92505050565b815261116c8787612377565b6020828101918252604080516001600160a01b038c1681840152815180820390930183528101905290516111a09190613335565b600f0b60408083019190915280516020601f86018190048102820181019092528481529085908590819084018382808284376000920182905250939550505050600b86900b1380156112515750856001600160a01b031663cb8599f06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561122b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124f91906153f7565b155b156112f1578060000151606001516001600160a01b0316866001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ca91906153da565b6001600160a01b0316146112f157604051637761a5e560e01b815260040160405180910390fd5b604080516001600160a01b038a166020820152600091829161133691016040516020818303038152906040528a8a86602001518b600b0b8860000151604001516134a6565b92509250508260000151606001516001600160a01b0316896001600160a01b0316146114d157600087600b0b131561138157604051637b3e931f60e11b815260040160405180910390fd5b82516040908101519051633acd4df360e21b81526001600160a01b038b8116600483015260248201929092526000918c169063eb3537cc90604401606060405180830381865afa1580156113d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113fd919061549a565b50506040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091529091506001600160a01b03808d168083528c8216604080850191909152875160609081015190931660a08501526020808901519385019390935280519283019190915261149291610dbc91016040516020818303038152906040528d612740565b60808201526020810182905260008212156114b5576114b081613656565b6114ce565b60405163666f381d60e01b815260040160405180910390fd5b50505b6114e28a898b866020015186613893565b8260000151606001516001600160a01b0316896001600160a01b0316036115b65782516040908101519051633acd4df360e21b81526001600160a01b038b8116600483015260248201929092526000918c169063eb3537cc90604401606060405180830381865afa15801561155b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157f919061549a565b50509050600088600b0b1380156115965750600081125b156115b4576040516333115c3f60e01b815260040160405180910390fd5b505b60006115c18b613c2b565b90506001600160a01b0381161561175d57600088600b0b1380156115ea57506040840151600f0b155b1561165b5760405163f7e3d98360e01b81526001600160a01b038c811660048301528b811660248301528a8116604483015282169063f7e3d98390606401600060405180830381600087803b15801561164257600080fd5b505af1158015611656573d6000803e3d6000fd5b505050505b600088600b0b138015611675575060008460400151600f0b135b156116e6576040516375aa53e560e11b81526001600160a01b038c811660048301528b811660248301528a8116604483015282169063eb54a7ca90606401600060405180830381600087803b1580156116cd57600080fd5b505af11580156116e1573d6000803e3d6000fd5b505050505b87600b0b60000361175d5760405163ef1f023760e01b81526001600160a01b038c811660048301528b811660248301528a8116604483015282169063ef1f023790606401600060405180830381600087803b15801561174457600080fd5b505af1158015611758573d6000803e3d6000fd5b505050505b50604080516001600160a01b038c166020820152600091829161179091016040516020818303038152906040528b612c8c565b92505091508a6001600160a01b03168a6001600160a01b03168d6001600160a01b03167fc4bd0e4bfe3a83cbd5a7a71bb33bcb6bed9e0c24d710f3fb51c85caf1cd3af368860000151606001516117ed8a60400151600f0b61347d565b6117f98a600f0b61347d565b6118058a600f0b61347d565b8c5160a0015160405161182095949392918c918c91906154e1565b60405180910390a450505050509695505050505050565b600080600080611848868642611c97565b919890975090955042945092505050565b6060600061189d8885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506127ff92505050565b905083838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509294506118e592508a9150889050612d1d565b1515600003611907576040516390028c3760e01b815260040160405180910390fd5b856001600160a01b031663cb8599f06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611945573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196991906153f7565b611a045780606001516001600160a01b0316866001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119dd91906153da565b6001600160a01b031614611a0457604051637761a5e560e01b815260040160405180910390fd5b80606001516001600160a01b0316876001600160a01b031614611a3a57604051637b3e931f60e11b815260040160405180910390fd5b604080516001600160a01b038a166020820152600091611a789101604051602081830303815290604052836060015189611a738a613156565b613cda565b6040516379359f6f60e01b81526001600160a01b038b81166004830152919350908b1691506379359f6f90602401602060405180830381865afa158015611ac3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae791906153f7565b15611b05576040516333115c3f60e01b815260040160405180910390fd5b876001600160a01b0316876001600160a01b03168a6001600160a01b03167f6e8348961b299f365797c30cd18a91284b046858689eeb6150a5ba432fe6583e85606001518a868860a00151604051611b609493929190615530565b60405180910390a450509695505050505050565b6000611b808383612d1d565b90505b92915050565b600054610100900460ff1615808015611ba95750600054600160ff909116105b80611bc35750303b158015611bc3575060005460ff166001145b611c2b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015611c4e576000805461ff0019166101001790555b8015610cbd576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a150565b604080516001600160a01b0385166020820152600091829182918291611ccd910160405160208183030381529060405287612740565b9050611cd98787612d1d565b15611d53576040516336062c1560e11b815263ffffffff861660048201526001600160a01b03871690636c0c582a90602401602060405180830381865afa158015611d28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d4c91906154c8565b9350611da0565b611d9d85611d978360408051606081018252600080825260208083018281529383019182528451600b0b9093529183015163ffffffff168152608090920151905290565b90613d53565b93505b6000806000611daf8a8a613d81565b9150915060005b8251811015611eb4576000828281518110611dd357611dd361555d565b602002602001015160001c9050600080611dee8e8e85612b27565b9150915081611dff57611dff615414565b826001600160a01b031681600001516001600160a01b031614611e2457611e24615414565b604051637d6c008d60e01b81526001600160a01b038e8116600483015263ffffffff8e166024830152841690637d6c008d90604401602060405180830381865afa158015611e76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9a91906154c8565b611ea49088615589565b9650505050806001019050611db6565b5050508085611ec39190615589565b9450611ed28260400151613156565b935060009250505093509350939050565b6000611b80836001600160a01b0316632b4116f76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4a91906153da565b84846129c3565b6060611ff4856001600160a01b0316632b4116f76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb891906153da565b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506127ff92505050565b5082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040516377329f3560e01b81526001600160a01b038881166004830152939450928816926377329f35925060240190506020604051808303816000875af1158015612078573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209c91906153f7565b50949350505050565b6000806000806120b98761058b8888612377565b8051602082015160409092015163ffffffff9091169a919950975095505050505050565b604080516001600160a01b038416602082015260009161211c91610f8f91612115910160405160208183030381529060405285613212565b6020015190565b90506121288383612d1d565b1561219c57816001600160a01b031663a94ff3406040518163ffffffff1660e01b8152600401602060405180830381865afa15801561216b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218f91906155b1565b61219990826155ce565b90505b6000806121a98585613d81565b9150915060005b825181101561225b5760008282815181106121cd576121cd61555d565b60209081029190910101516040516314e7a30760e21b81526001600160a01b0388811660048301529192509082169063539e8c1c90602401602060405180830381865afa158015612222573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224691906155b1565b61225090866155ce565b9450506001016121b0565b50505092915050565b604080516001600160a01b038616602082015260009182910160408051601f19818403018152602083019091526000808352909250906122c2906122a890876132be565b6122b186613156565b6122bb858a613212565b9190613e0b565b9998505050505050505050565b60606105ad846001858561060d565b60006122ea8433612d1d565b151560000361230c576040516390028c3760e01b815260040160405180910390fd5b604080516001600160a01b0386166020820152600091016040516020818303038152906040529050612352813361234d876123478633613212565b90613e5f565b613f02565b5061236b81336001612365886020015190565b87613fa3565b50600195945050505050565b604080514660208201526080918101829052601060a08201526f646973747269627574696f6e466c6f7760801b60c08201526001600160a01b03808516606083015283169181019190915260009060e0015b60405160208183030381529060405280519060200120905092915050565b60408051606081018252600080825260208201819052918101829052604051636c2d9f2f60e01b815230600482015260248101849052600160448201526124a3906001600160a01b03861690636c2d9f2f90606401600060405180830381865afa158015612459573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526124819190810190615697565b6000815181106124935761249361555d565b602002602001015160001c61404a565b909590945092505050565b60006001600160a01b0383166124d7576040516382c5d83760e01b815260040160405180910390fd5b6124e18484612d1d565b156124ff57604051634d5c451360e11b815260040160405180910390fd5b6040516357677fc760e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015280851660248301528516604482015282511515606482015260208301511515608482015273__$fb8a7211f6e0fb144ea3d242e9f7f2eec2$__9063aeceff8e9060a401602060405180830381865af415801561259c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125c091906153da565b6040805160018082528183019092529192506000919060208083019080368337019050509050600160001b816000815181106125fe576125fe61555d565b602090810291909101015260405163048620af60e11b81526001600160a01b0386169063090c415e9061263a90859060009086906004016156cb565b600060405180830381600087803b15801561265457600080fd5b505af1158015612668573d6000803e3d6000fd5b5050505060006126778661409f565b90506001600160a01b038116156126f25760005a6040516335313c2160e11b81526001600160a01b03868116600483015291925090831690636a62784290602401600060405180830381600087803b1580156126d257600080fd5b505af19250505080156126e3575060015b6126f0576126f0816140e5565b505b6040516001600160a01b03848116825280871691908816907f9c5d829b9b23efc461f9aeef91979ec04bb903feb3bee4f26d22114abfc7335b9060200160405180910390a350509392505050565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526105ad8380602001905181019061278291906153da565b6001600160a01b0316634b61cc333085600060026040518563ffffffff1660e01b81526004016127b594939291906156f2565b600060405180830381865afa1580156127d2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127fa9190810190615697565b61410c565b612807614cac565b336001600160a01b0316836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa15801561284f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287391906153da565b6001600160a01b0316146128bd5760405162461bcd60e51b81526020600482015260116024820152701d5b985d5d1a1bdc9a5e9959081a1bdcdd607a1b6044820152606401611c22565b604051632fd0a1cd60e21b8152339063bf428734906128e0908590600401614fe9565b602060405180830381865afa1580156128fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061292191906153f7565b61295b5760405162461bcd60e51b815260206004820152600b60248201526a0d2dcecc2d8d2c840c6e8f60ab1b6044820152606401611c22565b604051631fb6491d60e11b81523390633f6c923a9061297e908590600401614fe9565b600060405180830381865afa15801561299b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b8091908101906157a7565b600080610bf9858486612b27565b604051630a32470160e41b81526001600160a01b0380851660048301528316602482015260016044820152600160801b60648201526084810182905260009073__$97ed594b3f931187fb739dcb88a7dff641$__9063a32470109060a401602060405180830381865af4158015612a4c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ad91906158ad565b604080514660208201526080918101829052600a60a0820152693837b7b626b2b6b132b960b11b60c08201526001600160a01b03808516606083015283169181019190915260009060e0016123c9565b6040805160018082528183019092526060916020808301908036833701905050905081600001516001600160a01b031660a0836020015163ffffffff16901b1760001b81600081518110612b1657612b1661555d565b602002602001018181525050919050565b6040805180820190915260008082526020820181905290612bf5856001600160a01b0316636c2d9f2f30612b5b8888612a70565b6040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260016044820152606401600060405180830381865afa158015612bab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612bd39190810190615697565b600081518110612be557612be561555d565b602002602001015160001c6141d8565b90969095509350505050565b604051631528e57f60e31b81526001600160a01b038085166004830152831660248201526001604482015263ffffffff8216606482015273__$97ed594b3f931187fb739dcb88a7dff641$__9063a9472bf89060840160006040518083038186803b158015612c6f57600080fd5b505af4158015612c83573d6000803e3d6000fd5b50505050505050565b6000806000836001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ccf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf391906153da565b9250612cff8484614216565b91508282612d10610f8f8886613335565b9250925092509250925092565b600060e080846001600160a01b0316634b61cc333086600060016040518563ffffffff1660e01b8152600401612d5694939291906156f2565b600060405180830381865afa158015612d73573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612d9b9190810190615697565b600081518110612dad57612dad61555d565b602002602001015160001c901b901c600116600114905092915050565b6060826001600160a01b0316846001600160a01b031603612dec5750836105ad565b6000612df88686613212565b90506000612e068786613212565b9050612e1382828661426e565b9092509050612e23878784613f02565b9650610dcc878683613f02565b6000612e5a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b031603612eb05760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c650000006044820152606401611c22565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612eee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f1291906154c8565b612f1a611061565b14612f735760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b6064820152608401611c22565b6001600160a01b0381163003612fcb5760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f70000000000000006044820152606401611c22565b612ff3817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc61301c611061565b604080519182526001600160a01b038416602083015201611c8c565b6000806000846001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561307b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061309f91906153da565b60405163407b865d60e11b81526001600160a01b03878116600483015286811660248301527fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f7860448301529192506000918316906380f70cba90606401602060405180830381865afa158015613119573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061313d91906154c8565b63ffffffff602082901c81169891169650945050505050565b60006001600160ff1b038211156131c05760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401611c22565b5090565b6000836000036131d6575060006105ad565b60006131e28587615589565b905060006131f085876158e0565b90506131fc848661590e565b61320682846158e0565b13979650505050505050565b6040805160608101825260008082526020820181905291810191909152600061327b8480602001905181019061324891906153da565b6001600160a01b0316634b61cc333086600060026040518563ffffffff1660e01b81526004016127b594939291906156f2565b9150506105ad8160408051606081018252600080825260208083018281529383019182528451600b0b9093529183015163ffffffff168152608090920151905290565b6132c6614d07565b6000826001600160a01b031663de7b54d96040518163ffffffff1660e01b8152600401608060405180830381865afa158015613306573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061332a9190615921565b90506105ad816142cc565b6000806133558480602001905181019061334f91906153da565b846123e7565b60200151600b0b95945050505050565b80516020808301510151600091611b8391600f0b9061433e565b6000611b80828461599e565b6000806133988484612c8c565b600b0b9695505050505050565b6000611b8082846159cb565b60408051606081018252600080825260208201819052918101919091526133d6614d07565b604080516060808201835260008083526020808401829052838501829052845180840186528281528082018390528086018390528551938401865282845290830182905293820181905292908361342c8a613365565b90506134448a61343b8361434a565b8691908b614355565b5090935061345890508a61343b838c6133a5565b9097509550915061346d826123478d86613e5f565b9650505050509450945094915050565b80600b81900b81146134a15760405162461bcd60e51b8152600401611c22906159f8565b919050565b6060600080866001600160a01b0316886001600160a01b0316036134cc576134cc615414565b60006134d88a8a613212565b905060006134e68b8a613212565b905060006134f48c8b6132be565b604080516060810182526000808252602082018190529181019190915290915061351e8d8c61338b565b600f0b8152600061352f8e8c613335565b9050600061353c84613365565b9050600061354a8c8461337f565b90506135678561355e8387600001516133a5565b8891908e6133b1565b995090965094506000600f89900b121561358357613583615414565b61359b61359484610ea88b8661337f565b855161337f565b9850600089600f0b126135b457600060208501526135ca565b6135bd8961434a565b600f0b6020850152600098505b6135d4898461337f565b600f0b604085018190526135ec90889088908e6143bd565b80975081985050505050506136028d8d86613f02565b9c5061360f8d8c85613f02565b9c5061361c8d8c84614488565b9c506136308d8b8e8e8a8660400151614538565b9c506136428d8c83602001518b61460b565b9d959c50939a509398505050505050505050565b600061366a826000015183606001516123e7565b915050600061367c8260400151613156565b905060008060006136b17f00000000000000000000000000000000000000000000000000000000000000008760000151613038565b915091506136c98660200151876080015184846131c4565b925050506000846080015185602001516136e39190615589565b9050600081126137d65760808501516000906136ff8386615a3e565b61370991906158e0565b905085600001516001600160a01b0316631863e8098760600151600286613731576001613734565b60005b6040805160ff938416602082015292909116908201526060016040516020818303038152906040528960a00151878b6040015161377088614624565b61377c89600019615a3e565b6040518863ffffffff1660e01b815260040161379e9796959493929190615a6e565b600060405180830381600087803b1580156137b857600080fd5b505af11580156137cc573d6000803e3d6000fd5b505050505061388c565b8451606080870151604080516002602082018190529181019190915286936001600160a01b031692631863e8099291016040516020818303038152906040528960a0015160008b6040015161382a88614624565b6138368a600019615a3e565b6040518863ffffffff1660e01b81526004016138589796959493929190615a6e565b600060405180830381600087803b15801561387257600080fd5b505af1158015613886573d6000803e3d6000fd5b50505050505b5050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061391791906153da565b60405163407b865d60e11b81523360048201526001600160a01b0388811660248301527feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc460448301529192506000918316906380f70cba90606401602060405180830381865afa15801561398f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139b391906154c8565b905060006139e17f000000000000000000000000000000000000000000000000000000000000000089613038565b50905060006139f089876123e7565b915060009050613a04600f87900b84614676565b905083613a1082614624565b108015613a205750600086600f0b135b15613a3157613a2e84613156565b90505b6000613a4982613a448560400151613156565b61468c565b90506000613a8360405180606001604052804263ffffffff168152602001613a738b600f0b61347d565b600b0b8152602001859052614698565b60405163a1b2bf8b60e01b81529091506001600160a01b038d169063a1b2bf8b90613ab4908c908590600401615466565b600060405180830381600087803b158015613ace57600080fd5b505af1158015613ae2573d6000803e3d6000fd5b50505050506000613b218c604051602001613b0c91906001600160a01b0391909116815260200190565b6040516020818303038152906040528b612740565b9050613b4382613b348360400151613156565b613b3e9190615589565b614624565b60408201526001600160a01b038c1663090c415e8b6000613b63856146f8565b6040518463ffffffff1660e01b8152600401613b81939291906156cb565b600060405180830381600087803b158015613b9b57600080fd5b505af1158015613baf573d6000803e3d6000fd5b50505050896001600160a01b03168b6001600160a01b03168d6001600160a01b03167f589f74ba61521b98a96e2f65e02028ca5af0c5990e3d9536176b37ee6b62013785613bfc88614624565b6040808801518151938452602084019290925282015260600160405180910390a4505050505050505050505050565b60408051600481526024810182526020810180516001600160e01b03166377a1e96360e11b1790529051600091829182916001600160a01b03861691613c719190615abb565b600060405180830381855afa9150503d8060008114613cac576040519150601f19603f3d011682016040523d82523d6000602084013e613cb1565b606091505b50915091508115613cd35780806020019051810190613cd091906153da565b92505b5050919050565b60606000836001600160a01b0316856001600160a01b031603613cff57613cff615414565b6000613d0b8787613212565b90506000613d1988876132be565b9050613d26828287613e0b565b94509092509050613d38888884613f02565b9750613d45888783614488565b989297509195505050505050565b6000611b80613d77613d698486600001516147a3565b6020860151600f0b90614676565b84604001516147af565b60608073__$97ed594b3f931187fb739dcb88a7dff641$__6306967a8c85856001600160801b6040518563ffffffff1660e01b8152600401613dc694939291906156f2565b600060405180830381865af4158015613de3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526124a39190810190615ad7565b6040805160608101825260008082526020820181905291810191909152613e30614d07565b6000613e3c85856147bb565b9092509050613e54613e4d8261481d565b8790614828565b925093509350939050565b60408051606081018252600080825260208201819052918101919091528151835160009163ffffffff908116911611613e99578251613e9c565b83515b90506000613eaa8583614869565b90506000613eb88584614869565b63ffffffff8416855260408084015190820151919250613ed7916147af565b604085015260208083015190820151613ef091906133a5565b600f0b60208501525091949350505050565b60606000613f108585612740565b905084806020019051810190613f2691906153da565b6001600160a01b031663090c415e856000613f4a87866040015187606001516148af565b6040518463ffffffff1660e01b8152600401613f68939291906156cb565b600060405180830381600087803b158015613f8257600080fd5b505af1158015613f96573d6000803e3d6000fd5b5096979650505050505050565b60606000856001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa158015613fe5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061400991906153da565b905060006140178783614216565b905085156140305761402d85610ea88a84613335565b94505b61403e88888484898961496e565b98975050505050505050565b6040805160608101825260008082526020820181905291810182905282158015925061409a5760c083901c63ffffffff168152606083901c600b0b60208201526001600160601b03831660408201525b915091565b60408051600481526024810182526020810180516001600160e01b0316632c836c6b60e21b1790529051600091829182916001600160a01b03861691613c719190615abb565b6140ee81614a0a565b15610cbd576040516320afada560e01b815260040160405180910390fd5b6040805160a081018252600080825260208201819052918101829052606081018290526080810182905260008360008151811061414b5761414b61555d565b602002602001015160001c905060008460018151811061416d5761416d61555d565b602002602001015160001c905060008211806141895750600081115b935083156141d15760a082901d600b0b8352608082811c63ffffffff1660208086019190915283901c6001600160601b03166040850152600180841614606085015283018190525b5050915091565b604080518082019091526000808252602082015281158015919061409a576001600160a01b038316815260a09290921c63ffffffff16602083015291565b604080514660208201526080918101829052601260a082015271706f6f6c41646a7573746d656e74466c6f7760701b60c08201526001600160a01b03808516606083015283169181019190915260009060e0016123c9565b60408051606080820183526000808352602080840182905283850182905284519283018552818352820181905292810192909252906142b66142af8461481d565b8690614828565b91506142c28484614828565b9050935093915050565b6142d4614d07565b60405180604001604052806142ec8460000151614a20565b600f0b815260408051606080820183526000808352602080840182905292840152825180820184528783015163ffffffff16815287840151600b0b818401529601519186019190915201929092525090565b6000611b808284615b9b565b6000611b8382615bc2565b604080516060810182526000808252602082018190529181019190915261437a614d07565b60006143908561438a8887614a3c565b90614a6a565b90925090506143b16143a18261434a565b6143ab8987614869565b90614acd565b92509450945094915050565b60408051606080820183526000808352602080840182905283850182905284518084018652828152808201839052808601839052855180850187528381528083018490528087018490528651808601885284815280840185905280880185905287519586018852848652858401859052968501939093529088015193949093919290916144568961444d8361434a565b8691908a614b04565b5092506144678961444d838b6133a5565b95509150614479826123478c86613e5f565b95505050505094509492505050565b60408051634a0d910160e01b81528251600f90810b6004830152602080850151805163ffffffff1660248501529081015190910b60448301529091015160648201526060906001600160a01b03841690634a0d9101906084016020604051808303816000875af1158015614500573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061452491906153f7565b61453057614530615414565b509192915050565b606060008780602001905181019061455091906153da565b9050600061455e82896123e7565b915050816001600160a01b031663a1b2bf8b896145ac60405180606001604052804263ffffffff1681526020016145978b600f0b61347d565b600b0b81526020018660400151815250614698565b6040518363ffffffff1660e01b81526004016145c9929190615466565b600060405180830381600087803b1580156145e357600080fd5b505af11580156145f7573d6000803e3d6000fd5b5050505088925050505b9695505050505050565b606061461b858560008686613fa3565b95945050505050565b6000808212156131c05760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f7369746976656044820152606401611c22565b6000611b8063ffffffff8316600f85900b615a3e565b6000611b808284615be8565b604080516001808252818301909252606091602080830190803683370190505090508160400151606083602001516001600160601b0316901b60c0846000015163ffffffff16901b171760001b81600081518110612b1657612b1661555d565b6040805160028082526060808301845292602083019080368337019050509050816060015161472857600061472b565b60015b60ff16602061473d8460400151614b6a565b6001600160601b0316901b6080846020015163ffffffff16901b60a08560000151600b0b901b17171760001b8160008151811061477c5761477c61555d565b602002602001018181525050816080015160001b81600181518110612b1657612b1661555d565b6000611b808284615c08565b6000611b808284615589565b6147c3614d07565b60006147ce84614b93565b8451909250600f0b156148165783516147f1906147eb8582614bba565b90614bca565b845190915061481090614805908390614bba565b602086015190614828565b60208301525b9250929050565b6000611b8382615c25565b604080516060810182526000808252602082018190529181019190915261484e83614bda565b905061485e8160400151836147af565b604082015292915050565b604080516060810182526000808252602082018190529181019190915261488f83614bda565b905061489b8383613d53565b604082015263ffffffff9091168152919050565b6040805160028082526060808301845292602083019080368337019050509050816148db5760006148de565b60015b60ff1660206148ec85614b6a565b6001600160601b0316901b6080614901875190565b63ffffffff16901b60a0614916886020015190565b600f0b901b17171760001b816000815181106149345761493461555d565b602002602001018181525050836040015160001b8160018151811061495b5761495b61555d565b6020026020010181815250509392505050565b6060846001600160a01b0316866001600160a01b031603614990575085614601565b60006149a5846149a08a88613335565b61337f565b905060006149b38989613212565b905060006149c18a89613212565b90506149cf828285886143bd565b90925090506149df8a8a84613f02565b99506149ec8a8983613f02565b99506149fc8a888b8b8a88614538565b9a9950505050505050505050565b6000614a17604083615c41565b5a111592915050565b6000611b83614a37836001600160801b0316613156565b614c15565b614a44614d07565b614a4d83614b93565b6020810151909150614a5f9083614869565b602082015292915050565b614a72614d07565b6000614a7d84614b93565b8451909250600f0b15614816578351614aa790614a9e600f86900b82614c79565b600f0b9061433e565b9050614810614ac6856000015183600f0b614c7990919063ffffffff16565b6020840151905b6040805160608101825260008082526020820181905291810191909152614af383614bda565b600f9290920b602083015250919050565b6040805160608082018352600080835260208084018290528385018290528451928301855281835282018190529281019290925290614b4f614b458561434a565b6143ab8886614869565b9150614b5f846143ab8786614869565b905094509492505050565b60006001600160601b038211156131c05760405162461bcd60e51b8152600401611c22906159f8565b614b9b614d07565b8151600f0b81526020820151614bb090614bda565b6020820152919050565b6000611b80600f83900b846158e0565b6000611b80600f83900b84615a3e565b6040805160608101825260008082526020808301828152838501928352855163ffffffff16845290850151600f0b9052929091015190915290565b80600f81900b81146134a15760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401611c22565b6000611b808284615c55565b6040518060600160405280614c98614cac565b815260006020820181905260409091015290565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a082015260c0810182905260e081018290526101008101829052610120810182905261014081019190915290565b60405180604001604052806000600f0b8152602001614d3f604080516060810182526000808252602082018190529181019190915290565b905290565b6001600160a01b0381168114610cbd57600080fd5b600080600060608486031215614d6e57600080fd5b8335614d7981614d44565b92506020840135614d8981614d44565b91506040840135614d9981614d44565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b60405161016081016001600160401b0381118282101715614ddd57614ddd614da4565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614e0b57614e0b614da4565b604052919050565b8015158114610cbd57600080fd5b60008060008385036080811215614e3757600080fd5b8435614e4281614d44565b93506020850135614e5281614d44565b92506040603f1982011215614e6657600080fd5b50604051604081018181106001600160401b0382111715614e8957614e89614da4565b6040908152850135614e9a81614e13565b81526060850135614eaa81614e13565b602082015292959194509192509050565b60008060408385031215614ece57600080fd5b8235614ed981614d44565b91506020830135614ee981614d44565b809150509250929050565b60008083601f840112614f0657600080fd5b5081356001600160401b03811115614f1d57600080fd5b60208301915083602082850101111561481657600080fd5b60008060008060608587031215614f4b57600080fd5b8435614f5681614d44565b93506020850135614f6681614e13565b925060408501356001600160401b03811115614f8157600080fd5b614f8d87828801614ef4565b95989497509550505050565b60005b83811015614fb4578181015183820152602001614f9c565b50506000910152565b60008151808452614fd5816020860160208601614f99565b601f01601f19169290920160200192915050565b602081526000611b806020830184614fbd565b60008060006040848603121561501157600080fd5b833561501c81614d44565b925060208401356001600160401b0381111561503757600080fd5b61504386828701614ef4565b9497909650939450505050565b60006020828403121561506257600080fd5b813561059981614d44565b6001600160801b0381168114610cbd57600080fd5b60008060008060006080868803121561509a57600080fd5b85356150a581614d44565b945060208601356150b581614d44565b935060408601356150c58161506d565b925060608601356001600160401b038111156150e057600080fd5b6150ec88828901614ef4565b969995985093965092949392505050565b60008060006060848603121561511257600080fd5b833561511d81614d44565b9250602084013561512d81614d44565b929592945050506040919091013590565b80600b0b8114610cbd57600080fd5b6000806000806080858703121561516357600080fd5b843561516e81614d44565b9350602085013561517e81614d44565b9250604085013561518e81614d44565b9150606085013561519e8161513e565b939692955090935050565b60008060008060008060a087890312156151c257600080fd5b86356151cd81614d44565b955060208701356151dd81614d44565b945060408701356151ed81614d44565b935060608701356151fd8161513e565b925060808701356001600160401b0381111561521857600080fd5b61522489828a01614ef4565b979a9699509497509295939492505050565b60008060008060008060a0878903121561524f57600080fd5b863561525a81614d44565b9550602087013561526a81614d44565b9450604087013561527a81614d44565b93506060870135925060808701356001600160401b0381111561521857600080fd5b600080600080606085870312156152b257600080fd5b84356152bd81614d44565b93506020850135614f6681614d44565b600080600080608085870312156152e357600080fd5b84356152ee81614d44565b935060208501356152fe81614d44565b9250604085013561530e81614d44565b9396929550929360600135925050565b63ffffffff81168114610cbd57600080fd5b600080600083850360a081121561534657600080fd5b843561535181614d44565b93506060601f198201121561536557600080fd5b50604051606081018181106001600160401b038211171561538857615388614da4565b60405260208501356153998161531e565b81526040850135600f81900b81146153b057600080fd5b60208201526060850135604082015291506080840135614d998161531e565b80516134a181614d44565b6000602082840312156153ec57600080fd5b815161059981614d44565b60006020828403121561540957600080fd5b815161059981614e13565b634e487b7160e01b600052600160045260246000fd5b60008151808452602080850194506020840160005b8381101561545b5781518752958201959082019060010161543f565b509495945050505050565b8281526040602082015260006105ad604083018461542a565b82151581526040602082015260006105ad6040830184614fbd565b6000806000606084860312156154af57600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156154da57600080fd5b5051919050565b6001600160a01b038881168252600b88810b602084015287810b604084015286810b6060840152908516608083015283900b60a082015260e060c082018190526000906122c290830184614fbd565b60018060a01b03851681528360208201528260408201526080606082015260006146016080830184614fbd565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820182811260008312801582168215821617156155a9576155a9615573565b505092915050565b6000602082840312156155c357600080fd5b81516105998161513e565b600b81810b9083900b016b7fffffffffffffffffffffff81136b7fffffffffffffffffffffff1982121715611b8357611b83615573565b60006001600160401b0382111561561e5761561e614da4565b5060051b60200190565b600082601f83011261563957600080fd5b8151602061564e61564983615605565b614de3565b8083825260208201915060208460051b87010193508684111561567057600080fd5b602086015b8481101561568c5780518352918301918301615675565b509695505050505050565b6000602082840312156156a957600080fd5b81516001600160401b038111156156bf57600080fd5b6105ad84828501615628565b60018060a01b038416815282602082015260606040820152600061461b606083018461542a565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b805160ff811681146134a157600080fd5b80516001600160e01b0319811681146134a157600080fd5b600082601f83011261575557600080fd5b81516001600160401b0381111561576e5761576e614da4565b615781601f8201601f1916602001614de3565b81815284602083860101111561579657600080fd5b6105ad826020830160208701614f99565b6000602082840312156157b957600080fd5b81516001600160401b03808211156157d057600080fd5b9083019061016082860312156157e557600080fd5b6157ed614dba565b6157f68361571b565b81526158046020840161571b565b60208201526040830151604082015261581f606084016153cf565b60608201526158306080840161572c565b608082015260a08301518281111561584757600080fd5b61585387828601615744565b60a08301525060c083015160c082015260e083015160e082015261010091508183015182820152610120915061588a8284016153cf565b82820152610140915061589e8284016153cf565b91810191909152949350505050565b6000602082840312156158bf57600080fd5b81516105998161531e565b634e487b7160e01b600052601260045260246000fd5b6000826158ef576158ef6158ca565b600160ff1b82146000198414161561590957615909615573565b500590565b81810381811115611b8357611b83615573565b60006080828403121561593357600080fd5b604051608081018181106001600160401b038211171561595557615955614da4565b60405282516159638161506d565b815260208301516159738161531e565b602082015260408301516159868161513e565b60408201526060928301519281019290925250919050565b600f82810b9082900b0360016001607f1b0319811260016001607f1b0382131715611b8357611b83615573565b600f81810b9083900b0160016001607f1b03811360016001607f1b031982121715611b8357611b83615573565b60208082526026908201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960408201526536206269747360d01b606082015260800190565b80820260008212600160ff1b84141615615a5a57615a5a615573565b8181058314821517611b8357611b83615573565b87815260e060208201526000615a8760e0830189614fbd565b6001600160a01b03978816604084015295151560608301525092909416608083015260a082015260c0019190915292915050565b60008251615acd818460208701614f99565b9190910192915050565b60008060408385031215615aea57600080fd5b82516001600160401b0380821115615b0157600080fd5b818501915085601f830112615b1557600080fd5b81516020615b2561564983615605565b82815260059290921b84018101918181019089841115615b4457600080fd5b948201945b83861015615b6b578551615b5c8161531e565b82529482019490820190615b49565b91880151919650909350505080821115615b8457600080fd5b50615b9185828601615628565b9150509250929050565b600082600f0b82600f0b0280600f0b9150808214615bbb57615bbb615573565b5092915050565b600081600f0b60016001607f1b03198103615bdf57615bdf615573565b60000392915050565b8181036000831280158383131683831282161715615bbb57615bbb615573565b63ffffffff828116828216039080821115615bbb57615bbb615573565b6000600160ff1b8201615c3a57615c3a615573565b5060000390565b600082615c5057615c506158ca565b500490565b600081600f0b83600f0b80615c6c57615c6c6158ca565b60016001607f1b0319821460001982141615615c8a57615c8a615573565b9005939250505056fea26469706673582212204a304500f3504762232d06f5256854d4730809ad6080487aced97773d011589b64736f6c63430008170033" = "0x60c06040523480156200001157600080fd5b5060405162005dbd38038062005dbd833981016040819052620000349162000065565b6001600160a01b039182166080521660a052620000a4565b6001600160a01b03811681146200006257600080fd5b50565b600080604083850312156200007957600080fd5b825162000086816200004c565b602084015190925062000099816200004c565b809150509250929050565b60805160a051615cc9620000f46000396000818161040b0152612516015260008181610c7601528181610d5401528181610f9c015281816136880152818161389701526139bc0152615cc96000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c806352d1902d1161010f5780639b2e48bc116100a2578063e8e7e2d111610071578063e8e7e2d11461052e578063eccfc6a514610541578063f0b7b91514610554578063fa48736d1461056757600080fd5b80639b2e48bc146104c7578063c782eb9c146104f5578063d2c0d54214610508578063e6a1e8881461051b57600080fd5b80636d1007a6116100de5780636d1007a6146104735780637730599e146104865780637b2cc0da146104ac5780639903ad38146104bf57600080fd5b806352d1902d146103f05780635437dd97146104065780635a6c6dbc1461042d5780635cfd50d71461044057600080fd5b80633fd4176a116101875780634d5c91ec116101565780634d5c91ec1461037e5780634e9ced57146103ab5780634fe9c291146103be57806350d75d25146103e857600080fd5b80633fd4176a146103185780634543b7451461033357806346951954146103565780634b839e0b1461036b57600080fd5b806330925b79116101c357806330925b791461029c57806337bd42e0146102af578063398c74e1146102ea5780633c56f090146102fd57600080fd5b80630735d750146101f55780630779d365146102205780630f1ac4951461024b57806310dc87921461027c575b600080fd5b610208610203366004614d59565b61057a565b604051600b9190910b81526020015b60405180910390f35b61023361022e366004614e21565b6105a0565b6040516001600160a01b039091168152602001610217565b61025e610259366004614ebb565b6105b5565b60408051938452600b9290920b602084015290820152606001610217565b61028f61028a366004614f35565b61060d565b6040516102179190614fe9565b61028f6102aa366004614ffc565b61095a565b6102c26102bd366004615050565b610969565b604080516001600160a01b0390941684526020840192909252600b0b90820152606001610217565b61028f6102f8366004615082565b610a0a565b61023373__$fb8a7211f6e0fb144ea3d242e9f7f2eec2$__81565b61023373__$97ed594b3f931187fb739dcb88a7dff641$__81565b6103466103413660046150fd565b610c03565b6040519015158152602001610217565b610369610364366004615050565b610c6b565b005b6103466103793660046150fd565b610cc0565b61039161038c36600461514d565b610dd7565b60408051600b93840b81529190920b602082015201610217565b6102086103b9366004615050565b610ef6565b6103d16103cc366004614ebb565b610f97565b604080519215158352602083019190915201610217565b610233611032565b6103f8611061565b604051908152602001610217565b6102337f000000000000000000000000000000000000000000000000000000000000000081565b61028f61043b3660046151a9565b6110c5565b61045361044e366004614ebb565b611837565b604080519485526020850193909352918301526060820152608001610217565b61028f610481366004615236565b611859565b7fdfd8ece9bfbcb8c5c540edb935641f63d67686490a1ab97f000288759f30a9466103f8565b6103466104ba366004614ebb565b611b74565b610369611b89565b6104da6104d53660046150fd565b611c97565b60408051938452602084019290925290820152606001610217565b610346610503366004614ebb565b611ee3565b61028f61051636600461529c565b611f51565b61025e610529366004614d59565b6120a5565b61020861053c366004614ebb565b6120dd565b6103f861054f3660046152cd565b612264565b61028f610562366004614ffc565b6122cf565b610346610575366004615330565b6122de565b6000806105908561058b8686612377565b6123e7565b60200151925050505b9392505050565b60006105ad8484846124ae565b949350505050565b604080516001600160a01b03841660208201526000918291829182916105eb910160405160208183030381529060405286612740565b6020810151815160409092015163ffffffff9091169891975095509350505050565b60606000856001600160a01b0316632b4116f76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561064f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067391906153da565b905060006106b78286868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506127ff92505050565b905060008160600151905085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093975061070892508691508b9050846129c3565b90508015158815151461094e57604083810151905163d877ec8760e01b81526001600160a01b0384811660048301528a1515602483015263ffffffff9092166044820152908a169063d877ec87906064016020604051808303816000875af1158015610778573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079c91906153f7565b6107a8576107a8615414565b87156108605760006107c485846001600160a01b038d166129d1565b9050846001600160a01b03166312a6a3f86107df858d612a70565b61080b60405180604001604052808f6001600160a01b031681526020018663ffffffff16815250612ac0565b6040518363ffffffff1660e01b8152600401610828929190615466565b600060405180830381600087803b15801561084257600080fd5b505af1158015610856573d6000803e3d6000fd5b50505050506108f2565b600061086d85848c612b27565b915050846001600160a01b03166327048397610889858d612a70565b6040516001600160e01b031960e084901b168152600481019190915260016024820152604401600060405180830381600087803b1580156108c957600080fd5b505af11580156108dd573d6000803e3d6000fd5b505050506108f085848360200151612c01565b505b816001600160a01b0316896001600160a01b0316856001600160a01b03167ff357a2e6919da4efedb0301baf1caaed2bca70b115b913f9add41bbefc75c9b38b8760a0015160405161094592919061547f565b60405180910390a45b50505050949350505050565b60606105ad846000858561060d565b60008060006109fd846001600160a01b0316632b4116f76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d391906153da565b604080516001600160a01b0390921660208301520160405160208183030381529060405285612c8c565b9250925092509193909250565b6060856001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6e91906153da565b6001600160a01b0316610b18876001600160a01b0316632b4116f76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ab8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610adc91906153da565b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506127ff92505050565b606001516001600160a01b031614610b4357604051633a87e56560e01b815260040160405180910390fd5b82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604051631b16777760e01b81526001600160a01b0389811660048301526001600160801b038916602483015293945092891692631b167777925060440190506020604051808303816000875af1158015610bd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf991906153f7565b5095945050505050565b6000610c0f8433612d1d565b1515600003610c31576040516390028c3760e01b815260040160405180910390fd5b604080516001600160a01b0386166020820152610c609101604051602081830303815290604052338585612dca565b506001949350505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610cb457604051630b00ec8f60e11b815260040160405180910390fd5b610cbd81612e30565b50565b604051633acd4df360e21b81526001600160a01b03838116600483015260248201839052600091829186169063eb3537cc90604401606060405180830381865afa158015610d12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d36919061549a565b5050905060008112610d4c576001915050610599565b600080610d797f000000000000000000000000000000000000000000000000000000000000000088613038565b91509150610dcc83610dc5610dbc8a604051602001610da791906001600160a01b0391909116815260200190565b6040516020818303038152906040528a612740565b60400151613156565b84846131c4565b979650505050505050565b604080516001600160a01b0386166020820152600091829182910160405160208183030381529060405290506000610e0f8787612377565b90506000610e1d8389613212565b90506000610e3a60405180602001604052806000815250896132be565b90506000610e488585613335565b9050600080610e5684613365565b9050600080610e688c600b0b8661337f565b90506000610e768a8f61338b565b905042610e9088610e8785856133a5565b8b9190846133b1565b919a5098509350610eb3610ead88610ea8878961337f565b6133a5565b8361337f565b9550610ec186600f0b61347d565b9c50610ecf84600f0b61347d565b9b5060008d600b0b1215610ee25760009c505b505050505050505050505094509492505050565b600080826001600160a01b0316632b4116f76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5b91906153da565b604080516001600160a01b038316602082015291925061059991610f8f91016040516020818303038152906040528561338b565b600f0b61347d565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ff8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101c91906154c8565b9050611029848483610cc0565b91509250929050565b600061105c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b6000306001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110a1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105c91906154c8565b60606110d18786612d1d565b15156000036110f3576040516390028c3760e01b815260040160405180910390fd5b600084600b0b1215611118576040516315f2566360e01b815260040160405180910390fd5b611120614c85565b6111608885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506127ff92505050565b815261116c8787612377565b6020828101918252604080516001600160a01b038c1681840152815180820390930183528101905290516111a09190613335565b600f0b60408083019190915280516020601f86018190048102820181019092528481529085908590819084018382808284376000920182905250939550505050600b86900b1380156112515750856001600160a01b031663cb8599f06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561122b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124f91906153f7565b155b156112f1578060000151606001516001600160a01b0316866001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ca91906153da565b6001600160a01b0316146112f157604051637761a5e560e01b815260040160405180910390fd5b604080516001600160a01b038a166020820152600091829161133691016040516020818303038152906040528a8a86602001518b600b0b8860000151604001516134a6565b92509250508260000151606001516001600160a01b0316896001600160a01b0316146114d157600087600b0b131561138157604051637b3e931f60e11b815260040160405180910390fd5b82516040908101519051633acd4df360e21b81526001600160a01b038b8116600483015260248201929092526000918c169063eb3537cc90604401606060405180830381865afa1580156113d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113fd919061549a565b50506040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091529091506001600160a01b03808d168083528c8216604080850191909152875160609081015190931660a08501526020808901519385019390935280519283019190915261149291610dbc91016040516020818303038152906040528d612740565b60808201526020810182905260008212156114b5576114b081613656565b6114ce565b60405163666f381d60e01b815260040160405180910390fd5b50505b6114e28a898b866020015186613893565b8260000151606001516001600160a01b0316896001600160a01b0316036115b65782516040908101519051633acd4df360e21b81526001600160a01b038b8116600483015260248201929092526000918c169063eb3537cc90604401606060405180830381865afa15801561155b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157f919061549a565b50509050600088600b0b1380156115965750600081125b156115b4576040516333115c3f60e01b815260040160405180910390fd5b505b60006115c18b613c2b565b90506001600160a01b0381161561175d57600088600b0b1380156115ea57506040840151600f0b155b1561165b5760405163f7e3d98360e01b81526001600160a01b038c811660048301528b811660248301528a8116604483015282169063f7e3d98390606401600060405180830381600087803b15801561164257600080fd5b505af1158015611656573d6000803e3d6000fd5b505050505b600088600b0b138015611675575060008460400151600f0b135b156116e6576040516375aa53e560e11b81526001600160a01b038c811660048301528b811660248301528a8116604483015282169063eb54a7ca90606401600060405180830381600087803b1580156116cd57600080fd5b505af11580156116e1573d6000803e3d6000fd5b505050505b87600b0b60000361175d5760405163ef1f023760e01b81526001600160a01b038c811660048301528b811660248301528a8116604483015282169063ef1f023790606401600060405180830381600087803b15801561174457600080fd5b505af1158015611758573d6000803e3d6000fd5b505050505b50604080516001600160a01b038c166020820152600091829161179091016040516020818303038152906040528b612c8c565b92505091508a6001600160a01b03168a6001600160a01b03168d6001600160a01b03167fc4bd0e4bfe3a83cbd5a7a71bb33bcb6bed9e0c24d710f3fb51c85caf1cd3af368860000151606001516117ed8a60400151600f0b61347d565b6117f98a600f0b61347d565b6118058a600f0b61347d565b8c5160a0015160405161182095949392918c918c91906154e1565b60405180910390a450505050509695505050505050565b600080600080611848868642611c97565b919890975090955042945092505050565b6060600061189d8885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506127ff92505050565b905083838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509294506118e592508a9150889050612d1d565b1515600003611907576040516390028c3760e01b815260040160405180910390fd5b856001600160a01b031663cb8599f06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611945573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196991906153f7565b611a045780606001516001600160a01b0316866001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119dd91906153da565b6001600160a01b031614611a0457604051637761a5e560e01b815260040160405180910390fd5b80606001516001600160a01b0316876001600160a01b031614611a3a57604051637b3e931f60e11b815260040160405180910390fd5b604080516001600160a01b038a166020820152600091611a789101604051602081830303815290604052836060015189611a738a613156565b613cda565b6040516379359f6f60e01b81526001600160a01b038b81166004830152919350908b1691506379359f6f90602401602060405180830381865afa158015611ac3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae791906153f7565b15611b05576040516333115c3f60e01b815260040160405180910390fd5b876001600160a01b0316876001600160a01b03168a6001600160a01b03167f6e8348961b299f365797c30cd18a91284b046858689eeb6150a5ba432fe6583e85606001518a868860a00151604051611b609493929190615530565b60405180910390a450509695505050505050565b6000611b808383612d1d565b90505b92915050565b600054610100900460ff1615808015611ba95750600054600160ff909116105b80611bc35750303b158015611bc3575060005460ff166001145b611c2b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015611c4e576000805461ff0019166101001790555b8015610cbd576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a150565b604080516001600160a01b0385166020820152600091829182918291611ccd910160405160208183030381529060405287612740565b9050611cd98787612d1d565b15611d53576040516336062c1560e11b815263ffffffff861660048201526001600160a01b03871690636c0c582a90602401602060405180830381865afa158015611d28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d4c91906154c8565b9350611da0565b611d9d85611d978360408051606081018252600080825260208083018281529383019182528451600b0b9093529183015163ffffffff168152608090920151905290565b90613d53565b93505b6000806000611daf8a8a613d81565b9150915060005b8251811015611eb4576000828281518110611dd357611dd361555d565b602002602001015160001c9050600080611dee8e8e85612b27565b9150915081611dff57611dff615414565b826001600160a01b031681600001516001600160a01b031614611e2457611e24615414565b604051637d6c008d60e01b81526001600160a01b038e8116600483015263ffffffff8e166024830152841690637d6c008d90604401602060405180830381865afa158015611e76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9a91906154c8565b611ea49088615589565b9650505050806001019050611db6565b5050508085611ec39190615589565b9450611ed28260400151613156565b935060009250505093509350939050565b6000611b80836001600160a01b0316632b4116f76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4a91906153da565b84846129c3565b6060611ff4856001600160a01b0316632b4116f76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb891906153da565b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506127ff92505050565b5082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040516377329f3560e01b81526001600160a01b038881166004830152939450928816926377329f35925060240190506020604051808303816000875af1158015612078573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209c91906153f7565b50949350505050565b6000806000806120b98761058b8888612377565b8051602082015160409092015163ffffffff9091169a919950975095505050505050565b604080516001600160a01b038416602082015260009161211c91610f8f91612115910160405160208183030381529060405285613212565b6020015190565b90506121288383612d1d565b1561219c57816001600160a01b031663a94ff3406040518163ffffffff1660e01b8152600401602060405180830381865afa15801561216b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218f91906155b1565b61219990826155ce565b90505b6000806121a98585613d81565b9150915060005b825181101561225b5760008282815181106121cd576121cd61555d565b60209081029190910101516040516314e7a30760e21b81526001600160a01b0388811660048301529192509082169063539e8c1c90602401602060405180830381865afa158015612222573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224691906155b1565b61225090866155ce565b9450506001016121b0565b50505092915050565b604080516001600160a01b038616602082015260009182910160408051601f19818403018152602083019091526000808352909250906122c2906122a890876132be565b6122b186613156565b6122bb858a613212565b9190613e0b565b9998505050505050505050565b60606105ad846001858561060d565b60006122ea8433612d1d565b151560000361230c576040516390028c3760e01b815260040160405180910390fd5b604080516001600160a01b0386166020820152600091016040516020818303038152906040529050612352813361234d876123478633613212565b90613e5f565b613f02565b5061236b81336001612365886020015190565b87613fa3565b50600195945050505050565b604080514660208201526080918101829052601060a08201526f646973747269627574696f6e466c6f7760801b60c08201526001600160a01b03808516606083015283169181019190915260009060e0015b60405160208183030381529060405280519060200120905092915050565b60408051606081018252600080825260208201819052918101829052604051636c2d9f2f60e01b815230600482015260248101849052600160448201526124a3906001600160a01b03861690636c2d9f2f90606401600060405180830381865afa158015612459573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526124819190810190615697565b6000815181106124935761249361555d565b602002602001015160001c61404a565b909590945092505050565b60006001600160a01b0383166124d7576040516382c5d83760e01b815260040160405180910390fd5b6124e18484612d1d565b156124ff57604051634d5c451360e11b815260040160405180910390fd5b6040516357677fc760e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015280851660248301528516604482015282511515606482015260208301511515608482015273__$fb8a7211f6e0fb144ea3d242e9f7f2eec2$__9063aeceff8e9060a401602060405180830381865af415801561259c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125c091906153da565b6040805160018082528183019092529192506000919060208083019080368337019050509050600160001b816000815181106125fe576125fe61555d565b602090810291909101015260405163048620af60e11b81526001600160a01b0386169063090c415e9061263a90859060009086906004016156cb565b600060405180830381600087803b15801561265457600080fd5b505af1158015612668573d6000803e3d6000fd5b5050505060006126778661409f565b90506001600160a01b038116156126f25760005a6040516335313c2160e11b81526001600160a01b03868116600483015291925090831690636a62784290602401600060405180830381600087803b1580156126d257600080fd5b505af19250505080156126e3575060015b6126f0576126f0816140e5565b505b6040516001600160a01b03848116825280871691908816907f9c5d829b9b23efc461f9aeef91979ec04bb903feb3bee4f26d22114abfc7335b9060200160405180910390a350509392505050565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526105ad8380602001905181019061278291906153da565b6001600160a01b0316634b61cc333085600060026040518563ffffffff1660e01b81526004016127b594939291906156f2565b600060405180830381865afa1580156127d2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127fa9190810190615697565b61410c565b612807614cac565b336001600160a01b0316836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa15801561284f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287391906153da565b6001600160a01b0316146128bd5760405162461bcd60e51b81526020600482015260116024820152701d5b985d5d1a1bdc9a5e9959081a1bdcdd607a1b6044820152606401611c22565b604051632fd0a1cd60e21b8152339063bf428734906128e0908590600401614fe9565b602060405180830381865afa1580156128fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061292191906153f7565b61295b5760405162461bcd60e51b815260206004820152600b60248201526a0d2dcecc2d8d2c840c6e8f60ab1b6044820152606401611c22565b604051631fb6491d60e11b81523390633f6c923a9061297e908590600401614fe9565b600060405180830381865afa15801561299b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b8091908101906157a7565b600080610bf9858486612b27565b604051630a32470160e41b81526001600160a01b0380851660048301528316602482015260016044820152600160801b60648201526084810182905260009073__$97ed594b3f931187fb739dcb88a7dff641$__9063a32470109060a401602060405180830381865af4158015612a4c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ad91906158ad565b604080514660208201526080918101829052600a60a0820152693837b7b626b2b6b132b960b11b60c08201526001600160a01b03808516606083015283169181019190915260009060e0016123c9565b6040805160018082528183019092526060916020808301908036833701905050905081600001516001600160a01b031660a0836020015163ffffffff16901b1760001b81600081518110612b1657612b1661555d565b602002602001018181525050919050565b6040805180820190915260008082526020820181905290612bf5856001600160a01b0316636c2d9f2f30612b5b8888612a70565b6040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260016044820152606401600060405180830381865afa158015612bab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612bd39190810190615697565b600081518110612be557612be561555d565b602002602001015160001c6141d8565b90969095509350505050565b604051631528e57f60e31b81526001600160a01b038085166004830152831660248201526001604482015263ffffffff8216606482015273__$97ed594b3f931187fb739dcb88a7dff641$__9063a9472bf89060840160006040518083038186803b158015612c6f57600080fd5b505af4158015612c83573d6000803e3d6000fd5b50505050505050565b6000806000836001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ccf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf391906153da565b9250612cff8484614216565b91508282612d10610f8f8886613335565b9250925092509250925092565b600060e080846001600160a01b0316634b61cc333086600060016040518563ffffffff1660e01b8152600401612d5694939291906156f2565b600060405180830381865afa158015612d73573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612d9b9190810190615697565b600081518110612dad57612dad61555d565b602002602001015160001c901b901c600116600114905092915050565b6060826001600160a01b0316846001600160a01b031603612dec5750836105ad565b6000612df88686613212565b90506000612e068786613212565b9050612e1382828661426e565b9092509050612e23878784613f02565b9650610dcc878683613f02565b6000612e5a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b031603612eb05760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c650000006044820152606401611c22565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612eee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f1291906154c8565b612f1a611061565b14612f735760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b6064820152608401611c22565b6001600160a01b0381163003612fcb5760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f70000000000000006044820152606401611c22565b612ff3817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc61301c611061565b604080519182526001600160a01b038416602083015201611c8c565b6000806000846001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561307b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061309f91906153da565b60405163407b865d60e11b81526001600160a01b03878116600483015286811660248301527fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f7860448301529192506000918316906380f70cba90606401602060405180830381865afa158015613119573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061313d91906154c8565b63ffffffff602082901c81169891169650945050505050565b60006001600160ff1b038211156131c05760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401611c22565b5090565b6000836000036131d6575060006105ad565b60006131e28587615589565b905060006131f085876158e0565b90506131fc848661590e565b61320682846158e0565b13979650505050505050565b6040805160608101825260008082526020820181905291810191909152600061327b8480602001905181019061324891906153da565b6001600160a01b0316634b61cc333086600060026040518563ffffffff1660e01b81526004016127b594939291906156f2565b9150506105ad8160408051606081018252600080825260208083018281529383019182528451600b0b9093529183015163ffffffff168152608090920151905290565b6132c6614d07565b6000826001600160a01b031663de7b54d96040518163ffffffff1660e01b8152600401608060405180830381865afa158015613306573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061332a9190615921565b90506105ad816142cc565b6000806133558480602001905181019061334f91906153da565b846123e7565b60200151600b0b95945050505050565b80516020808301510151600091611b8391600f0b9061433e565b6000611b80828461599e565b6000806133988484612c8c565b600b0b9695505050505050565b6000611b8082846159cb565b60408051606081018252600080825260208201819052918101919091526133d6614d07565b604080516060808201835260008083526020808401829052838501829052845180840186528281528082018390528086018390528551938401865282845290830182905293820181905292908361342c8a613365565b90506134448a61343b8361434a565b8691908b614355565b5090935061345890508a61343b838c6133a5565b9097509550915061346d826123478d86613e5f565b9650505050509450945094915050565b80600b81900b81146134a15760405162461bcd60e51b8152600401611c22906159f8565b919050565b6060600080866001600160a01b0316886001600160a01b0316036134cc576134cc615414565b60006134d88a8a613212565b905060006134e68b8a613212565b905060006134f48c8b6132be565b604080516060810182526000808252602082018190529181019190915290915061351e8d8c61338b565b600f0b8152600061352f8e8c613335565b9050600061353c84613365565b9050600061354a8c8461337f565b90506135678561355e8387600001516133a5565b8891908e6133b1565b995090965094506000600f89900b121561358357613583615414565b61359b61359484610ea88b8661337f565b855161337f565b9850600089600f0b126135b457600060208501526135ca565b6135bd8961434a565b600f0b6020850152600098505b6135d4898461337f565b600f0b604085018190526135ec90889088908e6143bd565b80975081985050505050506136028d8d86613f02565b9c5061360f8d8c85613f02565b9c5061361c8d8c84614488565b9c506136308d8b8e8e8a8660400151614538565b9c506136428d8c83602001518b61460b565b9d959c50939a509398505050505050505050565b600061366a826000015183606001516123e7565b915050600061367c8260400151613156565b905060008060006136b17f00000000000000000000000000000000000000000000000000000000000000008760000151613038565b915091506136c98660200151876080015184846131c4565b925050506000846080015185602001516136e39190615589565b9050600081126137d65760808501516000906136ff8386615a3e565b61370991906158e0565b905085600001516001600160a01b0316631863e8098760600151600286613731576001613734565b60005b6040805160ff938416602082015292909116908201526060016040516020818303038152906040528960a00151878b6040015161377088614624565b61377c89600019615a3e565b6040518863ffffffff1660e01b815260040161379e9796959493929190615a6e565b600060405180830381600087803b1580156137b857600080fd5b505af11580156137cc573d6000803e3d6000fd5b505050505061388c565b8451606080870151604080516002602082018190529181019190915286936001600160a01b031692631863e8099291016040516020818303038152906040528960a0015160008b6040015161382a88614624565b6138368a600019615a3e565b6040518863ffffffff1660e01b81526004016138589796959493929190615a6e565b600060405180830381600087803b15801561387257600080fd5b505af1158015613886573d6000803e3d6000fd5b50505050505b5050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061391791906153da565b60405163407b865d60e11b81523360048201526001600160a01b0388811660248301527feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc460448301529192506000918316906380f70cba90606401602060405180830381865afa15801561398f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139b391906154c8565b905060006139e17f000000000000000000000000000000000000000000000000000000000000000089613038565b50905060006139f089876123e7565b915060009050613a04600f87900b84614676565b905083613a1082614624565b108015613a205750600086600f0b135b15613a3157613a2e84613156565b90505b6000613a4982613a448560400151613156565b61468c565b90506000613a8360405180606001604052804263ffffffff168152602001613a738b600f0b61347d565b600b0b8152602001859052614698565b60405163a1b2bf8b60e01b81529091506001600160a01b038d169063a1b2bf8b90613ab4908c908590600401615466565b600060405180830381600087803b158015613ace57600080fd5b505af1158015613ae2573d6000803e3d6000fd5b50505050506000613b218c604051602001613b0c91906001600160a01b0391909116815260200190565b6040516020818303038152906040528b612740565b9050613b4382613b348360400151613156565b613b3e9190615589565b614624565b60408201526001600160a01b038c1663090c415e8b6000613b63856146f8565b6040518463ffffffff1660e01b8152600401613b81939291906156cb565b600060405180830381600087803b158015613b9b57600080fd5b505af1158015613baf573d6000803e3d6000fd5b50505050896001600160a01b03168b6001600160a01b03168d6001600160a01b03167f589f74ba61521b98a96e2f65e02028ca5af0c5990e3d9536176b37ee6b62013785613bfc88614624565b6040808801518151938452602084019290925282015260600160405180910390a4505050505050505050505050565b60408051600481526024810182526020810180516001600160e01b03166377a1e96360e11b1790529051600091829182916001600160a01b03861691613c719190615abb565b600060405180830381855afa9150503d8060008114613cac576040519150601f19603f3d011682016040523d82523d6000602084013e613cb1565b606091505b50915091508115613cd35780806020019051810190613cd091906153da565b92505b5050919050565b60606000836001600160a01b0316856001600160a01b031603613cff57613cff615414565b6000613d0b8787613212565b90506000613d1988876132be565b9050613d26828287613e0b565b94509092509050613d38888884613f02565b9750613d45888783614488565b989297509195505050505050565b6000611b80613d77613d698486600001516147a3565b6020860151600f0b90614676565b84604001516147af565b60608073__$97ed594b3f931187fb739dcb88a7dff641$__6306967a8c85856001600160801b6040518563ffffffff1660e01b8152600401613dc694939291906156f2565b600060405180830381865af4158015613de3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526124a39190810190615ad7565b6040805160608101825260008082526020820181905291810191909152613e30614d07565b6000613e3c85856147bb565b9092509050613e54613e4d8261481d565b8790614828565b925093509350939050565b60408051606081018252600080825260208201819052918101919091528151835160009163ffffffff908116911611613e99578251613e9c565b83515b90506000613eaa8583614869565b90506000613eb88584614869565b63ffffffff8416855260408084015190820151919250613ed7916147af565b604085015260208083015190820151613ef091906133a5565b600f0b60208501525091949350505050565b60606000613f108585612740565b905084806020019051810190613f2691906153da565b6001600160a01b031663090c415e856000613f4a87866040015187606001516148af565b6040518463ffffffff1660e01b8152600401613f68939291906156cb565b600060405180830381600087803b158015613f8257600080fd5b505af1158015613f96573d6000803e3d6000fd5b5096979650505050505050565b60606000856001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa158015613fe5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061400991906153da565b905060006140178783614216565b905085156140305761402d85610ea88a84613335565b94505b61403e88888484898961496e565b98975050505050505050565b6040805160608101825260008082526020820181905291810182905282158015925061409a5760c083901c63ffffffff168152606083901c600b0b60208201526001600160601b03831660408201525b915091565b60408051600481526024810182526020810180516001600160e01b0316632c836c6b60e21b1790529051600091829182916001600160a01b03861691613c719190615abb565b6140ee81614a0a565b15610cbd576040516320afada560e01b815260040160405180910390fd5b6040805160a081018252600080825260208201819052918101829052606081018290526080810182905260008360008151811061414b5761414b61555d565b602002602001015160001c905060008460018151811061416d5761416d61555d565b602002602001015160001c905060008211806141895750600081115b935083156141d15760a082901d600b0b8352608082811c63ffffffff1660208086019190915283901c6001600160601b03166040850152600180841614606085015283018190525b5050915091565b604080518082019091526000808252602082015281158015919061409a576001600160a01b038316815260a09290921c63ffffffff16602083015291565b604080514660208201526080918101829052601260a082015271706f6f6c41646a7573746d656e74466c6f7760701b60c08201526001600160a01b03808516606083015283169181019190915260009060e0016123c9565b60408051606080820183526000808352602080840182905283850182905284519283018552818352820181905292810192909252906142b66142af8461481d565b8690614828565b91506142c28484614828565b9050935093915050565b6142d4614d07565b60405180604001604052806142ec8460000151614a20565b600f0b815260408051606080820183526000808352602080840182905292840152825180820184528783015163ffffffff16815287840151600b0b818401529601519186019190915201929092525090565b6000611b808284615b9b565b6000611b8382615bc2565b604080516060810182526000808252602082018190529181019190915261437a614d07565b60006143908561438a8887614a3c565b90614a6a565b90925090506143b16143a18261434a565b6143ab8987614869565b90614acd565b92509450945094915050565b60408051606080820183526000808352602080840182905283850182905284518084018652828152808201839052808601839052855180850187528381528083018490528087018490528651808601885284815280840185905280880185905287519586018852848652858401859052968501939093529088015193949093919290916144568961444d8361434a565b8691908a614b04565b5092506144678961444d838b6133a5565b95509150614479826123478c86613e5f565b95505050505094509492505050565b60408051634a0d910160e01b81528251600f90810b6004830152602080850151805163ffffffff1660248501529081015190910b60448301529091015160648201526060906001600160a01b03841690634a0d9101906084016020604051808303816000875af1158015614500573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061452491906153f7565b61453057614530615414565b509192915050565b606060008780602001905181019061455091906153da565b9050600061455e82896123e7565b915050816001600160a01b031663a1b2bf8b896145ac60405180606001604052804263ffffffff1681526020016145978b600f0b61347d565b600b0b81526020018660400151815250614698565b6040518363ffffffff1660e01b81526004016145c9929190615466565b600060405180830381600087803b1580156145e357600080fd5b505af11580156145f7573d6000803e3d6000fd5b5050505088925050505b9695505050505050565b606061461b858560008686613fa3565b95945050505050565b6000808212156131c05760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f7369746976656044820152606401611c22565b6000611b8063ffffffff8316600f85900b615a3e565b6000611b808284615be8565b604080516001808252818301909252606091602080830190803683370190505090508160400151606083602001516001600160601b0316901b60c0846000015163ffffffff16901b171760001b81600081518110612b1657612b1661555d565b6040805160028082526060808301845292602083019080368337019050509050816060015161472857600061472b565b60015b60ff16602061473d8460400151614b6a565b6001600160601b0316901b6080846020015163ffffffff16901b60a08560000151600b0b901b17171760001b8160008151811061477c5761477c61555d565b602002602001018181525050816080015160001b81600181518110612b1657612b1661555d565b6000611b808284615c08565b6000611b808284615589565b6147c3614d07565b60006147ce84614b93565b8451909250600f0b156148165783516147f1906147eb8582614bba565b90614bca565b845190915061481090614805908390614bba565b602086015190614828565b60208301525b9250929050565b6000611b8382615c25565b604080516060810182526000808252602082018190529181019190915261484e83614bda565b905061485e8160400151836147af565b604082015292915050565b604080516060810182526000808252602082018190529181019190915261488f83614bda565b905061489b8383613d53565b604082015263ffffffff9091168152919050565b6040805160028082526060808301845292602083019080368337019050509050816148db5760006148de565b60015b60ff1660206148ec85614b6a565b6001600160601b0316901b6080614901875190565b63ffffffff16901b60a0614916886020015190565b600f0b901b17171760001b816000815181106149345761493461555d565b602002602001018181525050836040015160001b8160018151811061495b5761495b61555d565b6020026020010181815250509392505050565b6060846001600160a01b0316866001600160a01b031603614990575085614601565b60006149a5846149a08a88613335565b61337f565b905060006149b38989613212565b905060006149c18a89613212565b90506149cf828285886143bd565b90925090506149df8a8a84613f02565b99506149ec8a8983613f02565b99506149fc8a888b8b8a88614538565b9a9950505050505050505050565b6000614a17604083615c41565b5a111592915050565b6000611b83614a37836001600160801b0316613156565b614c15565b614a44614d07565b614a4d83614b93565b6020810151909150614a5f9083614869565b602082015292915050565b614a72614d07565b6000614a7d84614b93565b8451909250600f0b15614816578351614aa790614a9e600f86900b82614c79565b600f0b9061433e565b9050614810614ac6856000015183600f0b614c7990919063ffffffff16565b6020840151905b6040805160608101825260008082526020820181905291810191909152614af383614bda565b600f9290920b602083015250919050565b6040805160608082018352600080835260208084018290528385018290528451928301855281835282018190529281019290925290614b4f614b458561434a565b6143ab8886614869565b9150614b5f846143ab8786614869565b905094509492505050565b60006001600160601b038211156131c05760405162461bcd60e51b8152600401611c22906159f8565b614b9b614d07565b8151600f0b81526020820151614bb090614bda565b6020820152919050565b6000611b80600f83900b846158e0565b6000611b80600f83900b84615a3e565b6040805160608101825260008082526020808301828152838501928352855163ffffffff16845290850151600f0b9052929091015190915290565b80600f81900b81146134a15760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b6064820152608401611c22565b6000611b808284615c55565b6040518060600160405280614c98614cac565b815260006020820181905260409091015290565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a082015260c0810182905260e081018290526101008101829052610120810182905261014081019190915290565b60405180604001604052806000600f0b8152602001614d3f604080516060810182526000808252602082018190529181019190915290565b905290565b6001600160a01b0381168114610cbd57600080fd5b600080600060608486031215614d6e57600080fd5b8335614d7981614d44565b92506020840135614d8981614d44565b91506040840135614d9981614d44565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b60405161016081016001600160401b0381118282101715614ddd57614ddd614da4565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614e0b57614e0b614da4565b604052919050565b8015158114610cbd57600080fd5b60008060008385036080811215614e3757600080fd5b8435614e4281614d44565b93506020850135614e5281614d44565b92506040603f1982011215614e6657600080fd5b50604051604081018181106001600160401b0382111715614e8957614e89614da4565b6040908152850135614e9a81614e13565b81526060850135614eaa81614e13565b602082015292959194509192509050565b60008060408385031215614ece57600080fd5b8235614ed981614d44565b91506020830135614ee981614d44565b809150509250929050565b60008083601f840112614f0657600080fd5b5081356001600160401b03811115614f1d57600080fd5b60208301915083602082850101111561481657600080fd5b60008060008060608587031215614f4b57600080fd5b8435614f5681614d44565b93506020850135614f6681614e13565b925060408501356001600160401b03811115614f8157600080fd5b614f8d87828801614ef4565b95989497509550505050565b60005b83811015614fb4578181015183820152602001614f9c565b50506000910152565b60008151808452614fd5816020860160208601614f99565b601f01601f19169290920160200192915050565b602081526000611b806020830184614fbd565b60008060006040848603121561501157600080fd5b833561501c81614d44565b925060208401356001600160401b0381111561503757600080fd5b61504386828701614ef4565b9497909650939450505050565b60006020828403121561506257600080fd5b813561059981614d44565b6001600160801b0381168114610cbd57600080fd5b60008060008060006080868803121561509a57600080fd5b85356150a581614d44565b945060208601356150b581614d44565b935060408601356150c58161506d565b925060608601356001600160401b038111156150e057600080fd5b6150ec88828901614ef4565b969995985093965092949392505050565b60008060006060848603121561511257600080fd5b833561511d81614d44565b9250602084013561512d81614d44565b929592945050506040919091013590565b80600b0b8114610cbd57600080fd5b6000806000806080858703121561516357600080fd5b843561516e81614d44565b9350602085013561517e81614d44565b9250604085013561518e81614d44565b9150606085013561519e8161513e565b939692955090935050565b60008060008060008060a087890312156151c257600080fd5b86356151cd81614d44565b955060208701356151dd81614d44565b945060408701356151ed81614d44565b935060608701356151fd8161513e565b925060808701356001600160401b0381111561521857600080fd5b61522489828a01614ef4565b979a9699509497509295939492505050565b60008060008060008060a0878903121561524f57600080fd5b863561525a81614d44565b9550602087013561526a81614d44565b9450604087013561527a81614d44565b93506060870135925060808701356001600160401b0381111561521857600080fd5b600080600080606085870312156152b257600080fd5b84356152bd81614d44565b93506020850135614f6681614d44565b600080600080608085870312156152e357600080fd5b84356152ee81614d44565b935060208501356152fe81614d44565b9250604085013561530e81614d44565b9396929550929360600135925050565b63ffffffff81168114610cbd57600080fd5b600080600083850360a081121561534657600080fd5b843561535181614d44565b93506060601f198201121561536557600080fd5b50604051606081018181106001600160401b038211171561538857615388614da4565b60405260208501356153998161531e565b81526040850135600f81900b81146153b057600080fd5b60208201526060850135604082015291506080840135614d998161531e565b80516134a181614d44565b6000602082840312156153ec57600080fd5b815161059981614d44565b60006020828403121561540957600080fd5b815161059981614e13565b634e487b7160e01b600052600160045260246000fd5b60008151808452602080850194506020840160005b8381101561545b5781518752958201959082019060010161543f565b509495945050505050565b8281526040602082015260006105ad604083018461542a565b82151581526040602082015260006105ad6040830184614fbd565b6000806000606084860312156154af57600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156154da57600080fd5b5051919050565b6001600160a01b038881168252600b88810b602084015287810b604084015286810b6060840152908516608083015283900b60a082015260e060c082018190526000906122c290830184614fbd565b60018060a01b03851681528360208201528260408201526080606082015260006146016080830184614fbd565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b80820182811260008312801582168215821617156155a9576155a9615573565b505092915050565b6000602082840312156155c357600080fd5b81516105998161513e565b600b81810b9083900b016b7fffffffffffffffffffffff81136b7fffffffffffffffffffffff1982121715611b8357611b83615573565b60006001600160401b0382111561561e5761561e614da4565b5060051b60200190565b600082601f83011261563957600080fd5b8151602061564e61564983615605565b614de3565b8083825260208201915060208460051b87010193508684111561567057600080fd5b602086015b8481101561568c5780518352918301918301615675565b509695505050505050565b6000602082840312156156a957600080fd5b81516001600160401b038111156156bf57600080fd5b6105ad84828501615628565b60018060a01b038416815282602082015260606040820152600061461b606083018461542a565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b805160ff811681146134a157600080fd5b80516001600160e01b0319811681146134a157600080fd5b600082601f83011261575557600080fd5b81516001600160401b0381111561576e5761576e614da4565b615781601f8201601f1916602001614de3565b81815284602083860101111561579657600080fd5b6105ad826020830160208701614f99565b6000602082840312156157b957600080fd5b81516001600160401b03808211156157d057600080fd5b9083019061016082860312156157e557600080fd5b6157ed614dba565b6157f68361571b565b81526158046020840161571b565b60208201526040830151604082015261581f606084016153cf565b60608201526158306080840161572c565b608082015260a08301518281111561584757600080fd5b61585387828601615744565b60a08301525060c083015160c082015260e083015160e082015261010091508183015182820152610120915061588a8284016153cf565b82820152610140915061589e8284016153cf565b91810191909152949350505050565b6000602082840312156158bf57600080fd5b81516105998161531e565b634e487b7160e01b600052601260045260246000fd5b6000826158ef576158ef6158ca565b600160ff1b82146000198414161561590957615909615573565b500590565b81810381811115611b8357611b83615573565b60006080828403121561593357600080fd5b604051608081018181106001600160401b038211171561595557615955614da4565b60405282516159638161506d565b815260208301516159738161531e565b602082015260408301516159868161513e565b60408201526060928301519281019290925250919050565b600f82810b9082900b0360016001607f1b0319811260016001607f1b0382131715611b8357611b83615573565b600f81810b9083900b0160016001607f1b03811360016001607f1b031982121715611b8357611b83615573565b60208082526026908201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960408201526536206269747360d01b606082015260800190565b80820260008212600160ff1b84141615615a5a57615a5a615573565b8181058314821517611b8357611b83615573565b87815260e060208201526000615a8760e0830189614fbd565b6001600160a01b03978816604084015295151560608301525092909416608083015260a082015260c0019190915292915050565b60008251615acd818460208701614f99565b9190910192915050565b60008060408385031215615aea57600080fd5b82516001600160401b0380821115615b0157600080fd5b818501915085601f830112615b1557600080fd5b81516020615b2561564983615605565b82815260059290921b84018101918181019089841115615b4457600080fd5b948201945b83861015615b6b578551615b5c8161531e565b82529482019490820190615b49565b91880151919650909350505080821115615b8457600080fd5b50615b9185828601615628565b9150509250929050565b600082600f0b82600f0b0280600f0b9150808214615bbb57615bbb615573565b5092915050565b600081600f0b60016001607f1b03198103615bdf57615bdf615573565b60000392915050565b8181036000831280158383131683831282161715615bbb57615bbb615573565b63ffffffff828116828216039080821115615bbb57615bbb615573565b6000600160ff1b8201615c3a57615c3a615573565b5060000390565b600082615c5057615c506158ca565b500490565b600081600f0b83600f0b80615c6c57615c6c6158ca565b60016001607f1b0319821460001982141615615c8a57615c8a615573565b9005939250505056fea26469706673582212204a304500f3504762232d06f5256854d4730809ad6080487aced97773d011589b64736f6c63430008170033"

Methods

  • Parameters

    • host: string
    • superfluidPoolBeacon_: string
    • Optional overrides: Overrides & {
          from?: string;
      }

    Returns TransactionRequest

  • Returns GeneralDistributionAgreementV1Interface

  • Parameters

    • linkLibraryAddresses: GeneralDistributionAgreementV1LibraryAddresses

    Returns string

Generated using TypeDoc