Contract Overview
Balance:
0 AVAX

AVAX Value:
$0.00(@ $21.81/AVAX)

Token:
More Info
Tag:
Not Available. Update?

Contract Creators:
Contract Source Code Verified (Partial Match)
Contract Name:
TermAuction

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 50 runs

Created At:
Wed, 27 Mar 2024 21:18:46 GMT
AccessControlUpgradeable.sol
@openzeppelin
contracts-upgradeable
access
AccessControlUpgradeable.sol


Contract ABI
[
  {
    "inputs": [],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "inputs": [],
    "name": "AlreadyTermContractPaired",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "AuctionAlreadyCompleted",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "AuctionCancelledForWithdrawal",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "AuctionNotClosed",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "clearingOffset",
        "type": "uint256"
      }
    ],
    "name": "ClearingOffsetNot0Or1",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "CompleteAuctionPaused",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "message",
        "type": "string"
      }
    ],
    "name": "InvalidParameters",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "maxDepth",
        "type": "uint256"
      }
    ],
    "name": "MaxPriceSearchDepthExceeded",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "NoBidsOrOffers",
    "type": "error"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "previousAdmin",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "newAdmin",
        "type": "address"
      }
    ],
    "name": "AdminChanged",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "beacon",
        "type": "address"
      }
    ],
    "name": "BeaconUpgraded",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint8",
        "name": "version",
        "type": "uint8"
      }
    ],
    "name": "Initialized",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "previousAdminRole",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "newAdminRole",
        "type": "bytes32"
      }
    ],
    "name": "RoleAdminChanged",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "RoleGranted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "RoleRevoked",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "implementation",
        "type": "address"
      }
    ],
    "name": "Upgraded",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "ADMIN_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "DEFAULT_ADMIN_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "DEVOPS_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "INITIALIZER_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "THREESIXTY_DAYCOUNT_SECONDS",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "auctionCancelledForWithdrawal",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "auctionCompleted",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "auctionEndTime",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "bytes32[]",
            "name": "revealedBidSubmissions",
            "type": "bytes32[]"
          },
          {
            "internalType": "bytes32[]",
            "name": "expiredRolloverBids",
            "type": "bytes32[]"
          },
          {
            "internalType": "bytes32[]",
            "name": "unrevealedBidSubmissions",
            "type": "bytes32[]"
          },
          {
            "internalType": "bytes32[]",
            "name": "revealedOfferSubmissions",
            "type": "bytes32[]"
          },
          {
            "internalType": "bytes32[]",
            "name": "unrevealedOfferSubmissions",
            "type": "bytes32[]"
          }
        ],
        "internalType": "struct CompleteAuctionInput",
        "name": "completeAuctionInput",
        "type": "tuple"
      }
    ],
    "name": "cancelAuction",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address[]",
        "name": "rolloverBorrowers",
        "type": "address[]"
      },
      {
        "internalType": "address[]",
        "name": "rolloverPairOffTermRepoServicer",
        "type": "address[]"
      }
    ],
    "name": "cancelAuctionForWithdrawal",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "clearingPrice",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "clearingPricePostProcessingOffset",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "bytes32[]",
            "name": "revealedBidSubmissions",
            "type": "bytes32[]"
          },
          {
            "internalType": "bytes32[]",
            "name": "expiredRolloverBids",
            "type": "bytes32[]"
          },
          {
            "internalType": "bytes32[]",
            "name": "unrevealedBidSubmissions",
            "type": "bytes32[]"
          },
          {
            "internalType": "bytes32[]",
            "name": "revealedOfferSubmissions",
            "type": "bytes32[]"
          },
          {
            "internalType": "bytes32[]",
            "name": "unrevealedOfferSubmissions",
            "type": "bytes32[]"
          }
        ],
        "internalType": "struct CompleteAuctionInput",
        "name": "completeAuctionInput",
        "type": "tuple"
      }
    ],
    "name": "completeAuction",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "completeAuctionPaused",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "dayCountFractionMantissa",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      }
    ],
    "name": "getRoleAdmin",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "grantRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "hasRole",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "termRepoId_",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "auctionId_",
        "type": "string"
      },
      {
        "internalType": "uint256",
        "name": "auctionEndTime_",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "termStart_",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "redemptionTimestamp_",
        "type": "uint256"
      },
      {
        "internalType": "contract IERC20MetadataUpgradeable",
        "name": "purchaseToken_",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "termAuctionInitializer_",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "clearingPricePostProcessingOffset_",
        "type": "uint256"
      }
    ],
    "name": "initialize",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "contract ITermEventEmitter",
        "name": "emitter_",
        "type": "address"
      },
      {
        "internalType": "contract ITermRepoServicer",
        "name": "termRepoServicer_",
        "type": "address"
      },
      {
        "internalType": "contract ITermAuctionBidLocker",
        "name": "termAuctionBidLocker_",
        "type": "address"
      },
      {
        "internalType": "contract ITermAuctionOfferLocker",
        "name": "termAuctionOfferLocker_",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "devopsMultisigAddress_",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "adminWallet_",
        "type": "address"
      },
      {
        "internalType": "string",
        "name": "version_",
        "type": "string"
      }
    ],
    "name": "pairTermContracts",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "pauseCompleteAuction",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "proxiableUUID",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "purchaseToken",
    "outputs": [
      {
        "internalType": "contract IERC20MetadataUpgradeable",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "renounceRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "revokeRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes4",
        "name": "interfaceId",
        "type": "bytes4"
      }
    ],
    "name": "supportsInterface",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "termAuctionBidLocker",
    "outputs": [
      {
        "internalType": "contract ITermAuctionBidLocker",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "termAuctionId",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "termAuctionOfferLocker",
    "outputs": [
      {
        "internalType": "contract ITermAuctionOfferLocker",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "termRepoId",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "termRepoServicer",
    "outputs": [
      {
        "internalType": "contract ITermRepoServicer",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "unpauseCompleteAuction",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newImplementation",
        "type": "address"
      }
    ],
    "name": "upgradeTo",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newImplementation",
        "type": "address"
      },
      {
        "internalType": "bytes",
        "name": "data",
        "type": "bytes"
      }
    ],
    "name": "upgradeToAndCall",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "version",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  }
]


Contract Creation Code
60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e7565b600054610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e5576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051615ac16200011f600039600081816106fc0152818161073c015281816107c401528181610804015261087c0152615ac16000f3fe6080604052600436106101c45760003560e01c80636d733141116100f8578063a95c4d6211610090578063a95c4d6214610513578063b294897614610534578063c794564e14610554578063cc5b6e4a14610569578063d547741f14610580578063d6725d0c146105a0578063f0436387146105b8578063f691fac1146105d9578063fa2a3cca146105f957600080fd5b80636d73314114610417578063700e3e2a1461042e578063743a8f881461044557806375b238fc1461046557806376f9a41e146104875780637a6944c5146104a75780638dfea9e7146104be57806391d14854146104de578063a217fddf146104fe57600080fd5b806336568abe1161016b57806336568abe146103085780633659cfe6146103285780634b449cba146103485780634f1ef2861461035f578063505d799e1461037257806352d1902d1461039357806354fd4d50146103a85780635fb8f3ed146103dc5780636125be55146103f757600080fd5b806301ffc9a7146101c957806306b282c9146101fe578063201a66251461022c578063248a9ca31461025c57806327df3d3e1461028c5780632f2ff15d146102ae57806332a0f2d7146102d0578063357a77d2146102e7575b600080fd5b3480156101d557600080fd5b506101e96101e4366004614812565b61060e565b60405190151581526020015b60405180910390f35b34801561020a57600080fd5b506101325461021f906001600160a01b031681565b6040516101f5919061483c565b34801561023857600080fd5b5061024e6000805160206159e583398151915281565b6040519081526020016101f5565b34801561026857600080fd5b5061024e610277366004614850565b600090815260c9602052604090206001015490565b34801561029857600080fd5b5061024e600080516020615a0583398151915281565b3480156102ba57600080fd5b506102ce6102c936600461487e565b610645565b005b3480156102dc57600080fd5b5061024e6101365481565b3480156102f357600080fd5b506101315461021f906001600160a01b031681565b34801561031457600080fd5b506102ce61032336600461487e565b61066f565b34801561033457600080fd5b506102ce6103433660046148ae565b6106f2565b34801561035457600080fd5b5061024e61012f5481565b6102ce61036d3660046149a1565b6107ba565b34801561037e57600080fd5b506101335461021f906001600160a01b031681565b34801561039f57600080fd5b5061024e61086f565b3480156103b457600080fd5b5060408051808201825260058152640302e362e360dc1b602082015290516101f59190614a6c565b3480156103e857600080fd5b50610138546101e99060ff1681565b34801561040357600080fd5b506102ce610412366004614ae0565b61091d565b34801561042357600080fd5b5061024e61012e5481565b34801561043a57600080fd5b5061024e6101375481565b34801561045157600080fd5b506102ce610460366004614be0565b610b27565b34801561047157600080fd5b5061024e600080516020615a6c83398151915281565b34801561049357600080fd5b506102ce6104a2366004614c4b565b610c5f565b3480156104b357600080fd5b5061024e6101305481565b3480156104ca57600080fd5b50610138546101e990610100900460ff1681565b3480156104ea57600080fd5b506101e96104f936600461487e565b61135b565b34801561050a57600080fd5b5061024e600081565b34801561051f57600080fd5b506101345461021f906001600160a01b031681565b34801561054057600080fd5b506102ce61054f366004614c85565b611386565b34801561056057600080fd5b506102ce6114df565b34801561057557600080fd5b5061024e61012d5481565b34801561058c57600080fd5b506102ce61059b36600461487e565b611580565b3480156105ac57600080fd5b5061024e6301da9c0081565b3480156105c457600080fd5b50610138546101e99062010000900460ff1681565b3480156105e557600080fd5b506102ce6105f4366004614c4b565b6115a5565b34801561060557600080fd5b506102ce611ff6565b60006001600160e01b03198216637965db0b60e01b148061063f57506301ffc9a760e01b6001600160e01b03198316145b92915050565b600082815260c960205260409020600101546106608161205a565b61066a8383612064565b505050565b6001600160a01b03811633146106e45760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6106ee82826120ea565b5050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361073a5760405162461bcd60e51b81526004016106db90614d37565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661076c612151565b6001600160a01b0316146107925760405162461bcd60e51b81526004016106db90614d83565b61079b8161216d565b604080516000808252602082019092526107b7918391906121ef565b50565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036108025760405162461bcd60e51b81526004016106db90614d37565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610834612151565b6001600160a01b03161461085a5760405162461bcd60e51b81526004016106db90614d83565b6108638261216d565b6106ee828260016121ef565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461090a5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b60648201526084016106db565b50600080516020615a2583398151915290565b600054610100900460ff161580801561093d5750600054600160ff909116105b8061095e575061094c3061235a565b15801561095e575060005460ff166001145b6109c15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106db565b6000805460ff1916600117905580156109e4576000805461ff0019166101001790555b6109ec612369565b6109f4612369565b6109fc612392565b610a14600080516020615a0583398151915284612064565b8a8a604051602001610a27929190614dcf565b60408051601f1981840301815290829052805160209182012061012d55610a52918b918b9101614dcf565b60408051601f19818403018152919052805160209091012061012e5561012f8790556301da9c00670de0b6b3a7640000610a8c8888614df5565b610a969190614e08565b610aa09190614e1f565b6101305561013480546001600160a01b0319166001600160a01b038616179055610138805463ff00ffff191690556101378290558015610b1a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050505050565b61012f544211610b4a5760405163b9adeefd60e01b815260040160405180910390fd5b600080516020615a6c833981519152610b628161205a565b60005b84811015610bd357610bc3848483818110610b8257610b82614e41565b9050602002016020810190610b9791906148ae565b878784818110610ba957610ba9614e41565b9050602002016020810190610bbe91906148ae565b6123c1565b610bcc81614e57565b9050610b65565b50610138805461ff001916610100908117918290556101355461012e5460405163504c5d5d60e11b81526001600160a01b039092169363a098baba93610c26936000929190910460ff1690600401614e70565b600060405180830381600087803b158015610c4057600080fd5b505af1158015610c54573d6000803e3d6000fd5b505050505050505050565b61012f544211610c825760405163b9adeefd60e01b815260040160405180910390fd5b600080516020615a6c833981519152610c9a8161205a565b6101325460009081906001600160a01b031663f9202d63610cbb8680614e88565b610cc86020890189614e88565b610cd560408b018b614e88565b6040518763ffffffff1660e01b8152600401610cf696959493929190614f03565b6000604051808303816000875af1158015610d15573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d3d91908101906151c3565b61013354919350915060009081906001600160a01b031663c44cee73610d666060890189614e88565b610d7360808b018b614e88565b6040518563ffffffff1660e01b8152600401610d929493929190615355565b6000604051808303816000875af1158015610db1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610dd9919081019061545c565b9150915060005b8451811015610f4857848181518110610dfb57610dfb614e41565b602002602001015160e0015115610e5657610e51858281518110610e2157610e21614e41565b60200260200101516101000151868381518110610e4057610e40614e41565b6020026020010151602001516123c1565b610f38565b6101325485516001600160a01b0390911690630283ce5b90879084908110610e8057610e80614e41565b602002602001015160000151878481518110610e9e57610e9e614e41565b602002602001015160200151888581518110610ebc57610ebc614e41565b602002602001015160c00151898681518110610eda57610eda614e41565b6020026020010151608001516040518563ffffffff1660e01b8152600401610f0594939291906155d4565b600060405180830381600087803b158015610f1f57600080fd5b505af1158015610f33573d6000803e3d6000fd5b505050505b610f4181614e57565b9050610de0565b5060005b8251811015611028576101335483516001600160a01b0390911690630c57f41490859084908110610f7f57610f7f614e41565b602002602001015160000151858481518110610f9d57610f9d614e41565b602002602001015160200151868581518110610fbb57610fbb614e41565b6020026020010151606001516040518463ffffffff1660e01b8152600401610fe593929190615610565b600060405180830381600087803b158015610fff57600080fd5b505af1158015611013573d6000803e3d6000fd5b505050508061102190614e57565b9050610f4c565b5060005b83518110156111845783818151811061104757611047614e41565b60200260200101516101000151156110925761108d84828151811061106e5761106e614e41565b60200260200101516101200151858381518110610e4057610e40614e41565b611174565b6101325484516001600160a01b0390911690630283ce5b908690849081106110bc576110bc614e41565b6020026020010151600001518684815181106110da576110da614e41565b6020026020010151602001518785815181106110f8576110f8614e41565b602002602001015160e0015188868151811061111657611116614e41565b602002602001015160a001516040518563ffffffff1660e01b815260040161114194939291906155d4565b600060405180830381600087803b15801561115b57600080fd5b505af115801561116f573d6000803e3d6000fd5b505050505b61117d81614e57565b905061102c565b5060005b8151811015611264576101335482516001600160a01b0390911690630c57f414908490849081106111bb576111bb614e41565b6020026020010151600001518484815181106111d9576111d9614e41565b6020026020010151602001518585815181106111f7576111f7614e41565b6020026020010151608001516040518463ffffffff1660e01b815260040161122193929190615610565b600060405180830381600087803b15801561123b57600080fd5b505af115801561124f573d6000803e3d6000fd5b505050508061125d90614e57565b9050611188565b6101355461012e5460405163504c5d5d60e11b81526001600160a01b039092169163a098baba9161129c916000908190600401614e70565b600060405180830381600087803b1580156112b657600080fd5b505af11580156112ca573d6000803e3d6000fd5b5050505061013160009054906101000a90046001600160a01b03166001600160a01b0316634dabab106040518163ffffffff1660e01b8152600401602060405180830381865afa158015611322573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611346919061562f565b6113525761135261564a565b50505050505050565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600080516020615a0583398151915261139e8161205a565b610138546301000000900460ff16156113ca57604051634ce377bb60e11b815260040160405180910390fd5b610138805463ff0000001916630100000017905561013580546001600160a01b03808c166001600160a01b03199283161790925561013180548b841690831617905561013280548a84169083161790556101338054928916929091169190911790556114446000805160206159e583398151915286612064565b61145c600080516020615a6c83398151915285612064565b6101355461012d5461012e5461012f5460405163383a8ab160e01b81526001600160a01b039094169363383a8ab1936114a293909290913091908a908a90600401615660565b600060405180830381600087803b1580156114bc57600080fd5b505af11580156114d0573d6000803e3d6000fd5b50505050505050505050505050565b600080516020615a6c8339815191526114f78161205a565b610138805462ff00001916620100001790556101355461012e5461012d54604051635fdd148760e01b81526001600160a01b0390931692635fdd14879261154b929091600401918252602082015260400190565b600060405180830381600087803b15801561156557600080fd5b505af1158015611579573d6000803e3d6000fd5b5050505050565b600082815260c9602052604090206001015461159b8161205a565b61066a83836120ea565b61012f5442116115c85760405163b9adeefd60e01b815260040160405180910390fd5b6101385462010000900460ff16156115f357604051631298d6db60e01b815260040160405180910390fd5b6101385460ff16156116185760405163f02c1d9560e01b815260040160405180910390fd5b61013854610100900460ff161561164257604051632d93dc5b60e21b815260040160405180910390fd5b610138805460ff19166001179055611668600080516020615a6c8339815191523361135b565b61170b57600061167b6040830183614e88565b90501180611697575060006116936080830183614e88565b9050115b1561170b5760405163dd23c3ad60e01b815260206004820152603d60248201527f416c6c2074656e64657220707269636573206d7573742062652072657665616c60448201527f656420666f722061756374696f6e20746f20626520636f6d706c65746500000060648201526084016106db565b6101325460009081906001600160a01b031663f9202d6361172c8580614e88565b6117396020880188614e88565b61174660408a018a614e88565b6040518763ffffffff1660e01b815260040161176796959493929190614f03565b6000604051808303816000875af1158015611786573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117ae91908101906151c3565b61013354919350915060009081906001600160a01b031663c44cee736117d76060880188614e88565b6117e460808a018a614e88565b6040518563ffffffff1660e01b81526004016118039493929190615355565b6000604051808303816000875af1158015611822573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261184a919081019061545c565b9150915060008451118015611860575060008251115b80156118b457508160008151811061187a5761187a614e41565b60200260200101516040015184600186516118959190614df5565b815181106118a5576118a5614e41565b60200260200101516040015110155b156119f45760006118c58584612491565b915050600061013460009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561191e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194291906156b3565b60ff16905060006119548784846124cb565b90506000611963868585612994565b6101355461012e5461013654604051630ef1216760e41b81526004810192909252426024830152436044830152606482018690526084820184905260a48201529192506001600160a01b03169063ef1216709060c401600060405180830381600087803b1580156119d357600080fd5b505af11580156119e7573d6000803e3d6000fd5b5050505050505050611d55565b60005b8451811015611b2f57848181518110611a1257611a12614e41565b602002602001015160e0015115611a3d57611a38858281518110610e2157610e21614e41565b611b1f565b6101325485516001600160a01b0390911690630283ce5b90879084908110611a6757611a67614e41565b602002602001015160000151878481518110611a8557611a85614e41565b602002602001015160200151888581518110611aa357611aa3614e41565b602002602001015160c00151898681518110611ac157611ac1614e41565b6020026020010151608001516040518563ffffffff1660e01b8152600401611aec94939291906155d4565b600060405180830381600087803b158015611b0657600080fd5b505af1158015611b1a573d6000803e3d6000fd5b505050505b611b2881614e57565b90506119f7565b5060005b8251811015611c0f576101335483516001600160a01b0390911690630c57f41490859084908110611b6657611b66614e41565b602002602001015160000151858481518110611b8457611b84614e41565b602002602001015160200151868581518110611ba257611ba2614e41565b6020026020010151606001516040518463ffffffff1660e01b8152600401611bcc93929190615610565b600060405180830381600087803b158015611be657600080fd5b505af1158015611bfa573d6000803e3d6000fd5b5050505080611c0890614e57565b9050611b33565b5060008451118015611c22575060008251115b8015611c75575081600081518110611c3c57611c3c614e41565b6020026020010151604001518460018651611c579190614df5565b81518110611c6757611c67614e41565b602002602001015160400151105b15611cea576101355461012e5460405163504c5d5d60e11b81526001600160a01b039092169163a098baba91611cb391600190600090600401614e70565b600060405180830381600087803b158015611ccd57600080fd5b505af1158015611ce1573d6000803e3d6000fd5b50505050611d55565b6101355461012e5460405163504c5d5d60e11b81526001600160a01b039092169163a098baba91611d22916000908190600401614e70565b600060405180830381600087803b158015611d3c57600080fd5b505af1158015611d50573d6000803e3d6000fd5b505050505b60005b8351811015611e9157838181518110611d7357611d73614e41565b6020026020010151610100015115611d9f57611d9a84828151811061106e5761106e614e41565b611e81565b6101325484516001600160a01b0390911690630283ce5b90869084908110611dc957611dc9614e41565b602002602001015160000151868481518110611de757611de7614e41565b602002602001015160200151878581518110611e0557611e05614e41565b602002602001015160e00151888681518110611e2357611e23614e41565b602002602001015160a001516040518563ffffffff1660e01b8152600401611e4e94939291906155d4565b600060405180830381600087803b158015611e6857600080fd5b505af1158015611e7c573d6000803e3d6000fd5b505050505b611e8a81614e57565b9050611d58565b5060005b8151811015611f71576101335482516001600160a01b0390911690630c57f41490849084908110611ec857611ec8614e41565b602002602001015160000151848481518110611ee657611ee6614e41565b602002602001015160200151858581518110611f0457611f04614e41565b6020026020010151608001516040518463ffffffff1660e01b8152600401611f2e93929190615610565b600060405180830381600087803b158015611f4857600080fd5b505af1158015611f5c573d6000803e3d6000fd5b5050505080611f6a90614e57565b9050611e95565b5061013160009054906101000a90046001600160a01b03166001600160a01b0316634dabab106040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fea919061562f565b6115795761157961564a565b600080516020615a6c83398151915261200e8161205a565b610138805462ff0000191690556101355461012e5461012d5460405162d9568360e21b8152600481019290925260248201526001600160a01b03909116906303655a0c9060440161154b565b6107b78133612d96565b61206e828261135b565b6106ee57600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff191660011790556120a63390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6120f4828261135b565b156106ee57600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600080516020615a25833981519152546001600160a01b031690565b6000805160206159e58339815191526121858161205a565b6101355460405163b3c2d50b60e01b81523060048201526001600160a01b0384811660248301529091169063b3c2d50b90604401600060405180830381600087803b1580156121d357600080fd5b505af11580156121e7573d6000803e3d6000fd5b505050505050565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156122225761066a83612def565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561227c575060408051601f3d908101601f19168201909252612279918101906156d6565b60015b6122df5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016106db565b600080516020615a25833981519152811461234e5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016106db565b5061066a838383612e89565b6001600160a01b03163b151590565b600054610100900460ff166123905760405162461bcd60e51b81526004016106db906156ef565b565b600054610100900460ff166123b95760405162461bcd60e51b81526004016106db906156ef565b612390612eb4565b60008290506000816001600160a01b031663228d5cc66040518163ffffffff1660e01b8152600401602060405180830381865afa158015612406573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061242a919061573a565b6040516364deb92b60e11b81529091506001600160a01b0382169063c9bd72569061245990869060040161483c565b600060405180830381600087803b15801561247357600080fd5b505af1158015612487573d6000803e3d6000fd5b5050505050505050565b60008061249c612ee2565b6000806124ad868661013754612f3b565b610136829055909450925050506124c4600160fb55565b9250929050565b82516000908190819081905b8015612988576124e8600182614df5565b91506000806125158a858151811061250257612502614e41565b6020026020010151604001518b866137cf565b91509150610136548a858151811061252f5761252f614e41565b6020026020010151604001511015801561254857508886105b801561255d5750612559868a614df5565b8111155b156125f857600094505b816125728686614df5565b106125d5576125a28a6125858787614df5565b8151811061259557612595614e41565b6020026020010151613873565b6125ac9087615757565b95508484036125c5576125be85614e57565b94506125d5565b6125ce85614e57565b9450612567565b84156125f3576125e6600186614df5565b6125f09084614df5565b92505b612975565b610136548a858151811061260e5761260e614e41565b6020026020010151604001511015801561262757508886105b1561283c57600094505b8161263c8686614df5565b106125d5578161264c8686614df5565b036126af576126888a61265f8787614df5565b8151811061266f5761266f614e41565b6020026020010151878b6126839190614df5565b6139c0565b6126929087615757565b955061269e868a614df5565b6126a89082614df5565b905061281c565b60008a6126bc8787614df5565b815181106126cc576126cc614e41565b6020026020010151606001519050600061274d60405180602001604052808c60126126f79190614df5565b61270290600a61584e565b8b8f61270e9190614df5565b6127189190614e08565b90526040805160208101909152806127318e6012614df5565b61273c90600a61584e565b6127469088614e08565b9052613aed565b9050600061275c8b6012614df5565b61276790600a61584e565b61279f8360405180602001604052808f60126127839190614df5565b61278e90600a61584e565b6127989089614e08565b9052613b30565b516127aa9190614e1f565b90506127d88d6127ba8a8a614df5565b815181106127ca576127ca614e41565b6020026020010151826139c0565b6127e2908a615757565b98508c6127ef8989614df5565b815181106127ff576127ff614e41565b602002602001015160600151846128169190614df5565b93505050505b84840361282c576125be85614e57565b61283585614e57565b9450612631565b89848151811061284e5761284e614e41565b602002602001015160e0015115612893576125f38a858151811061287457612874614e41565b602002602001015161010001518b8681518110610e4057610e40614e41565b610132548a516001600160a01b0390911690630283ce5b908c90879081106128bd576128bd614e41565b6020026020010151600001518c87815181106128db576128db614e41565b6020026020010151602001518d88815181106128f9576128f9614e41565b602002602001015160c001518e898151811061291757612917614e41565b6020026020010151608001516040518563ffffffff1660e01b815260040161294294939291906155d4565b600060405180830381600087803b15801561295c57600080fd5b505af1158015612970573d6000803e3d6000fd5b505050505b5050806129819061585a565b90506124d7565b50919695505050505050565b60008080805b8651811015612d8b576000806129ce8984815181106129bb576129bb614e41565b6020026020010151604001518a85613b6f565b91509150610136548984815181106129e8576129e8614e41565b60200260200101516040015111158015612a0157508785105b8015612a165750612a128589614df5565b8111155b15612a9a57600093505b81612a2b8486615757565b11612a7757612a5b89612a3e8587615757565b81518110612a4e57612a4e614e41565b6020026020010151613c1e565b612a659086615757565b9450612a7084614e57565b9350612a20565b8315612a9557612a88600185614df5565b612a929084615757565b92505b612d78565b61013654898481518110612ab057612ab0614e41565b60200260200101516040015111158015612ac957508785105b15612cb557600093505b81612ade8486615757565b11612a775781612aee8486615757565b03612b5157612b2a89612b018587615757565b81518110612b1157612b11614e41565b6020026020010151868a612b259190614df5565b613ce6565b612b349086615757565b9450612b408589614df5565b612b4a9082614df5565b9050612ca3565b600089612b5e8587615757565b81518110612b6e57612b6e614e41565b60200260200101516060015190506000612bd160405180602001604052808b6012612b999190614df5565b612ba490600a61584e565b612bae8b8f614df5565b612bb89190614e08565b90526040805160208101909152806127318d6012614df5565b9050600084612be08789615757565b03612bf457612bef888c614df5565b612c31565b612bff8a6012614df5565b612c0a90600a61584e565b612c268360405180602001604052808e60126127839190614df5565b51612c319190614e1f565b9050612c5f8c612c41888a615757565b81518110612c5157612c51614e41565b602002602001015182613ce6565b612c699089615757565b97508b612c768789615757565b81518110612c8657612c86614e41565b60200260200101516060015184612c9d9190614df5565b93505050505b83612cad81614e57565b945050612ad3565b6101335489516001600160a01b0390911690630c57f414908b9086908110612cdf57612cdf614e41565b6020026020010151600001518b8681518110612cfd57612cfd614e41565b6020026020010151602001518c8781518110612d1b57612d1b614e41565b6020026020010151606001516040518463ffffffff1660e01b8152600401612d4593929190615610565b600060405180830381600087803b158015612d5f57600080fd5b505af1158015612d73573d6000803e3d6000fd5b505050505b505080612d8490614e57565b905061299a565b509095945050505050565b612da0828261135b565b6106ee57612dad81613e21565b612db8836020613e33565b604051602001612dc9929190615871565b60408051601f198184030181529082905262461bcd60e51b82526106db91600401614a6c565b612df88161235a565b612e5a5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016106db565b600080516020615a2583398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612e9283613fd5565b600082511180612e9f5750805b1561066a57612eae8383614015565b50505050565b600054610100900460ff16612edb5760405162461bcd60e51b81526004016106db906156ef565b600160fb55565b600260fb5403612f345760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106db565b600260fb55565b60008082600114158015612f4e57508215155b15612f6f576040516362c115eb60e11b8152600481018490526024016106db565b6000604051806101e0016040528086600081518110612f9057612f90614e41565b6020026020010151604001518152602001600181526020018751815260200186600081518110612fc257612fc2614e41565b60200260200101516060015181526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152602001600081526020016000815250905061304186600183604001516130379190614df5565b835160009061403a565b604083015260808201819052606082015161305c91906140ea565b60a08201525b8451816020015110801561307a575085518160400151105b156131e857602081015160c08201819052604082015160e083015260608201516101008301526080820151610120830152855186919081106130be576130be614e41565b602002602001015160400151816101400181815250505b84518160c0015110801561310e5750806101400151858260c001518151811061310057613100614e41565b602002602001015160400151145b1561315c5760c081018051869161312482614e57565b90528151811061313657613136614e41565b60200260200101516060015181610100018181516131549190615757565b9052506130d5565b613176868260e00151836101200151846101400151614101565b60e0830152610120820181905261010082015161319391906140ea565b610160820181905260a082015110156131e85760c0810151602082015260e0810151604082015261010081015160608201526101208101516080820152610140810151815261016081015160a0820152613062565b84518160200151106131fc5760001961321f565b8481602001518151811061321257613212614e41565b6020026020010151604001515b6101408201525b85518160400151101561333a57604081015160e082018190528651879190811061325257613252614e41565b6020908102919091010151604001516101a082018190526080820151610120830152610140820151111561333a575b85518160e001511080156132ba5750806101a00151868260e00151815181106132ac576132ac614e41565b602002602001015160400151145b156133085760e08101805187916132d082614e57565b9052815181106132e2576132e2614e41565b60200260200101516060015181610120018181516133009190614df5565b905250613281565b80606001518161012001511061333a576001610180820152610120810151608082015260e08101516040820152613226565b806101800151156133b2578551816040015114613378578581604001518151811061336757613367614e41565b6020026020010151604001516133a7565b856001826040015161338a9190614df5565b8151811061339a5761339a614e41565b6020026020010151604001515b6101c08201526133bb565b80516101c08201525b602081018051906133cb8261585a565b815250508360010361352c5760208101515b60008111801561342a5750858260200151815181106133fe576133fe614e41565b60200260200101516040015186828151811061341c5761341c614e41565b602002602001015160400151145b156134415761343a600182614df5565b90506133dd565b60408201518751810361345c57613459600182614df5565b90505b6001885161346a9190614df5565b811080156134b557508783604001518151811061348957613489614e41565b6020026020010151604001518882815181106134a7576134a7614e41565b602002602001015160400151145b156134cc576134c5600182615757565b905061345c565b60028882815181106134e0576134e0614e41565b6020026020010151604001518884815181106134fe576134fe614e41565b6020026020010151604001516135149190615757565b61351e9190614e1f565b6101c0840152506135b09050565b855181604001510361354f5760018160400181815161354b9190614df5565b9052505b60028682604001518151811061356757613567614e41565b6020026020010151604001518683602001518151811061358957613589614e41565b60200260200101516040015161359f9190615757565b6135a99190614e1f565b6101c08201525b806101c00151858260200151815181106135cc576135cc614e41565b6020026020010151604001511161368357602081018051906135ed82614e57565b9052505b8451816020015110801561362b5750806101c001518582602001518151811061361c5761361c614e41565b60200260200101516040015111155b1561367e578481602001518151811061364657613646614e41565b602002602001015160600151816060018181516136639190615757565b9052506020810180519061367682614e57565b9052506135f1565b613709565b806101c001518582602001518151811061369f5761369f614e41565b602002602001015160400151111561370957848160200151815181106136c7576136c7614e41565b602002602001015160600151816060018181516136e49190614df5565b90525060208101511561370957602081018051906137018261585a565b905250613683565b855181604001511080156137425750806101c001518682604001518151811061373457613734614e41565b602002602001015160400151105b1561376f576137608682604001518360800151846101c00151614101565b604083015260808201526137a9565b6040810151156137a95761379e866001836040015161378e9190614df5565b8360800151846101c0015161403a565b604083015260808201525b806101c001516137c1826080015183606001516140ea565b92509250505b935093915050565b6000808291508382815181106137e7576137e7614e41565b60200260200101516060015190505b81158061382a5750848461380b600185614df5565b8151811061381b5761381b614e41565b60200260200101516040015114155b6137c7578361383a600184614df5565b8151811061384a5761384a614e41565b602002602001015160600151816138619190615757565b905061386c8261585a565b91506137f6565b600061387d612ee2565b600061388c8360600151614182565b90508260e0015161392057610131546020840151606085015160c0860151608087015161013054604051635115f4e560e11b81526001600160a01b039096169563a22be9ca956138e99590949093899391929091906004016158e0565b600060405180830381600087803b15801561390357600080fd5b505af1158015613917573d6000803e3d6000fd5b50505050613939565b6139398360200151846060015183866101000151614204565b6101355461012e54845160608601516040516303e852b160e01b81526001600160a01b03909416936303e852b1936139779390929091600401615933565b600060405180830381600087803b15801561399157600080fd5b505af11580156139a5573d6000803e3d6000fd5b5050505082606001519150506139bb600160fb55565b919050565b60006139ca612ee2565b60006139d583614182565b90508360e00151613a5f5761013154602085015160c0860151608087015161013054604051635115f4e560e11b81526001600160a01b039095169463a22be9ca94613a289490938a9389936004016158e0565b600060405180830381600087803b158015613a4257600080fd5b505af1158015613a56573d6000803e3d6000fd5b50505050613a74565b613a7484602001518483876101000151614204565b6101355461012e5485516040516303e852b160e01b81526001600160a01b03909316926303e852b192613aad9290918890600401615933565b600060405180830381600087803b158015613ac757600080fd5b505af1158015613adb573d6000803e3d6000fd5b505050508291505061063f600160fb55565b6040805160208101909152600081526040518060200160405280613b27613b208660000151670de0b6b3a7640000614689565b8551614695565b90529392505050565b6040805160208101909152600081526040518060200160405280670de0b6b3a7640000613b6586600001518660000151614689565b613b279190614e1f565b600080829150838281518110613b8757613b87614e41565b60200260200101516060015190505b60018451613ba49190614df5565b8210156137c7578484613bb8846001615757565b81518110613bc857613bc8614e41565b602002602001015160400151036137c75783613be5836001615757565b81518110613bf557613bf5614e41565b60200260200101516060015181613c0c9190615757565b9050613c1782614e57565b9150613b96565b6000613c28612ee2565b6000613c378360600151614182565b610131546020850151606086015186516040516308f9231360e31b81529495506001600160a01b03909316936347c9189893613c7a939291879190600401615949565b600060405180830381600087803b158015613c9457600080fd5b505af1158015613ca8573d6000803e3d6000fd5b50506101355461012e548651606088015160405163ba0cf0ab60e01b81526001600160a01b03909416955063ba0cf0ab945061397793600401615933565b6000613cf0612ee2565b6000613cfb83614182565b61013154602086015186516040516308f9231360e31b81529394506001600160a01b03909216926347c9189892613d39929188918791600401615949565b600060405180830381600087803b158015613d5357600080fd5b505af1158015613d67573d6000803e3d6000fd5b5050610133548651602088015160608901516001600160a01b039093169450630c57f41493509091613d9a908890614df5565b6040518463ffffffff1660e01b8152600401613db893929190615610565b600060405180830381600087803b158015613dd257600080fd5b505af1158015613de6573d6000803e3d6000fd5b50506101355461012e54875160405163ba0cf0ab60e01b81526001600160a01b03909316945063ba0cf0ab9350613aad928890600401615933565b606061063f6001600160a01b03831660145b60606000613e42836002614e08565b613e4d906002615757565b6001600160401b03811115613e6457613e646148cb565b6040519080825280601f01601f191660200182016040528015613e8e576020820181803683370190505b509050600360fc1b81600081518110613ea957613ea9614e41565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613ed857613ed8614e41565b60200101906001600160f81b031916908160001a9053506000613efc846002614e08565b613f07906001615757565b90505b6001811115613f7f576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110613f3b57613f3b614e41565b1a60f81b828281518110613f5157613f51614e41565b60200101906001600160f81b031916908160001a90535060049490941c93613f788161585a565b9050613f0a565b508315613fce5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016106db565b9392505050565b613fde81612def565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060613fce8383604051806060016040528060278152602001615a45602791396146a1565b60008083855b8488828151811061405357614053614e41565b602002602001015160400151106140a55787818151811061407657614076614e41565b6020026020010151606001518261408d9190615757565b915080156140a55761409e8161585a565b9050614040565b81858983815181106140b9576140b9614e41565b602002602001015160400151106140d057816140db565b6140db826001615757565b93509350505094509492505050565b60008183106140fa57508061063f565b508161063f565b60008083855b87518110801561413357508488828151811061412557614125614e41565b602002602001015160400151105b156141755787818151811061414a5761414a614e41565b602002602001015160600151826141619190614df5565b91508061416d81614e57565b915050614107565b9097909650945050505050565b6000806141d06040518060200160405280670de0b6b3a76400008152506141cb604051806020016040528061013054815250604051806020016040528061013654815250613b30565b614719565b9050613fce6141ff6040518060200160405280670de0b6b3a7640000876141f79190614e08565b905283613b30565b614745565b6000819050600061013160009054906101000a90046001600160a01b03166001600160a01b031663c99aa678878787866001600160a01b0316635c4b440e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614271573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614295919061573a565b6101305460405160e087901b6001600160e01b03191681526001600160a01b039586166004820152602481019490945260448401929092529092166064820152608481019190915260a4016020604051808303816000875af11580156142ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061432391906156d6565b604051631b433b1160e01b81526001600160a01b03888116600483015260248201839052919250600091841690631b433b11906044016020604051808303816000875af1158015614378573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061439c91906156d6565b90506000836001600160a01b0316633de81dc46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156143de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614402919061573a565b9050600080826001600160a01b0316633d0dda788b8661013160009054906101000a90046001600160a01b03166001600160a01b0316635c4b440e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561446c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614490919061573a565b60405160e085901b6001600160e01b03191681526001600160a01b039384166004820152602481019290925290911660448201526064016000604051808303816000875af11580156144e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261450e919081019061596f565b91509150600061013160009054906101000a90046001600160a01b03166001600160a01b0316633de81dc46040518163ffffffff1660e01b8152600401602060405180830381865afa158015614568573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061458c919061573a565b905060005b835181101561467b5760008382815181106145ae576145ae614e41565b6020026020010151111561466b57816001600160a01b031663790cb4918d8684815181106145de576145de614e41565b60200260200101518685815181106145f8576145f8614e41565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b15801561465257600080fd5b505af1158015614666573d6000803e3d6000fd5b505050505b61467481614e57565b9050614591565b505050505050505050505050565b6000613fce8284614e08565b6000613fce8284614e1f565b6060600080856001600160a01b0316856040516146be91906159c8565b600060405180830381855af49150503d80600081146146f9576040519150601f19603f3d011682016040523d82523d6000602084013e6146fe565b606091505b509150915061470f8683838761475d565b9695505050505050565b6040805160208101909152600081526040518060200160405280613b27856000015185600001516147dc565b805160009061063f90670de0b6b3a764000090614e1f565b606083156147ca5782516000036147c3576147778561235a565b6147c35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106db565b50816147d4565b6147d483836147e8565b949350505050565b6000613fce8284615757565b8151156147f85781518083602001fd5b8060405162461bcd60e51b81526004016106db9190614a6c565b60006020828403121561482457600080fd5b81356001600160e01b031981168114613fce57600080fd5b6001600160a01b0391909116815260200190565b60006020828403121561486257600080fd5b5035919050565b6001600160a01b03811681146107b757600080fd5b6000806040838503121561489157600080fd5b8235915060208301356148a381614869565b809150509250929050565b6000602082840312156148c057600080fd5b8135613fce81614869565b634e487b7160e01b600052604160045260246000fd5b60405161016081016001600160401b0381118282101715614904576149046148cb565b60405290565b60405161012081016001600160401b0381118282101715614904576149046148cb565b60405160e081016001600160401b0381118282101715614904576149046148cb565b60405160a081016001600160401b0381118282101715614904576149046148cb565b604051601f8201601f191681016001600160401b0381118282101715614999576149996148cb565b604052919050565b600080604083850312156149b457600080fd5b82356149bf81614869565b91506020838101356001600160401b03808211156149dc57600080fd5b818601915086601f8301126149f057600080fd5b813581811115614a0257614a026148cb565b614a14601f8201601f19168501614971565b91508082528784828501011115614a2a57600080fd5b80848401858401376000848284010152508093505050509250929050565b60005b83811015614a63578181015183820152602001614a4b565b50506000910152565b6020815260008251806020840152614a8b816040850160208701614a48565b601f01601f19169190910160400192915050565b60008083601f840112614ab157600080fd5b5081356001600160401b03811115614ac857600080fd5b6020830191508360208285010111156124c457600080fd5b6000806000806000806000806000806101008b8d031215614b0057600080fd5b8a356001600160401b0380821115614b1757600080fd5b614b238e838f01614a9f565b909c509a5060208d0135915080821115614b3c57600080fd5b50614b498d828e01614a9f565b90995097505060408b0135955060608b0135945060808b0135935060a08b0135614b7281614869565b925060c08b0135614b8281614869565b8092505060e08b013590509295989b9194979a5092959850565b60008083601f840112614bae57600080fd5b5081356001600160401b03811115614bc557600080fd5b6020830191508360208260051b85010111156124c457600080fd5b60008060008060408587031215614bf657600080fd5b84356001600160401b0380821115614c0d57600080fd5b614c1988838901614b9c565b90965094506020870135915080821115614c3257600080fd5b50614c3f87828801614b9c565b95989497509550505050565b600060208284031215614c5d57600080fd5b81356001600160401b03811115614c7357600080fd5b820160a08185031215613fce57600080fd5b60008060008060008060008060e0898b031215614ca157600080fd5b8835614cac81614869565b97506020890135614cbc81614869565b96506040890135614ccc81614869565b95506060890135614cdc81614869565b94506080890135614cec81614869565b935060a0890135614cfc81614869565b925060c08901356001600160401b03811115614d1757600080fd5b614d238b828c01614a9f565b999c989b5096995094979396929594505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561063f5761063f614ddf565b808202811582820484141761063f5761063f614ddf565b600082614e3c57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201614e6957614e69614ddf565b5060010190565b92835290151560208301521515604082015260600190565b6000808335601e19843603018112614e9f57600080fd5b8301803591506001600160401b03821115614eb957600080fd5b6020019150600581901b36038213156124c457600080fd5b81835260006001600160fb1b03831115614eea57600080fd5b8260051b80836020870137939093016020019392505050565b606081526000614f1760608301888a614ed1565b8281036020840152614f2a818789614ed1565b90508281036040840152614f3f818587614ed1565b9998505050505050505050565b60006001600160401b03821115614f6557614f656148cb565b5060051b60200190565b80516139bb81614869565b600082601f830112614f8b57600080fd5b81516020614fa0614f9b83614f4c565b614971565b82815260059290921b84018101918181019086841115614fbf57600080fd5b8286015b84811015614fda5780518352918301918301614fc3565b509695505050505050565b600082601f830112614ff657600080fd5b81516020615006614f9b83614f4c565b82815260059290921b8401810191818101908684111561502557600080fd5b8286015b84811015614fda57805161503c81614869565b8352918301918301615029565b805180151581146139bb57600080fd5b600082601f83011261506a57600080fd5b8151602061507a614f9b83614f4c565b82815260059290921b8401810191818101908684111561509957600080fd5b8286015b84811015614fda5780516001600160401b03808211156150bd5760008081fd5b90880190610160828b03601f19018113156150d85760008081fd5b6150e06148e1565b87840151815260406150f3818601614f6f565b89830152606080860151828401526080915081860151818401525060a0808601518284015260c09150818601518581111561512e5760008081fd5b61513c8f8c838a0101614f7a565b82850152505060e061514f818701614f6f565b828401526101009150818601518581111561516a5760008081fd5b6151788f8c838a0101614fe5565b828501525050610120935061518e848601615049565b908201526101406151a0858201614f6f565b848301526151af838601615049565b90820152865250505091830191830161509d565b600080604083850312156151d657600080fd5b82516001600160401b03808211156151ed57600080fd5b818501915085601f83011261520157600080fd5b81516020615211614f9b83614f4c565b82815260059290921b8401810191818101908984111561523057600080fd5b8286015b848110156153245780518681111561524b57600080fd5b8701610120818d03601f190181131561526357600080fd5b61526b61490a565b86830151815261527d60408401614f6f565b87820152606083015160408201526080830151606082015260a0830151898111156152a757600080fd5b6152b58f8983870101614f7a565b6080830152506152c760c08401614f6f565b60a082015260e0830151898111156152df5760008081fd5b6152ed8f8983870101614fe5565b60c083015250610100615301818501615049565b60e0830152615311838501614f6f565b9082015285525050918301918301615234565b509188015191965090935050508082111561533e57600080fd5b5061534b85828601615059565b9150509250929050565b604081526000615369604083018688614ed1565b828103602084015261537c818587614ed1565b979650505050505050565b600082601f83011261539857600080fd5b815160206153a8614f9b83614f4c565b82815260e092830285018201928282019190878511156153c757600080fd5b8387015b8581101561544f5781818a0312156153e35760008081fd5b6153eb61492d565b81518152858201516153fc81614869565b8187015260408281015190820152606080830151908201526080808301519082015260a08083015161542d81614869565b9082015260c061543e838201615049565b9082015284529284019281016153cb565b5090979650505050505050565b600080604080848603121561547057600080fd5b83516001600160401b038082111561548757600080fd5b818601915086601f83011261549b57600080fd5b815160206154ab614f9b83614f4c565b82815260a0928302850182019282820191908b8511156154ca57600080fd5b958301955b848710156155385780878d0312156154e75760008081fd5b6154ef61494f565b875181528488015161550081614869565b8186015287890151898201526060808901519082015260808089015161552581614869565b90820152835295860195918301916154cf565b509189015191975090945050508083111561555257600080fd5b505061534b85828601615387565b600081518084526020808501945080840160005b838110156155995781516001600160a01b031687529582019590820190600101615574565b509495945050505050565b600081518084526020808501945080840160005b83811015615599578151875295820195908201906001016155b8565b8481526001600160a01b03841660208201526080604082018190526000906155fe90830185615560565b828103606084015261537c81856155a4565b9283526001600160a01b03919091166020830152604082015260600190565b60006020828403121561564157600080fd5b613fce82615049565b634e487b7160e01b600052600160045260246000fd5b86815285602082015260018060a01b038516604082015283606082015260a060808201528160a0820152818360c0830137600081830160c090810191909152601f909201601f1916010195945050505050565b6000602082840312156156c557600080fd5b815160ff81168114613fce57600080fd5b6000602082840312156156e857600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006020828403121561574c57600080fd5b8151613fce81614869565b8082018082111561063f5761063f614ddf565b600181815b808511156157a557816000190482111561578b5761578b614ddf565b8085161561579857918102915b93841c939080029061576f565b509250929050565b6000826157bc5750600161063f565b816157c95750600061063f565b81600181146157df57600281146157e957615805565b600191505061063f565b60ff8411156157fa576157fa614ddf565b50506001821b61063f565b5060208310610133831016604e8410600b8410161715615828575081810a61063f565b615832838361576a565b806000190482111561584657615846614ddf565b029392505050565b6000613fce83836157ad565b60008161586957615869614ddf565b506000190190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516158a3816017850160208801614a48565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516158d4816028840160208801614a48565b01602801949350505050565b60018060a01b038716815285602082015284604082015260c06060820152600061590d60c0830186615560565b828103608084015261591f81866155a4565b9150508260a0830152979650505050505050565b9283526020830191909152604082015260600190565b6001600160a01b0394909416845260208401929092526040830152606082015260800190565b6000806040838503121561598257600080fd5b82516001600160401b038082111561599957600080fd5b6159a586838701614fe5565b935060208501519150808211156159bb57600080fd5b5061534b85828601614f7a565b600082516159da818460208701614a48565b919091019291505056fe793a6c9b7e0a9549c74edc2f9ae0dc50903dfaa9a56fb0116b27a8c71de3e2c630d41a597cac127d8249d31298b50e481ee82c3f4a49ff93c76a22735aa9f3ad360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775a264697066735822122084d0ffa1b460dd785a9323e26cc5a322eebabab9407072177fdc30fd11dbfef264736f6c63430008120033