0x6080604052600436106101bd575f3560e01c806372460e7f116100f25780639d34a30d11610092578063dd62ed3e11610062578063dd62ed3e14610549578063e6b2603b1461058d578063f2fde38b146105a1578063f708a64f146105c0575f80fd5b80639d34a30d146104cd578063a457c2d7146104ec578063a6d3472a1461050b578063a9059cbb1461052a575f80fd5b80638ca39f5e116100cd5780638ca39f5e1461045f5780638da5cb5b1461047e57806395d89b411461049a57806398ed3bbd146104ae575f80fd5b806372460e7f146103ea578063736ce0d4146104215780637daf4b2b14610440575f80fd5b8063313ce5671161015d5780634355855a116101385780634355855a146103415780636ddd17131461036f57806370a08231146103a0578063715018a6146103d4575f80fd5b8063313ce567146102d357806339509351146102f45780633ecad27114610313575f80fd5b8063095ea7b311610198578063095ea7b3146102535780630d61f8371461027257806318160ddd146102a057806323b872dd146102b4575f80fd5b80630445b667146101c85780630634f438146101f057806306fdde0314610232575f80fd5b366101c457005b5f80fd5b3480156101d3575f80fd5b506101dd600a5481565b6040519081526020015b60405180910390f35b3480156101fb575f80fd5b50600b54610222907501000000000000000000000000000000000000000000900460ff1681565b60405190151581526020016101e7565b34801561023d575f80fd5b506102466105df565b6040516101e79190611bb8565b34801561025e575f80fd5b5061022261026d366004611c1c565b61066f565b34801561027d575f80fd5b5061022261028c366004611c46565b60066020525f908152604090205460ff1681565b3480156102ab575f80fd5b506009546101dd565b3480156102bf575f80fd5b506102226102ce366004611c61565b610685565b3480156102de575f80fd5b5060035460405160ff90911681526020016101e7565b3480156102ff575f80fd5b5061022261030e366004611c1c565b6106ee565b34801561031e575f80fd5b5061022261032d366004611c46565b60076020525f908152604090205460ff1681565b34801561034c575f80fd5b5061022261035b366004611c46565b60086020525f908152604090205460ff1681565b34801561037a575f80fd5b50600b546102229074010000000000000000000000000000000000000000900460ff1681565b3480156103ab575f80fd5b506101dd6103ba366004611c46565b6001600160a01b03165f9081526004602052604090205490565b3480156103df575f80fd5b506103e8610723565b005b3480156103f5575f80fd5b50600e54610409906001600160a01b031681565b6040516001600160a01b0390911681526020016101e7565b34801561042c575f80fd5b50600d54610409906001600160a01b031681565b34801561044b575f80fd5b506103e861045a366004611cb3565b6107a6565b34801561046a575f80fd5b50600c54610409906001600160a01b031681565b348015610489575f80fd5b505f546001600160a01b0316610409565b3480156104a5575f80fd5b50610246610850565b3480156104b9575f80fd5b506103e86104c8366004611cec565b61085f565b3480156104d8575f80fd5b506103e86104e7366004611c61565b6108bd565b3480156104f7575f80fd5b50610222610506366004611c1c565b610a26565b348015610516575f80fd5b506103e8610525366004611c46565b610a73565b348015610535575f80fd5b50610222610544366004611c1c565b610ac3565b348015610554575f80fd5b506101dd610563366004611d1f565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b348015610598575f80fd5b506103e8610acf565b3480156105ac575f80fd5b506103e86105bb366004611c46565b610b97565b3480156105cb575f80fd5b506103e86105da366004611cec565b610ca9565b6060600180546105ee90611d56565b80601f016020809104026020016040519081016040528092919081815260200182805461061a90611d56565b80156106655780601f1061063c57610100808354040283529160200191610665565b820191905f5260205f20905b81548152906001019060200180831161064857829003601f168201915b5050505050905090565b5f61067b338484610e2d565b5060015b92915050565b5f610691848484610fb8565b506106e384336106de85604051806060016040528060288152602001611f4a602891396001600160a01b038a165f908152600560209081526040808320338452909152902054919061139f565b610e2d565b5060015b9392505050565b335f8181526005602090815260408083206001600160a01b0387168452909152812054909161067b9185906106de90866113f1565b5f546001600160a01b0316331461079b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6107a45f611469565b565b600b546001600160a01b031633146107bc575f80fd5b600b8054600a939093559015157501000000000000000000000000000000000000000000027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff9315157401000000000000000000000000000000000000000002939093167fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff90921691909117919091179055565b6060600280546105ee90611d56565b600b546001600160a01b03163314610875575f80fd5b6001600160a01b03919091165f90815260066020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b600b546001600160a01b031633146108d3575f80fd5b6040516001600160a01b038381166024830152604482018390525f9190851690606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052516109779190611da7565b5f604051808303815f865af19150503d805f81146109b0576040519150601f19603f3d011682016040523d82523d5f602084013e6109b5565b606091505b5050905080610a20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f546f6b656e207061796d656e74206661696c65640000000000000000000000006044820152606401610792565b50505050565b5f61067b33846106de85604051806060016040528060258152602001611f7260259139335f9081526005602090815260408083206001600160a01b038d168452909152902054919061139f565b600b546001600160a01b03163314610a89575f80fd5b600c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b5f6106e3338484610fb8565b600b546001600160a01b03163314610ae5575f80fd5b6040515f90339047908381818185875af1925050503d805f8114610b24576040519150601f19603f3d011682016040523d82523d5f602084013e610b29565b606091505b5050905080610b94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f546f6b656e207061796d656e74206661696c65640000000000000000000000006044820152606401610792565b50565b5f546001600160a01b03163314610c0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610792565b6001600160a01b038116610ca0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610792565b610b9481611469565b600b546001600160a01b03163314610cbf575f80fd5b8015610d4357600c546040517f14b6ca960000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301525f6024830152909116906314b6ca96906044015f604051808303815f87803b158015610d28575f80fd5b505af1158015610d3a573d5f803e3d5ffd5b50505050610de5565b600c546001600160a01b03166314b6ca9683610d73816001600160a01b03165f9081526004602052604090205490565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b158015610dce575f80fd5b505af1158015610de0573d5f803e3d5ffd5b505050505b6001600160a01b03919091165f90815260086020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6001600160a01b038316610ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610792565b6001600160a01b038216610f58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610792565b6001600160a01b038381165f8181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b03841615801590610fd957506001600160a01b03831615155b8015610fe457505f82115b610fec575f80fd5b600e5474010000000000000000000000000000000000000000900460ff16156110215761101a8484846114d0565b90506106e7565b305f90815260046020526040902054600a548110801590819061105f5750600e5474010000000000000000000000000000000000000000900460ff16155b801561108357506001600160a01b0386165f9081526007602052604090205460ff16155b80156110a95750600b5474010000000000000000000000000000000000000000900460ff165b80156110cd57506001600160a01b0386165f9081526006602052604090205460ff16155b80156110f157506001600160a01b0385165f9081526006602052604090205460ff16155b156110ff576110ff826115bc565b604080518082018252601481527f496e73756666696369656e742042616c616e63650000000000000000000000006020808301919091526001600160a01b0389165f9081526004909152919091205461115991869061139f565b6001600160a01b0387165f9081526004602052604081209190915561117e87876116d6565b6111925761118d878787611770565b611194565b845b6001600160a01b0387165f908152600460205260409020549091506111b990826113f1565b6001600160a01b038088165f90815260046020908152604080832094909455918a1681526008909152205460ff1661128957600c546001600160a01b03166314b6ca968861121b816001600160a01b03165f9081526004602052604090205490565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b158015611276575f80fd5b505af1925050508015611287575060015b505b6001600160a01b0386165f9081526008602052604090205460ff1661134657600c546001600160a01b03166314b6ca96876112d8816001600160a01b03165f9081526004602052604090205490565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b158015611333575f80fd5b505af1925050508015611344575060015b505b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161138b91815260200190565b60405180910390a3600193505050506106e7565b5f81848411156113dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107929190611bb8565b505f6113e88486611def565b95945050505050565b5f806113fd8385611e02565b9050838110156106e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610792565b5f80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080518082018252601481527f496e73756666696369656e742042616c616e63650000000000000000000000006020808301919091526001600160a01b0386165f90815260049091529182205461152991849061139f565b6001600160a01b038086165f90815260046020526040808220939093559085168152205461155790836113f1565b6001600160a01b038085165f8181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115aa9086815260200190565b60405180910390a35060019392505050565b600e80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055600b547501000000000000000000000000000000000000000000900460ff16156116245750600a545b80156116ab574761163482611864565b5f61163f4783611a1f565b905080156116a857600c5f9054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b158015611694575f80fd5b505af1935050505080156116a6575060015b505b50505b50600e80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b6001600160a01b0382165f9081526006602052604081205460ff168061171357506001600160a01b0382165f9081526006602052604090205460ff165b156117205750600161067f565b6001600160a01b0383165f9081526007602052604090205460ff168061175d57506001600160a01b0382165f9081526007602052604090205460ff165b1561176957505f61067f565b505f61067f565b6001600160a01b0383165f90815260076020526040812054819060ff16156117af576117a860646117a2856003611a60565b90611b14565b90506117e2565b6001600160a01b0384165f9081526007602052604090205460ff16156117e2576117df60646117a2856003611a60565b90505b801561185a57305f9081526004602052604090205461180190826113f1565b305f81815260046020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118519085815260200190565b60405180910390a35b6113e88382611a1f565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061189757611897611e15565b6001600160a01b03928316602091820292909201810191909152600d54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015611907573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061192b9190611e42565b8160018151811061193e5761193e611e15565b6001600160a01b039283166020918202929092010152600d546119649130911684610e2d565b600d546040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063791ac947906119b59085905f90869030904290600401611e9f565b5f604051808303815f87803b1580156119cc575f80fd5b505af11580156119de573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611a13929190611eda565b60405180910390a15050565b5f6106e783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061139f565b5f825f03611a6f57505f61067f565b5f611a7a8385611efa565b905082611a878583611f11565b146106e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f77000000000000000000000000000000000000000000000000000000000000006064820152608401610792565b5f6106e783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f8183611b8a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107929190611bb8565b505f6113e88486611f11565b5f5b83811015611bb0578181015183820152602001611b98565b50505f910152565b602081525f8251806020840152611bd6816040850160208701611b96565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6001600160a01b0381168114610b94575f80fd5b5f8060408385031215611c2d575f80fd5b8235611c3881611c08565b946020939093013593505050565b5f60208284031215611c56575f80fd5b81356106e781611c08565b5f805f60608486031215611c73575f80fd5b8335611c7e81611c08565b92506020840135611c8e81611c08565b929592945050506040919091013590565b80358015158114611cae575f80fd5b919050565b5f805f60608486031215611cc5575f80fd5b611cce84611c9f565b925060208401359150611ce360408501611c9f565b90509250925092565b5f8060408385031215611cfd575f80fd5b8235611d0881611c08565b9150611d1660208401611c9f565b90509250929050565b5f8060408385031215611d30575f80fd5b8235611d3b81611c08565b91506020830135611d4b81611c08565b809150509250929050565b600181811c90821680611d6a57607f821691505b602082108103611da1577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f8251611db8818460208701611b96565b9190910192915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561067f5761067f611dc2565b8082018082111561067f5761067f611dc2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611e52575f80fd5b81516106e781611c08565b5f8151808452602080850194508084015f5b83811015611e945781516001600160a01b031687529582019590820190600101611e6f565b509495945050505050565b85815284602082015260a060408201525f611ebd60a0830186611e5d565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201525f611ef26040830184611e5d565b949350505050565b808202811582820484141761067f5761067f611dc2565b5f82611f44577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122012c0cccf1f7213e6d3158e22b6d753503c4c4c97d0d1e1db7403c19883fad45464736f6c63430008150033
0x60c0604052601560809081527f456d657267696e67204173736574732047726f7570000000000000000000000060a0526001906200003e9082620004b1565b5060408051808201909152600381526245414760e81b6020820152600290620000689082620004b1565b506003805460ff191660129081179091556200008690600a62000688565b620000959062b83ff86200069f565b600955600354620000ab9060ff16600a62000688565b620000b9906117706200069f565b600a55600b805461ffff60a01b191661010160a01b179055348015620000dd575f80fd5b50620000e933620003c2565b600b80546001600160a01b031916331790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91829163c45a0155916004808201926020929091908290030181865afa1580156200014d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001739190620006b9565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001bf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e59190620006b9565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000230573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002569190620006b9565b600e80546001600160a01b03199081166001600160a01b03938416178255600d8054909116848416178155305f818152600660209081526040808320805460ff1990811660019081179092557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805482168317905533808652838620805483168417905588548a168652600885528386208054831684179055808652838620805483168417905586865283862080548316841790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd09334299805483168417905587548a1686528386208054831684179055975489168552600784528285208054909116909117905592825260058152828220935490951681529184528082205f199055600954838352600485528183208190559051908152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350620006e1565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200043a57607f821691505b6020821081036200045957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620004ac575f81815260208120601f850160051c81016020861015620004875750805b601f850160051c820191505b81811015620004a85782815560010162000493565b5050505b505050565b81516001600160401b03811115620004cd57620004cd62000411565b620004e581620004de845462000425565b846200045f565b602080601f8311600181146200051b575f8415620005035750858301515b5f19600386901b1c1916600185901b178555620004a8565b5f85815260208120601f198616915b828110156200054b578886015182559484019460019091019084016200052a565b50858210156200056957878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620005cd57815f1904821115620005b157620005b162000579565b80851615620005bf57918102915b93841c939080029062000592565b509250929050565b5f82620005e55750600162000682565b81620005f357505f62000682565b81600181146200060c5760028114620006175762000637565b600191505062000682565b60ff8411156200062b576200062b62000579565b50506001821b62000682565b5060208310610133831016604e8410600b84101617156200065c575081810a62000682565b6200066883836200058d565b805f19048211156200067e576200067e62000579565b0290505b92915050565b5f6200069860ff841683620005d5565b9392505050565b808202811582820484141762000682576200068262000579565b5f60208284031215620006ca575f80fd5b81516001600160a01b038116811462000698575f80fd5b611fcc80620006ef5f395ff3fe6080604052600436106101bd575f3560e01c806372460e7f116100f25780639d34a30d11610092578063dd62ed3e11610062578063dd62ed3e14610549578063e6b2603b1461058d578063f2fde38b146105a1578063f708a64f146105c0575f80fd5b80639d34a30d146104cd578063a457c2d7146104ec578063a6d3472a1461050b578063a9059cbb1461052a575f80fd5b80638ca39f5e116100cd5780638ca39f5e1461045f5780638da5cb5b1461047e57806395d89b411461049a57806398ed3bbd146104ae575f80fd5b806372460e7f146103ea578063736ce0d4146104215780637daf4b2b14610440575f80fd5b8063313ce5671161015d5780634355855a116101385780634355855a146103415780636ddd17131461036f57806370a08231146103a0578063715018a6146103d4575f80fd5b8063313ce567146102d357806339509351146102f45780633ecad27114610313575f80fd5b8063095ea7b311610198578063095ea7b3146102535780630d61f8371461027257806318160ddd146102a057806323b872dd146102b4575f80fd5b80630445b667146101c85780630634f438146101f057806306fdde0314610232575f80fd5b366101c457005b5f80fd5b3480156101d3575f80fd5b506101dd600a5481565b6040519081526020015b60405180910390f35b3480156101fb575f80fd5b50600b54610222907501000000000000000000000000000000000000000000900460ff1681565b60405190151581526020016101e7565b34801561023d575f80fd5b506102466105df565b6040516101e79190611bb8565b34801561025e575f80fd5b5061022261026d366004611c1c565b61066f565b34801561027d575f80fd5b5061022261028c366004611c46565b60066020525f908152604090205460ff1681565b3480156102ab575f80fd5b506009546101dd565b3480156102bf575f80fd5b506102226102ce366004611c61565b610685565b3480156102de575f80fd5b5060035460405160ff90911681526020016101e7565b3480156102ff575f80fd5b5061022261030e366004611c1c565b6106ee565b34801561031e575f80fd5b5061022261032d366004611c46565b60076020525f908152604090205460ff1681565b34801561034c575f80fd5b5061022261035b366004611c46565b60086020525f908152604090205460ff1681565b34801561037a575f80fd5b50600b546102229074010000000000000000000000000000000000000000900460ff1681565b3480156103ab575f80fd5b506101dd6103ba366004611c46565b6001600160a01b03165f9081526004602052604090205490565b3480156103df575f80fd5b506103e8610723565b005b3480156103f5575f80fd5b50600e54610409906001600160a01b031681565b6040516001600160a01b0390911681526020016101e7565b34801561042c575f80fd5b50600d54610409906001600160a01b031681565b34801561044b575f80fd5b506103e861045a366004611cb3565b6107a6565b34801561046a575f80fd5b50600c54610409906001600160a01b031681565b348015610489575f80fd5b505f546001600160a01b0316610409565b3480156104a5575f80fd5b50610246610850565b3480156104b9575f80fd5b506103e86104c8366004611cec565b61085f565b3480156104d8575f80fd5b506103e86104e7366004611c61565b6108bd565b3480156104f7575f80fd5b50610222610506366004611c1c565b610a26565b348015610516575f80fd5b506103e8610525366004611c46565b610a73565b348015610535575f80fd5b50610222610544366004611c1c565b610ac3565b348015610554575f80fd5b506101dd610563366004611d1f565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b348015610598575f80fd5b506103e8610acf565b3480156105ac575f80fd5b506103e86105bb366004611c46565b610b97565b3480156105cb575f80fd5b506103e86105da366004611cec565b610ca9565b6060600180546105ee90611d56565b80601f016020809104026020016040519081016040528092919081815260200182805461061a90611d56565b80156106655780601f1061063c57610100808354040283529160200191610665565b820191905f5260205f20905b81548152906001019060200180831161064857829003601f168201915b5050505050905090565b5f61067b338484610e2d565b5060015b92915050565b5f610691848484610fb8565b506106e384336106de85604051806060016040528060288152602001611f4a602891396001600160a01b038a165f908152600560209081526040808320338452909152902054919061139f565b610e2d565b5060015b9392505050565b335f8181526005602090815260408083206001600160a01b0387168452909152812054909161067b9185906106de90866113f1565b5f546001600160a01b0316331461079b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6107a45f611469565b565b600b546001600160a01b031633146107bc575f80fd5b600b8054600a939093559015157501000000000000000000000000000000000000000000027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff9315157401000000000000000000000000000000000000000002939093167fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff90921691909117919091179055565b6060600280546105ee90611d56565b600b546001600160a01b03163314610875575f80fd5b6001600160a01b03919091165f90815260066020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b600b546001600160a01b031633146108d3575f80fd5b6040516001600160a01b038381166024830152604482018390525f9190851690606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052516109779190611da7565b5f604051808303815f865af19150503d805f81146109b0576040519150601f19603f3d011682016040523d82523d5f602084013e6109b5565b606091505b5050905080610a20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f546f6b656e207061796d656e74206661696c65640000000000000000000000006044820152606401610792565b50505050565b5f61067b33846106de85604051806060016040528060258152602001611f7260259139335f9081526005602090815260408083206001600160a01b038d168452909152902054919061139f565b600b546001600160a01b03163314610a89575f80fd5b600c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b5f6106e3338484610fb8565b600b546001600160a01b03163314610ae5575f80fd5b6040515f90339047908381818185875af1925050503d805f8114610b24576040519150601f19603f3d011682016040523d82523d5f602084013e610b29565b606091505b5050905080610b94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f546f6b656e207061796d656e74206661696c65640000000000000000000000006044820152606401610792565b50565b5f546001600160a01b03163314610c0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610792565b6001600160a01b038116610ca0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610792565b610b9481611469565b600b546001600160a01b03163314610cbf575f80fd5b8015610d4357600c546040517f14b6ca960000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301525f6024830152909116906314b6ca96906044015f604051808303815f87803b158015610d28575f80fd5b505af1158015610d3a573d5f803e3d5ffd5b50505050610de5565b600c546001600160a01b03166314b6ca9683610d73816001600160a01b03165f9081526004602052604090205490565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b158015610dce575f80fd5b505af1158015610de0573d5f803e3d5ffd5b505050505b6001600160a01b03919091165f90815260086020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6001600160a01b038316610ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610792565b6001600160a01b038216610f58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610792565b6001600160a01b038381165f8181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b03841615801590610fd957506001600160a01b03831615155b8015610fe457505f82115b610fec575f80fd5b600e5474010000000000000000000000000000000000000000900460ff16156110215761101a8484846114d0565b90506106e7565b305f90815260046020526040902054600a548110801590819061105f5750600e5474010000000000000000000000000000000000000000900460ff16155b801561108357506001600160a01b0386165f9081526007602052604090205460ff16155b80156110a95750600b5474010000000000000000000000000000000000000000900460ff165b80156110cd57506001600160a01b0386165f9081526006602052604090205460ff16155b80156110f157506001600160a01b0385165f9081526006602052604090205460ff16155b156110ff576110ff826115bc565b604080518082018252601481527f496e73756666696369656e742042616c616e63650000000000000000000000006020808301919091526001600160a01b0389165f9081526004909152919091205461115991869061139f565b6001600160a01b0387165f9081526004602052604081209190915561117e87876116d6565b6111925761118d878787611770565b611194565b845b6001600160a01b0387165f908152600460205260409020549091506111b990826113f1565b6001600160a01b038088165f90815260046020908152604080832094909455918a1681526008909152205460ff1661128957600c546001600160a01b03166314b6ca968861121b816001600160a01b03165f9081526004602052604090205490565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b158015611276575f80fd5b505af1925050508015611287575060015b505b6001600160a01b0386165f9081526008602052604090205460ff1661134657600c546001600160a01b03166314b6ca96876112d8816001600160a01b03165f9081526004602052604090205490565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b158015611333575f80fd5b505af1925050508015611344575060015b505b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161138b91815260200190565b60405180910390a3600193505050506106e7565b5f81848411156113dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107929190611bb8565b505f6113e88486611def565b95945050505050565b5f806113fd8385611e02565b9050838110156106e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610792565b5f80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080518082018252601481527f496e73756666696369656e742042616c616e63650000000000000000000000006020808301919091526001600160a01b0386165f90815260049091529182205461152991849061139f565b6001600160a01b038086165f90815260046020526040808220939093559085168152205461155790836113f1565b6001600160a01b038085165f8181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115aa9086815260200190565b60405180910390a35060019392505050565b600e80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055600b547501000000000000000000000000000000000000000000900460ff16156116245750600a545b80156116ab574761163482611864565b5f61163f4783611a1f565b905080156116a857600c5f9054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b158015611694575f80fd5b505af1935050505080156116a6575060015b505b50505b50600e80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff169055565b6001600160a01b0382165f9081526006602052604081205460ff168061171357506001600160a01b0382165f9081526006602052604090205460ff165b156117205750600161067f565b6001600160a01b0383165f9081526007602052604090205460ff168061175d57506001600160a01b0382165f9081526007602052604090205460ff165b1561176957505f61067f565b505f61067f565b6001600160a01b0383165f90815260076020526040812054819060ff16156117af576117a860646117a2856003611a60565b90611b14565b90506117e2565b6001600160a01b0384165f9081526007602052604090205460ff16156117e2576117df60646117a2856003611a60565b90505b801561185a57305f9081526004602052604090205461180190826113f1565b305f81815260046020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118519085815260200190565b60405180910390a35b6113e88382611a1f565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061189757611897611e15565b6001600160a01b03928316602091820292909201810191909152600d54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015611907573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061192b9190611e42565b8160018151811061193e5761193e611e15565b6001600160a01b039283166020918202929092010152600d546119649130911684610e2d565b600d546040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063791ac947906119b59085905f90869030904290600401611e9f565b5f604051808303815f87803b1580156119cc575f80fd5b505af11580156119de573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611a13929190611eda565b60405180910390a15050565b5f6106e783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061139f565b5f825f03611a6f57505f61067f565b5f611a7a8385611efa565b905082611a878583611f11565b146106e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f77000000000000000000000000000000000000000000000000000000000000006064820152608401610792565b5f6106e783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f8183611b8a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107929190611bb8565b505f6113e88486611f11565b5f5b83811015611bb0578181015183820152602001611b98565b50505f910152565b602081525f8251806020840152611bd6816040850160208701611b96565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6001600160a01b0381168114610b94575f80fd5b5f8060408385031215611c2d575f80fd5b8235611c3881611c08565b946020939093013593505050565b5f60208284031215611c56575f80fd5b81356106e781611c08565b5f805f60608486031215611c73575f80fd5b8335611c7e81611c08565b92506020840135611c8e81611c08565b929592945050506040919091013590565b80358015158114611cae575f80fd5b919050565b5f805f60608486031215611cc5575f80fd5b611cce84611c9f565b925060208401359150611ce360408501611c9f565b90509250925092565b5f8060408385031215611cfd575f80fd5b8235611d0881611c08565b9150611d1660208401611c9f565b90509250929050565b5f8060408385031215611d30575f80fd5b8235611d3b81611c08565b91506020830135611d4b81611c08565b809150509250929050565b600181811c90821680611d6a57607f821691505b602082108103611da1577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f8251611db8818460208701611b96565b9190910192915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561067f5761067f611dc2565b8082018082111561067f5761067f611dc2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611e52575f80fd5b81516106e781611c08565b5f8151808452602080850194508084015f5b83811015611e945781516001600160a01b031687529582019590820190600101611e6f565b509495945050505050565b85815284602082015260a060408201525f611ebd60a0830186611e5d565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201525f611ef26040830184611e5d565b949350505050565b808202811582820484141761067f5761067f611dc2565b5f82611f44577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122012c0cccf1f7213e6d3158e22b6d753503c4c4c97d0d1e1db7403c19883fad45464736f6c63430008150033