60c06040526005608081905264173539b7b760d91b60a09081526200002891600b9190620001bb565b506096600c55600d805460ff191690553480156200004557600080fd5b506040518060600160405280602681526020016200222d602691396040518060400160405280600581526020016455444c434d60d81b815250816002908051906020019062000096929190620001bb565b508051620000ac906003906020840190620001bb565b5050600160005550620000bf33620000f1565b6001600981905550620000eb604051806060016040528060368152602001620022536036913962000143565b6200029e565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6008546001600160a01b03163314620001a25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b8051620001b790600a906020840190620001bb565b5050565b828054620001c99062000261565b90600052602060002090601f016020900481019282620001ed576000855562000238565b82601f106200020857805160ff191683800117855562000238565b8280016001018555821562000238579182015b82811115620002385782518255916020019190600101906200021b565b50620002469291506200024a565b5090565b5b808211156200024657600081556001016200024b565b600181811c908216806200027657607f821691505b602082108114156200029857634e487b7160e01b600052602260045260246000fd5b50919050565b611f7f80620002ae6000396000f3fe6080604052600436106101c25760003560e01c806370a08231116100f7578063b88d4fde11610095578063d5abeb0111610064578063d5abeb01146104c9578063da3ef23f146104df578063e985e9c5146104ff578063f2fde38b1461054857600080fd5b8063b88d4fde14610454578063ba41b0c614610474578063c668286214610494578063c87b56dd146104a957600080fd5b806383a076be116100d157806383a076be146103e15780638da5cb5b1461040157806395d89b411461041f578063a22cb4651461043457600080fd5b806370a082311461038c578063715018a6146103ac5780637cb64759146103c157600080fd5b80632eb4a7ab1161016457806355f804b31161013e57806355f804b31461031d5780635c975abb1461033d5780636352211e146103575780636c0360eb1461037757600080fd5b80632eb4a7ab146102df5780633ccfd60b146102f557806342842e0e146102fd57600080fd5b8063081812fc116101a0578063081812fc14610240578063095ea7b31461027857806318160ddd1461029857806323b872dd146102bf57600080fd5b806301ffc9a7146101c757806302329a29146101fc57806306fdde031461021e575b600080fd5b3480156101d357600080fd5b506101e76101e2366004611b31565b610568565b60405190151581526020015b60405180910390f35b34801561020857600080fd5b5061021c610217366004611afd565b6105ba565b005b34801561022a57600080fd5b50610233610600565b6040516101f39190611d83565b34801561024c57600080fd5b5061026061025b366004611b18565b610692565b6040516001600160a01b0390911681526020016101f3565b34801561028457600080fd5b5061021c610293366004611ad3565b6106d6565b3480156102a457600080fd5b5060015460005403600019015b6040519081526020016101f3565b3480156102cb57600080fd5b5061021c6102da3660046119f1565b610764565b3480156102eb57600080fd5b506102b1600e5481565b61021c61076f565b34801561030957600080fd5b5061021c6103183660046119f1565b61081e565b34801561032957600080fd5b5061021c610338366004611b6b565b610839565b34801561034957600080fd5b50600d546101e79060ff1681565b34801561036357600080fd5b50610260610372366004611b18565b61087a565b34801561038357600080fd5b5061023361088c565b34801561039857600080fd5b506102b16103a73660046119a3565b61091a565b3480156103b857600080fd5b5061021c610969565b3480156103cd57600080fd5b5061021c6103dc366004611b18565b61099f565b3480156103ed57600080fd5b5061021c6103fc366004611bb4565b6109ce565b34801561040d57600080fd5b506008546001600160a01b0316610260565b34801561042b57600080fd5b50610233610aed565b34801561044057600080fd5b5061021c61044f366004611aa9565b610afc565b34801561046057600080fd5b5061021c61046f366004611a2d565b610b92565b34801561048057600080fd5b5061021c61048f366004611bd7565b610be3565b3480156104a057600080fd5b50610233610e32565b3480156104b557600080fd5b506102336104c4366004611b18565b610e3f565b3480156104d557600080fd5b506102b1600c5481565b3480156104eb57600080fd5b5061021c6104fa366004611b6b565b610f0e565b34801561050b57600080fd5b506101e761051a3660046119be565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b34801561055457600080fd5b5061021c6105633660046119a3565b610f4b565b60006001600160e01b031982166380ac58cd60e01b148061059957506001600160e01b03198216635b5e139f60e01b145b806105b457506301ffc9a760e01b6001600160e01b03198316145b92915050565b6008546001600160a01b031633146105ed5760405162461bcd60e51b81526004016105e490611d96565b60405180910390fd5b600d805460ff1916911515919091179055565b60606002805461060f90611e71565b80601f016020809104026020016040519081016040528092919081815260200182805461063b90611e71565b80156106885780601f1061065d57610100808354040283529160200191610688565b820191906000526020600020905b81548152906001019060200180831161066b57829003601f168201915b5050505050905090565b600061069d82610fe6565b6106ba576040516333d1c03960e21b815260040160405180910390fd5b506000908152600660205260409020546001600160a01b031690565b60006106e18261087a565b9050806001600160a01b0316836001600160a01b031614156107165760405163250fdee360e21b815260040160405180910390fd5b336001600160a01b038216148015906107365750610734813361051a565b155b15610754576040516367d9dca160e11b815260040160405180910390fd5b61075f83838361101f565b505050565b61075f83838361107b565b6008546001600160a01b031633146107995760405162461bcd60e51b81526004016105e490611d96565b600260095414156107bc5760405162461bcd60e51b81526004016105e490611dcb565b6002600955604051600090339047908381818185875af1925050503d8060008114610803576040519150601f19603f3d011682016040523d82523d6000602084013e610808565b606091505b505090508061081657600080fd5b506001600955565b61075f83838360405180602001604052806000815250610b92565b6008546001600160a01b031633146108635760405162461bcd60e51b81526004016105e490611d96565b805161087690600a906020840190611868565b5050565b60006108858261126b565b5192915050565b600a805461089990611e71565b80601f01602080910402602001604051908101604052809291908181526020018280546108c590611e71565b80156109125780601f106108e757610100808354040283529160200191610912565b820191906000526020600020905b8154815290600101906020018083116108f557829003601f168201915b505050505081565b60006001600160a01b038216610943576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b031660009081526005602052604090205467ffffffffffffffff1690565b6008546001600160a01b031633146109935760405162461bcd60e51b81526004016105e490611d96565b61099d6000611394565b565b6008546001600160a01b031633146109c95760405162461bcd60e51b81526004016105e490611d96565b600e55565b6008546001600160a01b031633146109f85760405162461bcd60e51b81526004016105e490611d96565b60026009541415610a1b5760405162461bcd60e51b81526004016105e490611dcb565b600260095581610a6d5760405162461bcd60e51b815260206004820152601b60248201527f6e65656420746f206d696e74206174206c656173742031204e4654000000000060448201526064016105e4565b6000610a826001546000546000199190030190565b600c54909150610a928483611e02565b1115610ad95760405162461bcd60e51b81526020600482015260166024820152751b585e08139195081b1a5b5a5d08195e18d95959195960521b60448201526064016105e4565b610ae382846113e6565b5050600160095550565b60606003805461060f90611e71565b6001600160a01b038216331415610b265760405163b06307db60e01b815260040160405180910390fd5b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610b9d84848461107b565b6001600160a01b0383163b15158015610bbf5750610bbd84848484611400565b155b15610bdd576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b60026009541415610c065760405162461bcd60e51b81526004016105e490611dcb565b6002600955600d5460ff1615610c5e5760405162461bcd60e51b815260206004820152601e60248201527f55444c434d3a206f6f707320636f6e747261637420697320706175736564000060448201526064016105e4565b610cd382828080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050600e546040516bffffffffffffffffffffffff193360601b1660208201529092506034019050604051602081830303815290604052805190602001206114f8565b610d1f5760405162461bcd60e51b815260206004820152601e60248201527f55444c434d3a20596f7520617265206e6f742057686974656c6973746564000060448201526064016105e4565b6000610d346001546000546000199190030190565b9050600184610d69336001600160a01b0316600090815260056020526040902054600160401b900467ffffffffffffffff1690565b610d739190611e02565b1115610dc15760405162461bcd60e51b815260206004820152601960248201527f55444c434d3a20596f752063616e204d696e742031204e46540000000000000060448201526064016105e4565b600c54610dce8583611e02565b1115610e1c5760405162461bcd60e51b815260206004820152601960248201527f55444c434d3a204d6178537570706c792065786365656465640000000000000060448201526064016105e4565b610e273360016113e6565b505060016009555050565b600b805461089990611e71565b6060610e4a82610fe6565b610eaf5760405162461bcd60e51b815260206004820152603060248201527f455243373231414d657461646174613a2055524920717565727920666f72206e60448201526f37b732bc34b9ba32b73a103a37b5b2b760811b60648201526084016105e4565b6000610eb961150e565b90506000815111610ed95760405180602001604052806000815250610f07565b80610ee38461151d565b600b604051602001610ef793929190611c82565b6040516020818303038152906040525b9392505050565b6008546001600160a01b03163314610f385760405162461bcd60e51b81526004016105e490611d96565b805161087690600b906020840190611868565b6008546001600160a01b03163314610f755760405162461bcd60e51b81526004016105e490611d96565b6001600160a01b038116610fda5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105e4565b610fe381611394565b50565b600081600111158015610ffa575060005482105b80156105b4575050600090815260046020526040902054600160e01b900460ff161590565b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60006110868261126b565b9050836001600160a01b031681600001516001600160a01b0316146110bd5760405162a1148160e81b815260040160405180910390fd5b6000336001600160a01b03861614806110db57506110db853361051a565b806110f65750336110eb84610692565b6001600160a01b0316145b90508061111657604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03841661113d57604051633a954ecd60e21b815260040160405180910390fd5b6111496000848761101f565b6001600160a01b038581166000908152600560209081526040808320805467ffffffffffffffff1980821667ffffffffffffffff92831660001901831617909255898616808652838620805493841693831660019081018416949094179055898652600490945282852080546001600160e01b031916909417600160a01b4290921691909102178355870180845292208054919390911661121f57600054821461121f578054602086015167ffffffffffffffff16600160a01b026001600160e01b03199091166001600160a01b038a16171781555b50505082846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b5050505050565b6040805160608101825260008082526020820181905291810191909152818060011115801561129b575060005481105b1561137b57600081815260046020908152604091829020825160608101845290546001600160a01b0381168252600160a01b810467ffffffffffffffff1692820192909252600160e01b90910460ff161515918101829052906113795780516001600160a01b03161561130f579392505050565b5060001901600081815260046020908152604091829020825160608101845290546001600160a01b038116808352600160a01b820467ffffffffffffffff1693830193909352600160e01b900460ff1615159281019290925215611374579392505050565b61130f565b505b604051636f96cda160e11b815260040160405180910390fd5b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61087682826040518060200160405280600081525061161b565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290611435903390899088908890600401611d46565b602060405180830381600087803b15801561144f57600080fd5b505af192505050801561147f575060408051601f3d908101601f1916820190925261147c91810190611b4e565b60015b6114da573d8080156114ad576040519150601f19603f3d011682016040523d82523d6000602084013e6114b2565b606091505b5080516114d2576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b6000826115058584611628565b14949350505050565b6060600a805461060f90611e71565b6060816115415750506040805180820190915260018152600360fc1b602082015290565b8160005b811561156b578061155581611eac565b91506115649050600a83611e1a565b9150611545565b60008167ffffffffffffffff81111561158657611586611f1d565b6040519080825280601f01601f1916602001820160405280156115b0576020820181803683370190505b5090505b84156114f0576115c5600183611e2e565b91506115d2600a86611ec7565b6115dd906030611e02565b60f81b8183815181106115f2576115f2611f07565b60200101906001600160f81b031916908160001a905350611614600a86611e1a565b94506115b4565b61075f838383600161169c565b600081815b845181101561169457600085828151811061164a5761164a611f07565b602002602001015190508083116116705760008381526020829052604090209250611681565b600081815260208490526040902092505b508061168c81611eac565b91505061162d565b509392505050565b6000546001600160a01b0385166116c557604051622e076360e81b815260040160405180910390fd5b836116e35760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b038516600081815260056020908152604080832080546fffffffffffffffffffffffffffffffff19811667ffffffffffffffff8083168c018116918217600160401b67ffffffffffffffff1990941690921783900481168c01811690920217909155858452600490925290912080546001600160e01b031916909217600160a01b42909216919091021790558080850183801561179057506001600160a01b0387163b15155b15611819575b60405182906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a46117e16000888480600101955088611400565b6117fe576040516368d2bf6b60e11b815260040160405180910390fd5b8082141561179657826000541461181457600080fd5b61185f565b5b6040516001830192906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a48082141561181a575b50600055611264565b82805461187490611e71565b90600052602060002090601f01602090048101928261189657600085556118dc565b82601f106118af57805160ff19168380011785556118dc565b828001600101855582156118dc579182015b828111156118dc5782518255916020019190600101906118c1565b506118e89291506118ec565b5090565b5b808211156118e857600081556001016118ed565b600067ffffffffffffffff8084111561191c5761191c611f1d565b604051601f8501601f19908116603f0116810190828211818310171561194457611944611f1d565b8160405280935085815286868601111561195d57600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b038116811461198e57600080fd5b919050565b8035801515811461198e57600080fd5b6000602082840312156119b557600080fd5b610f0782611977565b600080604083850312156119d157600080fd5b6119da83611977565b91506119e860208401611977565b90509250929050565b600080600060608486031215611a0657600080fd5b611a0f84611977565b9250611a1d60208501611977565b9150604084013590509250925092565b60008060008060808587031215611a4357600080fd5b611a4c85611977565b9350611a5a60208601611977565b925060408501359150606085013567ffffffffffffffff811115611a7d57600080fd5b8501601f81018713611a8e57600080fd5b611a9d87823560208401611901565b91505092959194509250565b60008060408385031215611abc57600080fd5b611ac583611977565b91506119e860208401611993565b60008060408385031215611ae657600080fd5b611aef83611977565b946020939093013593505050565b600060208284031215611b0f57600080fd5b610f0782611993565b600060208284031215611b2a57600080fd5b5035919050565b600060208284031215611b4357600080fd5b8135610f0781611f33565b600060208284031215611b6057600080fd5b8151610f0781611f33565b600060208284031215611b7d57600080fd5b813567ffffffffffffffff811115611b9457600080fd5b8201601f81018413611ba557600080fd5b6114f084823560208401611901565b60008060408385031215611bc757600080fd5b823591506119e860208401611977565b600080600060408486031215611bec57600080fd5b83359250602084013567ffffffffffffffff80821115611c0b57600080fd5b818601915086601f830112611c1f57600080fd5b813581811115611c2e57600080fd5b8760208260051b8501011115611c4357600080fd5b6020830194508093505050509250925092565b60008151808452611c6e816020860160208601611e45565b601f01601f19169290920160200192915050565b600084516020611c958285838a01611e45565b855191840191611ca88184848a01611e45565b8554920191600090600181811c9080831680611cc557607f831692505b858310811415611ce357634e487b7160e01b85526022600452602485fd5b808015611cf75760018114611d0857611d35565b60ff19851688528388019550611d35565b60008b81526020902060005b85811015611d2d5781548a820152908401908801611d14565b505083880195505b50939b9a5050505050505050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611d7990830184611c56565b9695505050505050565b602081526000610f076020830184611c56565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60008219821115611e1557611e15611edb565b500190565b600082611e2957611e29611ef1565b500490565b600082821015611e4057611e40611edb565b500390565b60005b83811015611e60578181015183820152602001611e48565b83811115610bdd5750506000910152565b600181811c90821680611e8557607f821691505b60208210811415611ea657634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611ec057611ec0611edb565b5060010190565b600082611ed657611ed6611ef1565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114610fe357600080fdfea264697066735822122035ba2919556df299a9572b024bb6ecfa07da8ff7610ebd9b0fa4c68eb88c891864736f6c6343000807003355676c7920447261676f6e73204c6567656e6461727920436c7562204d656d62657273686970697066733a2f2f516d5646416833436a41744c6b31437235634863416e4c78424256516d667772584b7536365971456a504d47754e2f