60806040523480156200001157600080fd5b50600354610100900460ff16806200002c575060035460ff16155b620000945760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b600354610100900460ff16158015620000c0576003805460ff1961ff0019909116610100171660011790555b8015620000d3576003805461ff00191690555b506143c280620000e46000396000f3fe60806040526004361061025c5760003560e01c80635e51191e1161014457806395d89b41116100b6578063c87b56dd1161007a578063c87b56dd14610727578063cd7c032614610747578063d547741f14610768578063e985e9c514610788578063f2fde38b146107a8578063f72c0d8b146107c85761025c565b806395d89b411461069c578063a217fddf146106b1578063a22cb465146106c6578063ac7905a0146106e6578063b88d4fde146107075761025c565b80637a85c3e9116101085780637a85c3e9146105cf5780637bb7c0d8146105ef578063817e3d011461060f5780638456cb59146106485780638da5cb5b1461065d57806391d148541461067c5761025c565b80635e51191e146105455780636352211e146105655780636c0360eb1461058557806370a082311461059a578063715018a6146105ba5761025c565b806336568abe116101dd5780634f1ef286116101a15780634f1ef2861461048d5780634f6ccce7146104a057806355f804b3146104c057806356b2f0a2146104e05780635c975abb146105005780635d4e7baf146105185761025c565b806336568abe146103eb5780633659cfe61461040b5780633dc60c3b1461042b5780633f4ba83a1461045857806342842e0e1461046d5761025c565b806318160ddd1161022457806318160ddd1461033c57806323b872dd1461035b578063248a9ca31461037b5780632f2ff15d146103ab5780632f745c59146103cb5761025c565b806301ffc9a71461026157806306bfcec61461029657806306fdde03146102cd578063081812fc146102e2578063095ea7b31461031a575b600080fd5b34801561026d57600080fd5b5061028161027c366004613c69565b6107fc565b60405190151581526020015b60405180910390f35b3480156102a257600080fd5b506040805180820190915260058152640312e302e360dc1b60208201525b60405161028d9190613f20565b3480156102d957600080fd5b506102c061080f565b3480156102ee57600080fd5b506103026102fd366004613c2d565b6108a1565b6040516001600160a01b03909116815260200161028d565b34801561032657600080fd5b5061033a610335366004613a93565b61093b565b005b34801561034857600080fd5b50609c545b60405190815260200161028d565b34801561036757600080fd5b5061033a610376366004613908565b610a51565b34801561038757600080fd5b5061034d610396366004613c2d565b600090815260fe602052604090206001015490565b3480156103b757600080fd5b5061033a6103c6366004613c45565b610a82565b3480156103d757600080fd5b5061034d6103e6366004613a93565b610aa9565b3480156103f757600080fd5b5061033a610406366004613c45565b610b42565b34801561041757600080fd5b5061033a610426366004613898565b610bc0565b34801561043757600080fd5b5061044b610446366004613c2d565b610be7565b60405161028d91906140e8565b34801561046457600080fd5b5061033a610cd9565b34801561047957600080fd5b5061033a610488366004613908565b610d0a565b61033a61049b3660046139e5565b610d25565b3480156104ac57600080fd5b5061034d6104bb366004613c2d565b610d3a565b3480156104cc57600080fd5b5061033a6104db366004613ca1565b610ddb565b3480156104ec57600080fd5b5061033a6104fb366004613abe565b610e16565b34801561050c57600080fd5b5060cc5460ff16610281565b34801561052457600080fd5b50610538610533366004613c2d565b610f39565b60405161028d9190614085565b34801561055157600080fd5b5061033a610560366004613b90565b610ff4565b34801561057157600080fd5b50610302610580366004613c2d565b611374565b34801561059157600080fd5b506102c06113eb565b3480156105a657600080fd5b5061034d6105b5366004613898565b61147a565b3480156105c657600080fd5b5061033a611501565b3480156105db57600080fd5b506102816105ea366004613bd2565b611566565b3480156105fb57600080fd5b5061033a61060a366004613a32565b61194b565b34801561061b57600080fd5b5061034d61062a366004613dd5565b15156000908152600160209081526040808320938352929052205490565b34801561065457600080fd5b5061033a611ab7565b34801561066957600080fd5b50610162546001600160a01b0316610302565b34801561068857600080fd5b50610281610697366004613c45565b611ae6565b3480156106a857600080fd5b506102c0611b11565b3480156106bd57600080fd5b5061034d600081565b3480156106d257600080fd5b5061033a6106e13660046139b1565b611b20565b3480156106f257600080fd5b506101f954610302906001600160a01b031681565b34801561071357600080fd5b5061033a610722366004613948565b611bf2565b34801561073357600080fd5b506102c0610742366004613c2d565b611c24565b34801561075357600080fd5b506101fa54610302906001600160a01b031681565b34801561077457600080fd5b5061033a610783366004613c45565b611ce6565b34801561079457600080fd5b506102816107a33660046138d0565b611d0c565b3480156107b457600080fd5b5061033a6107c3366004613898565b611ded565b3480156107d457600080fd5b5061034d7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e381565b600061080782611eb6565b90505b919050565b60606068805461081e9061425d565b80601f016020809104026020016040519081016040528092919081815260200182805461084a9061425d565b80156108975780601f1061086c57610100808354040283529160200191610897565b820191906000526020600020905b81548152906001019060200180831161087a57829003601f168201915b5050505050905090565b6000818152606a60205260408120546001600160a01b031661091f5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152606c60205260409020546001600160a01b031690565b600061094682611374565b9050806001600160a01b0316836001600160a01b031614156109b45760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610916565b336001600160a01b03821614806109d057506109d081336107a3565b610a425760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610916565b610a4c8383611edb565b505050565b610a5b3382611f49565b610a775760405162461bcd60e51b815260040161091690614034565b610a4c838383612020565b600082815260fe6020526040902060010154610a9f81335b6121cb565b610a4c838361222f565b6000610ab48361147a565b8210610b165760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610916565b506001600160a01b0382166000908152609a602090815260408083208484529091529020545b92915050565b6001600160a01b0381163314610bb25760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610916565b610bbc82826122b5565b5050565b610bc98161231c565b610be481604051806020016040528060008152506000612392565b50565b604080518082019091526000815260606020820152610c1d826000908152606a60205260409020546001600160a01b0316151590565b610c5c5760405162461bcd60e51b815260206004820152601060248201526f546f6b656e206e6f742065786973747360801b6044820152606401610916565b6000828152602081815260409182902082518084018452815461ffff16815260018201805485518186028101860190965280865291949293858101939290830182828015610cc957602002820191906000526020600020905b815481526020019060010190808311610cb5575b5050505050815250509050919050565b610ce4600033610697565b610d005760405162461bcd60e51b815260040161091690613f33565b610d0861251a565b565b610a4c83838360405180602001604052806000815250611bf2565b610d2e8261231c565b610bbc82826001612392565b6000610d45609c5490565b8210610da85760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610916565b609c8281548110610dc957634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050919050565b610de6600033610697565b610e025760405162461bcd60e51b815260040161091690613f33565b8051610bbc906101fb9060208401906135ba565b610e21600033610697565b610e3d5760405162461bcd60e51b815260040161091690613f33565b60005b8351811015610f33576040518060400160405280848381518110610e7457634e487b7160e01b600052603260045260246000fd5b602002602001015161ffff168152602001838381518110610ea557634e487b7160e01b600052603260045260246000fd5b602002602001015181525060026000868481518110610ed457634e487b7160e01b600052603260045260246000fd5b60209081029190910181015161ffff90811683528282019390935260409091016000208351815461ffff19169316929092178255828101518051610f1e926001850192019061363e565b5090505080610f2c90614298565b9050610e40565b50505050565b60408051808201909152600081526060602082015260008281526002602090815260409182902082518084018452815461ffff16815260018201805485518186028101860190965280865291949293858101939290830182828015610cc957602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411610fac5790505050505050815250509050919050565b60cc5460ff16156110175760405162461bcd60e51b815260040161091690613fbc565b600261013054141561106b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610916565b6002610130556110796125ad565b61108582826001611566565b6110d15760405162461bcd60e51b815260206004820152601a60248201527f6e6f7420612076616c6964206c697374206f6620746f6b656e730000000000006044820152606401610916565b60008161112057600080846000815181106110fc57634e487b7160e01b600052603260045260246000fd5b60209081029190910181015182528101919091526040016000205461ffff166111d3565b6101f95483516001600160a01b0390911690633dc60c3b90859060009061115757634e487b7160e01b600052603260045260246000fd5b60200260200101516040518263ffffffff1660e01b815260040161117d91815260200190565b60006040518083038186803b15801561119557600080fd5b505afa1580156111a9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111d19190810190613cd3565b515b61ffff80821660009081526002602090815260408083205481518083019092529093168084529083018790529293505b85518110156112cc5784151560009081526001602081905260408220885161126b93908a908690811061124657634e487b7160e01b600052603260045260246000fd5b602002602001015181526020019081526020016000205461264590919063ffffffff16565b851515600090815260016020526040812088519091908990859081106112a157634e487b7160e01b600052603260045260246000fd5b6020026020010151815260200190815260200160002081905550806112c590614298565b9050611203565b5060006112d833612651565b6000818152602081815260409091208451815461ffff191661ffff90911617815584820151805193945085939192611318926001850192909101906136e2565b50905050806113243390565b6001600160a01b03167fb6d4c3b1e9d5c5c373b22ac6ea336bcdd0348e7250b4875a980281d00d23c2704260405161135e91815260200190565b60405180910390a3505060016101305550505050565b6000818152606a60205260408120546001600160a01b0316806108075760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610916565b6101fb80546113f99061425d565b80601f01602080910402602001604051908101604052809291908181526020018280546114259061425d565b80156114725780601f1061144757610100808354040283529160200191611472565b820191906000526020600020905b81548152906001019060200180831161145557829003601f168201915b505050505081565b60006001600160a01b0382166114e55760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610916565b506001600160a01b03166000908152606b602052604090205490565b610162546001600160a01b0316331461155c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610916565b610d08600061267a565b600083516000141561157a57506000611944565b60008460008151811061159d57634e487b7160e01b600052603260045260246000fd5b602002602001015190506000846115bd576115b782610be7565b51611640565b6101f954604051633dc60c3b60e01b8152600481018490526001600160a01b0390911690633dc60c3b9060240160006040518083038186803b15801561160257600080fd5b505afa158015611616573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261163e9190810190613cd3565b515b61ffff808216600090815260026020526040902054919250168061166a5760009350505050611944565b865161ffff8216600090815260026020526040902060010154146116945760009350505050611944565b600061169e61371c565b60008060005b8b51811015611937578b81815181106116cd57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101518c1515600090815260018352604080822083835290935291909120549098501561170e57600098505050505050505050611944565b8a6117225761171c88610be7565b516117a5565b6101f954604051633dc60c3b60e01b8152600481018a90526001600160a01b0390911690633dc60c3b9060240160006040518083038186803b15801561176757600080fd5b505afa15801561177b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117a39190810190613cd3565b515b61ffff8181166000908152600260205260409020549198508781169116146117d857600098505050505050505050611944565b8a6117eb576117e688611374565b611868565b6101f9546040516331a9108f60e11b8152600481018a90526001600160a01b0390911690636352211e9060240160206040518083038186803b15801561183057600080fd5b505afa158015611844573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186891906138b4565b945089801561188057506001600160a01b0385163314155b1561189657600098505050505050505050611944565b6118a2610100886141af565b61ffff1692506118b4610100886142b3565b61ffff166001901b9150818484600281106118df57634e487b7160e01b600052603260045260246000fd5b602002015116156118fb57600098505050505050505050611944565b8184846002811061191c57634e487b7160e01b600052603260045260246000fd5b602002018051909117905261193081614298565b90506116a4565b5060019750505050505050505b9392505050565b600354610100900460ff1680611964575060035460ff16155b6119805760405162461bcd60e51b815260040161091690613fe6565b600354610100900460ff161580156119ab576003805460ff1961ff0019909116610100171660011790555b6119f66040518060400160405280600f81526020016e52697665726d656e5363726f6c6c7360881b81525060405180604001604052806002815260200161525360f01b8152506126cd565b6119fe61275d565b611a066127e9565b611a0e61275d565b611a16612859565b611a216000336128c0565b611a4b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3336128c0565b6101f980546001600160a01b0319166001600160a01b0386161790558251611a7b906101fb9060208601906135ba565b506101fa80546001600160a01b0319166001600160a01b038416179055611aa06128ca565b8015610f33576003805461ff001916905550505050565b611ac2600033610697565b611ade5760405162461bcd60e51b815260040161091690613f33565b610d086128ca565b600091825260fe602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606069805461081e9061425d565b6001600160a01b038216331415611b795760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610916565b336000818152606d602090815260408083206001600160a01b0387168085529252909120805460ff1916841515179055906001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611be6911515815260200190565b60405180910390a35050565b611bfc3383611f49565b611c185760405162461bcd60e51b815260040161091690614034565b610f3384848484612922565b6000818152606a60205260409020546060906001600160a01b0316611c8b5760405162461bcd60e51b815260206004820152601f60248201527f55524920717565727920666f72206e6f6e6578697374656e7420746f6b656e006044820152606401610916565b6000611c95612955565b90506000815111611cb55760405180602001604052806000815250611944565b80611cbf84612965565b604051602001611cd0929190613e3f565b6040516020818303038152906040529392505050565b600082815260fe6020526040902060010154611d028133610a9a565b610a4c83836122b5565b6101fa546000906001600160a01b031615611dbf576101fa5460405163c455279160e01b81526001600160a01b03858116600483015291821691841690829063c45527919060240160206040518083038186803b158015611d6c57600080fd5b505afa158015611d80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da491906138b4565b6001600160a01b03161415611dbd576001915050610b3c565b505b6001600160a01b038084166000908152606d602090815260408083209386168352929052205460ff16611944565b610162546001600160a01b03163314611e485760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610916565b6001600160a01b038116611ead5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610916565b610be48161267a565b60006001600160e01b03198216637965db0b60e01b1480610807575061080782612a7f565b6000818152606c6020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611f1082611374565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152606a60205260408120546001600160a01b0316611fc25760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610916565b6000611fcd83611374565b9050806001600160a01b0316846001600160a01b031614806120085750836001600160a01b0316611ffd846108a1565b6001600160a01b0316145b8061201857506120188185611d0c565b949350505050565b826001600160a01b031661203382611374565b6001600160a01b03161461209b5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610916565b6001600160a01b0382166120fd5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610916565b612108838383612aa4565b612113600082611edb565b6001600160a01b0383166000908152606b6020526040812080546001929061213c908490614203565b90915550506001600160a01b0382166000908152606b6020526040812080546001929061216a908490614197565b90915550506000818152606a602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6121d58282611ae6565b610bbc576121ed816001600160a01b03166014612ad2565b6121f8836020612ad2565b604051602001612209929190613e6e565b60408051601f198184030181529082905262461bcd60e51b825261091691600401613f20565b6122398282611ae6565b610bbc57600082815260fe602090815260408083206001600160a01b03851684529091529020805460ff191660011790556122713390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6122bf8282611ae6565b15610bbc57600082815260fe602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6123467f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e333610697565b610be45760405162461bcd60e51b815260206004820152601b60248201527f72657175697265207570677261646572207065726d697373696f6e00000000006044820152606401610916565b60006123c57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b90506123d084612cb3565b6000835111806123dd5750815b156123ee576123ec8484612d58565b505b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143805460ff1661251357805460ff191660011781556040516001600160a01b038316602482015261246d90869060440160408051601f198184030181529190526020810180516001600160e01b0316631b2ce7f360e11b179052612d58565b50805460ff191681557f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b0383811691161461250a5760405162461bcd60e51b815260206004820152602f60248201527f45524331393637557067726164653a207570677261646520627265616b73206660448201526e75727468657220757067726164657360881b6064820152608401610916565b61251385612e43565b5050505050565b60cc5460ff166125635760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610916565b60cc805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b33803b9081156125f65760405162461bcd60e51b815260206004820152601460248201527318dbdb9d1c9858dd081b9bdd08185b1b1bddd95960621b6044820152606401610916565b333214610bbc5760405162461bcd60e51b815260206004820152601a60248201527f70726f787920636f6e7472616374206e6f7420616c6c6f7765640000000000006044820152606401610916565b60006119448284614197565b60006126626101f880546001019055565b600061266e6101f85490565b90506108078382612e83565b61016280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600354610100900460ff16806126e6575060035460ff16155b6127025760405162461bcd60e51b815260040161091690613fe6565b600354610100900460ff1615801561272d576003805460ff1961ff0019909116610100171660011790555b612735612e9d565b61273d612e9d565b6127478383612f10565b8015610a4c576003805461ff0019169055505050565b600354610100900460ff1680612776575060035460ff16155b6127925760405162461bcd60e51b815260040161091690613fe6565b600354610100900460ff161580156127bd576003805460ff1961ff0019909116610100171660011790555b6127c5612e9d565b6127cd612e9d565b6127d5612e9d565b8015610be4576003805461ff001916905550565b600354610100900460ff1680612802575060035460ff16155b61281e5760405162461bcd60e51b815260040161091690613fe6565b600354610100900460ff16158015612849576003805460ff1961ff0019909116610100171660011790555b612851612e9d565b6127d5612fae565b600354610100900460ff1680612872575060035460ff16155b61288e5760405162461bcd60e51b815260040161091690613fe6565b600354610100900460ff161580156127c5576003805460ff1961ff0019909116610100171660011790556127cd612e9d565b610bbc828261222f565b60cc5460ff16156128ed5760405162461bcd60e51b815260040161091690613fbc565b60cc805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586125903390565b61292d848484612020565b6129398484848461302c565b610f335760405162461bcd60e51b815260040161091690613f6a565b60606101fb805461081e9061425d565b60608161298a57506040805180820190915260018152600360fc1b602082015261080a565b8160005b81156129b4578061299e81614298565b91506129ad9050600a836141d0565b915061298e565b6000816001600160401b038111156129dc57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612a06576020820181803683370190505b5090505b841561201857612a1b600183614203565b9150612a28600a866142d4565b612a33906030614197565b60f81b818381518110612a5657634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350612a78600a866141d0565b9450612a0a565b60006001600160e01b0319821663780e9d6360e01b1480610807575061080782613139565b60cc5460ff1615612ac75760405162461bcd60e51b815260040161091690613fbc565b610a4c838383613189565b60606000612ae18360026141e4565b612aec906002614197565b6001600160401b03811115612b1157634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612b3b576020820181803683370190505b509050600360fc1b81600081518110612b6457634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612ba157634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506000612bc58460026141e4565b612bd0906001614197565b90505b6001811115612c64576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612c1257634e487b7160e01b600052603260045260246000fd5b1a60f81b828281518110612c3657634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c93612c5d81614246565b9050612bd3565b5083156119445760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610916565b803b612d175760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610916565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060823b612db75760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610916565b600080846001600160a01b031684604051612dd29190613e23565b600060405180830381855af49150503d8060008114612e0d576040519150601f19603f3d011682016040523d82523d6000602084013e612e12565b606091505b5091509150612e3a828260405180606001604052806027815260200161436660279139613246565b95945050505050565b612e4c81612cb3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b610bbc82826040518060200160405280600081525061327f565b600354610100900460ff1680612eb6575060035460ff16155b612ed25760405162461bcd60e51b815260040161091690613fe6565b600354610100900460ff161580156127d5576003805460ff1961ff0019909116610100171660011790558015610be4576003805461ff001916905550565b600354610100900460ff1680612f29575060035460ff16155b612f455760405162461bcd60e51b815260040161091690613fe6565b600354610100900460ff16158015612f70576003805460ff1961ff0019909116610100171660011790555b8251612f839060689060208601906135ba565b508151612f979060699060208501906135ba565b508015610a4c576003805461ff0019169055505050565b600354610100900460ff1680612fc7575060035460ff16155b612fe35760405162461bcd60e51b815260040161091690613fe6565b600354610100900460ff1615801561300e576003805460ff1961ff0019909116610100171660011790555b60cc805460ff191690558015610be4576003805461ff001916905550565b60006001600160a01b0384163b1561312e57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290613070903390899088908890600401613ee3565b602060405180830381600087803b15801561308a57600080fd5b505af19250505080156130ba575060408051601f3d908101601f191682019092526130b791810190613c85565b60015b613114573d8080156130e8576040519150601f19603f3d011682016040523d82523d6000602084013e6130ed565b606091505b50805161310c5760405162461bcd60e51b815260040161091690613f6a565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612018565b506001949350505050565b60006001600160e01b031982166380ac58cd60e01b148061316a57506001600160e01b03198216635b5e139f60e01b145b8061080757506301ffc9a760e01b6001600160e01b0319831614610807565b6001600160a01b0383166131e4576131df81609c80546000838152609d60205260408120829055600182018355919091527faf85b9071dfafeac1409d3f1d19bafc9bc7c37974cde8df0ee6168f0086e539c0155565b613207565b816001600160a01b0316836001600160a01b0316146132075761320783826132b2565b6001600160a01b0382166132235761321e8161334f565b610a4c565b826001600160a01b0316826001600160a01b031614610a4c57610a4c8282613428565b60608315613255575081611944565b8251156132655782518084602001fd5b8160405162461bcd60e51b81526004016109169190613f20565b613289838361346c565b613296600084848461302c565b610a4c5760405162461bcd60e51b815260040161091690613f6a565b600060016132bf8461147a565b6132c99190614203565b6000838152609b602052604090205490915080821461331c576001600160a01b0384166000908152609a602090815260408083208584528252808320548484528184208190558352609b90915290208190555b506000918252609b602090815260408084208490556001600160a01b039094168352609a81528383209183525290812055565b609c5460009061336190600190614203565b6000838152609d6020526040812054609c805493945090928490811061339757634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905080609c83815481106133c657634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255828152609d9091526040808220849055858252812055609c80548061340c57634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b60006134338361147a565b6001600160a01b039093166000908152609a602090815260408083208684528252808320859055938252609b9052919091209190915550565b6001600160a01b0382166134c25760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610916565b6000818152606a60205260409020546001600160a01b0316156135275760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610916565b61353360008383612aa4565b6001600160a01b0382166000908152606b6020526040812080546001929061355c908490614197565b90915550506000818152606a602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8280546135c69061425d565b90600052602060002090601f0160209004810192826135e8576000855561362e565b82601f1061360157805160ff191683800117855561362e565b8280016001018555821561362e579182015b8281111561362e578251825591602001919060010190613613565b5061363a92915061373a565b5090565b82805482825590600052602060002090600f0160109004810192821561362e5791602002820160005b838211156136a757835183826101000a81548161ffff021916908361ffff1602179055509260200192600201602081600101049283019260010302613667565b80156136d55782816101000a81549061ffff02191690556002016020816001010492830192600103026136a7565b505061363a92915061373a565b82805482825590600052602060002090810192821561362e579160200282018281111561362e578251825591602001919060010190613613565b60405180604001604052806002906020820280368337509192915050565b5b8082111561363a576000815560010161373b565b600082601f83011261375f578081fd5b8135602061377461376f83614174565b614144565b8281528181019085830183850287018401881015613790578586fd5b855b858110156137b75781356137a581614355565b84529284019290840190600101613792565b5090979650505050505050565b600082601f8301126137d4578081fd5b813560206137e461376f83614174565b8281528181019085830183850287018401881015613800578586fd5b855b858110156137b757813584529284019290840190600101613802565b8035801515811461080a57600080fd5b600082601f83011261383e578081fd5b81356001600160401b0381111561385757613857614314565b61386a601f8201601f1916602001614144565b81815284602083860101111561387e578283fd5b816020850160208301379081016020019190915292915050565b6000602082840312156138a9578081fd5b81356119448161432a565b6000602082840312156138c5578081fd5b81516119448161432a565b600080604083850312156138e2578081fd5b82356138ed8161432a565b915060208301356138fd8161432a565b809150509250929050565b60008060006060848603121561391c578081fd5b83356139278161432a565b925060208401356139378161432a565b929592945050506040919091013590565b6000806000806080858703121561395d578182fd5b84356139688161432a565b935060208501356139788161432a565b92506040850135915060608501356001600160401b03811115613999578182fd5b6139a58782880161382e565b91505092959194509250565b600080604083850312156139c3578182fd5b82356139ce8161432a565b91506139dc6020840161381e565b90509250929050565b600080604083850312156139f7578182fd5b8235613a028161432a565b915060208301356001600160401b03811115613a1c578182fd5b613a288582860161382e565b9150509250929050565b600080600060608486031215613a46578081fd5b8335613a518161432a565b925060208401356001600160401b03811115613a6b578182fd5b613a778682870161382e565b9250506040840135613a888161432a565b809150509250925092565b60008060408385031215613aa5578182fd5b8235613ab08161432a565b946020939093013593505050565b600080600060608486031215613ad2578081fd5b83356001600160401b0380821115613ae8578283fd5b613af48783880161374f565b9450602091508186013581811115613b0a578384fd5b613b168882890161374f565b945050604086013581811115613b2a578384fd5b86019050601f81018713613b3c578283fd5b8035613b4a61376f82614174565b81815283810190838501865b84811015613b7f57613b6d8c88843589010161374f565b84529286019290860190600101613b56565b505080955050505050509250925092565b60008060408385031215613ba2578182fd5b82356001600160401b03811115613bb7578283fd5b613bc3858286016137c4565b9250506139dc6020840161381e565b600080600060608486031215613be6578081fd5b83356001600160401b03811115613bfb578182fd5b613c07868287016137c4565b935050613c166020850161381e565b9150613c246040850161381e565b90509250925092565b600060208284031215613c3e578081fd5b5035919050565b60008060408385031215613c57578182fd5b8235915060208301356138fd8161432a565b600060208284031215613c7a578081fd5b81356119448161433f565b600060208284031215613c96578081fd5b81516119448161433f565b600060208284031215613cb2578081fd5b81356001600160401b03811115613cc7578182fd5b6120188482850161382e565b60006020808385031215613ce5578182fd5b82516001600160401b0380821115613cfb578384fd5b9084019060808287031215613d0e578384fd5b613d186080614144565b8251613d2381614355565b815282840151613d3281614355565b81850152604083015163ffffffff81168114613d4c578586fd5b6040820152606083015182811115613d62578586fd5b80840193505086601f840112613d76578485fd5b82519150613d8661376f83614174565b82815284810190848601868502860187018a1015613da2578788fd5b8795505b84861015613dc4578051835260019590950194918601918601613da6565b506060830152509695505050505050565b60008060408385031215613de7578182fd5b823591506139dc6020840161381e565b60008151808452613e0f81602086016020860161421a565b601f01601f19169290920160200192915050565b60008251613e3581846020870161421a565b9190910192915050565b60008351613e5181846020880161421a565b835190830190613e6581836020880161421a565b01949350505050565b60007f416363657373436f6e74726f6c3a206163636f756e742000000000000000000082528351613ea681601785016020880161421a565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613ed781602884016020880161421a565b01602801949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613f1690830184613df7565b9695505050505050565b6000602082526119446020830184613df7565b60208082526018908201527f726571756972652061646d696e207065726d697373696f6e0000000000000000604082015260600190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b600060208083526060830161ffff80865116838601528286015160408087015282815180855260808801915085830194508692505b808310156140dc578451841682529385019360019290920191908501906140ba565b50979650505050505050565b6020808252825161ffff16828201528281015160408084015280516060840181905260009291820190839060808601905b808310156141395783518252928401926001929092019190840190614119565b509695505050505050565b604051601f8201601f191681016001600160401b038111828210171561416c5761416c614314565b604052919050565b60006001600160401b0382111561418d5761418d614314565b5060209081020190565b600082198211156141aa576141aa6142e8565b500190565b600061ffff808416806141c4576141c46142fe565b92169190910492915050565b6000826141df576141df6142fe565b500490565b60008160001904831182151516156141fe576141fe6142e8565b500290565b600082821015614215576142156142e8565b500390565b60005b8381101561423557818101518382015260200161421d565b83811115610f335750506000910152565b600081614255576142556142e8565b506000190190565b60028104600182168061427157607f821691505b6020821081141561429257634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156142ac576142ac6142e8565b5060010190565b600061ffff808416806142c8576142c86142fe565b92169190910692915050565b6000826142e3576142e36142fe565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610be457600080fd5b6001600160e01b031981168114610be457600080fd5b61ffff81168114610be457600080fdfe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c6f7b160f1819d1d721ce58f17bc7a15e1d71880d08fe06d45660936f23f78c864736f6c63430008020033