0x6080604052600436106101235760003560e01c80635fcbaa81116100a0578063c311d04911610064578063c311d049146103b1578063cbba3b1b146103d1578063d1c015431461043b578063dfeaa6531461045b578063f2fde38b1461047b57600080fd5b80635fcbaa81146103095780636b2391ca146103295780638da5cb5b146103495780639e281a9814610371578063c2f5bde81461039157600080fd5b80633f5eb4ad116100e75780633f5eb4ad1461026e578063468b2f161461028e578063494eb9b4146102ae578063525ebc97146102c157806353367cc9146102f657600080fd5b8063071325051461012f57806311d5aaa71461015157806315e812ad1461021857806329334a541461023b578063367cf90b1461025b57600080fd5b3661012a57005b600080fd5b34801561013b57600080fd5b5061014f61014a366004611aa1565b61049b565b005b34801561015d57600080fd5b506101c661016c366004611afb565b6003602081905260009182526040909120805460018201546002830154938301546006840154600790940154929491936001600160a01b0392831693929091169160ff808216916101008104821691620100009091041688565b6040805198895260208901979097526001600160a01b03958616968801969096529390921660608601526080850152151560a0840152151560c0830152151560e0820152610100015b60405180910390f35b34801561022457600080fd5b5061022d6104f3565b60405190815260200161020f565b34801561024757600080fd5b5061014f610256366004611b14565b610509565b61014f610269366004611b8c565b61055c565b34801561027a57600080fd5b5061014f610289366004611afb565b61056d565b34801561029a57600080fd5b5061014f6102a9366004611bd8565b61059c565b61022d6102bc366004611c12565b610713565b3480156102cd57600080fd5b506102e16102dc366004611c4d565b6108ec565b6040805192835260208301919091520161020f565b61022d610304366004611c79565b610927565b34801561031557600080fd5b5061014f610324366004611ce1565b610b4e565b34801561033557600080fd5b5061014f610344366004611d16565b610c6a565b34801561035557600080fd5b506000546040516001600160a01b03909116815260200161020f565b34801561037d57600080fd5b5061014f61038c366004611d38565b6110de565b34801561039d57600080fd5b5061014f6103ac366004611d62565b611132565b3480156103bd57600080fd5b5061014f6103cc366004611afb565b611298565b3480156103dd57600080fd5b5061042a6103ec366004611afb565b60026020819052600091825260409091208054600182015492820154600383015460049093015491936001600160a01b039081169391169160ff1685565b60405161020f959493929190611dbc565b34801561044757600080fd5b5061022d610456366004611afb565b611365565b34801561046757600080fd5b5061014f610476366004611c79565b61138f565b34801561048757600080fd5b5061014f610496366004611e0f565b61139d565b6000848152600360208190526040909120015484906001600160a01b031633146104e05760405162461bcd60e51b81526004016104d790611e31565b60405180910390fd5b6104ec858585856113d3565b5050505050565b600048600003610504575060015490565b504890565b6000868152600360208190526040909120015486906001600160a01b031633146105455760405162461bcd60e51b81526004016104d790611e31565b6105538787878787876114d6565b50505050505050565b610568833384846113d3565b505050565b6000546001600160a01b031633146105975760405162461bcd60e51b81526004016104d790611e7d565b600155565b6000546001600160a01b031633146105c65760405162461bcd60e51b81526004016104d790611e7d565b60008281526003602090815260409182902083358155908301356001909101556105f69060608301908301611e0f565b600083815260036020526040902060020180546001600160a01b0319166001600160a01b03929092169190911790556106356080820160608301611e0f565b600083815260036020819052604090912090810180546001600160a01b0319166001600160a01b039390931692909217909155608082013560069091015561068360c0820160a08301611ec0565b6000838152600360205260409020600701805460ff19169115159190911790556106b360e0820160c08301611ec0565b6000838152600360205260409020600701805461ff00191661010092151583021790556106e590820160e08301611ec0565b6000928352600360205260409092206007018054921515620100000262ff0000199093169290921790915550565b60008481526003602052604081206007015462010000900460ff166107735760405162461bcd60e51b81526020600482015260166024820152754469737065727365206973206e6f7420656e61626c6560501b60448201526064016104d7565b600061077e86611365565b9050803410156107a05760405162461bcd60e51b81526004016104d790611edd565b6000868152600360205260409020600201546107c5906001600160a01b031682611660565b6040805160a0810182528781523360208083019182526000838501818152606085018b81526080860183815260048054855260029586905297909320865181559451600180870180546001600160a01b03199081166001600160a01b0394851617909155935187870180549095169216919091179092555160038501559051948301805494959394909260ff199091169190849081111561086857610868611da6565b0217905550905050336001600160a01b0316867f181228cf2409fe525837dc0674f13f8a7fe0fb1ff69d52323196732ffaa4e199600454888589896040516108b4959493929190611f4a565b60405180910390a3600480549060006108cc83611f86565b919050555060016004546108e09190611f9f565b9150505b949350505050565b60008281526003602090815260408083206001600160a01b0385168452600481018352818420546005909101909252909120545b9250929050565b60006001600160a01b0385166109745760405162461bcd60e51b8152602060048201526012602482015271546f6b656e2063616e206e6f74207a65726f60701b60448201526064016104d7565b60008681526003602052604090206007015462010000900460ff166109d45760405162461bcd60e51b81526020600482015260166024820152754469737065727365206973206e6f7420656e61626c6560501b60448201526064016104d7565b60006109df87611365565b905080341015610a015760405162461bcd60e51b81526004016104d790611edd565b600087815260036020526040902060020154610a26906001600160a01b031682611660565b6040805160a0810182528881523360208083019182526001600160a01b038a8116848601908152606085018b815260006080870181815260048054835260029687905298909120875181559551600180880180549287166001600160a01b031993841617905593518787018054919096169116179093555160038501559051948301805494959394909260ff1990911691908490811115610ac957610ac9611da6565b0217905550905050336001600160a01b0316877f3b2d4bcbda53a04dbc3fb2e642dd3bfdfb5909131a845153ee4616926e4921716004548989868a8a604051610b1796959493929190611fb2565b60405180910390a360048054906000610b2f83611f86565b91905055506001600454610b439190611f9f565b979650505050505050565b6000838152600360208190526040909120015483906001600160a01b03163314610b8a5760405162461bcd60e51b81526004016104d790611e31565b60008481526003602052604090206007015460ff161515600114610be95760405162461bcd60e51b815260206004820152601660248201527521b0b7103737ba1030baba3437b934bd329032ba341760511b60448201526064016104d7565b600084815260036020526040902060010154610c06908390611ff2565b6000858152600360205260409020541015610c335760405162461bcd60e51b81526004016104d790612005565b60008481526003602052604081206001018054849290610c54908490611ff2565b90915550610c6490508383611660565b50505050565b60008281526003602052604090206002015482906001600160a01b03163314610cd55760405162461bcd60e51b815260206004820152601b60248201527f43616c6c6572206973206e6f742074686520617574686f72697479000000000060448201526064016104d7565b6000828152600260205260409020548314610d325760405162461bcd60e51b815260206004820152601a60248201527f50726f6a65637420616e64206e6f6e6365206d69736d6174636800000000000060448201526064016104d7565b6000828152600260205260409020600101546001600160a01b0316610d995760405162461bcd60e51b815260206004820152601d60248201527f44697370657273652072657175657374206973206e6f7420657869737400000060448201526064016104d7565b600082815260026020819052604082206004015460ff1690811115610dc057610dc0611da6565b14610e1e5760405162461bcd60e51b815260206004820152602860248201527f5468652064697370657273652068617320616c7265616479206265656e20707260448201526737b1b2b9b9b2b21760c11b60648201526084016104d7565b600082815260026020819052604090912060038101549101546001600160a01b0316610f5b57600084815260036020526040902060010154610e61908290611ff2565b6000858152600360205260409020541015610e8e5760405162461bcd60e51b81526004016104d790612005565b6000838152600260209081526040808320600401805460ff1916600190811790915587845260039092528220018054839290610ecb908490611ff2565b9091555050600083815260026020526040902060010154610ef5906001600160a01b031682611660565b60008381526002602090815260408083206001015481518781529283019390935281018390526001600160a01b039091169085907f3ef2be5d39cd8722638ce6f9692aaa79bfba1881076fe04cd9ba622c3f27ab0c9060600160405180910390a3610c64565b6000848152600360209081526040808320868452600280845282852001546001600160a01b03168452600501909152902054610f98908290611ff2565b6000858152600360209081526040808320878452600280845282852001546001600160a01b031684526004019091529020541015610fe85760405162461bcd60e51b81526004016104d790612005565b6000848152600360209081526040808320868452600280845282852001546001600160a01b0316845260050190915281208054839290611029908490611ff2565b9091555050600083815260026020819052604090912060048101805460ff1916600190811790915581015491015461106e916001600160a01b03918216911683611703565b600083815260026020818152604092839020600181015492015483518781526001600160a01b039182169281019290925292810184905291169085907f3ef2be5d39cd8722638ce6f9692aaa79bfba1881076fe04cd9ba622c3f27ab0c906060015b60405180910390a350505050565b6000546001600160a01b031633146111085760405162461bcd60e51b81526004016104d790611e7d565b61112e61111d6000546001600160a01b031690565b6001600160a01b0384169083611703565b5050565b6000848152600360208190526040909120015484906001600160a01b0316331461116e5760405162461bcd60e51b81526004016104d790611e31565b60008581526003602052604090206007015460ff1615156001146111d45760405162461bcd60e51b815260206004820152601860248201527f43616e206e6f7420617574686f72697a6520746f6b656e2e000000000000000060448201526064016104d7565b60008581526003602090815260408083206001600160a01b0388168452600501909152902054611205908390611ff2565b60008681526003602090815260408083206001600160a01b038916845260040190915290205410156112495760405162461bcd60e51b81526004016104d790612005565b60008581526003602090815260408083206001600160a01b03881684526005019091528120805484929061127e908490611ff2565b909155506104ec90506001600160a01b0385168484611703565b6000546001600160a01b031633146112c25760405162461bcd60e51b81526004016104d790611e7d565b600080546040516001600160a01b039091169083908381818185875af1925050503d806000811461130f576040519150601f19603f3d011682016040523d82523d6000602084013e611314565b606091505b505090508061112e5760405162461bcd60e51b815260206004820152601d60248201527f5769746864726177616c20776173206e6f74207375636365737366756c00000060448201526064016104d7565b60008181526003602052604081206006015461137f6104f3565b611389919061203c565b92915050565b6104ec8533868686866114d6565b6000546001600160a01b031633146113c75760405162461bcd60e51b81526004016104d790611e7d565b6113d081611766565b50565b600034116114165760405162461bcd60e51b815260206004820152601060248201526f09ccacac840e8de40e6cadcc840cae8d60831b60448201526064016104d7565b600084815260036020526040902060070154610100900460ff166114735760405162461bcd60e51b8152602060048201526014602482015273436f6d6d6974206973206e6f7420656e61626c6560601b60448201526064016104d7565b60008481526003602052604081208054349290611491908490611ff2565b92505081905550826001600160a01b0316847f3dfbe3a8c97d843c94618f4caa98974f7d15e6c11feb2dbd84557fddf7f2958b3485856040516110d093929190612053565b600083116115175760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908185b5bdd5b9d60921b60448201526064016104d7565b6001600160a01b0384166115625760405162461bcd60e51b8152602060048201526012602482015271546f6b656e2063616e206e6f74207a65726f60701b60448201526064016104d7565b600086815260036020526040902060070154610100900460ff166115bf5760405162461bcd60e51b8152602060048201526014602482015273436f6d6d6974206973206e6f7420656e61626c6560601b60448201526064016104d7565b6115d46001600160a01b038516863086611826565b60008681526003602090815260408083206001600160a01b038816845260040190915281208054859290611609908490611ff2565b92505081905550846001600160a01b0316867f8621300a35238d2a347cb27fde158aaa7618a4ac4bb2d8c3e9c4471d26ec8ccd868686866040516116509493929190612076565b60405180910390a3505050505050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146116ad576040519150601f19603f3d011682016040523d82523d6000602084013e6116b2565b606091505b50509050806105685760405162461bcd60e51b815260206004820152601b60248201527f5472616e7366657220776173206e6f74207375636365737366756c000000000060448201526064016104d7565b6040516001600160a01b03831660248201526044810182905261056890849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261185e565b6001600160a01b0381166117cb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104d7565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6040516001600160a01b0380851660248301528316604482015260648101829052610c649085906323b872dd60e01b9060840161172f565b60006118b3826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166119309092919063ffffffff16565b80519091501561056857808060200190518101906118d191906120a8565b6105685760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016104d7565b60606108e4848460008585600080866001600160a01b0316858760405161195791906120e9565b60006040518083038185875af1925050503d8060008114611994576040519150601f19603f3d011682016040523d82523d6000602084013e611999565b606091505b5091509150610b438783838760608315611a14578251600003611a0d576001600160a01b0385163b611a0d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104d7565b50816108e4565b6108e48383815115611a295781518083602001fd5b8060405162461bcd60e51b81526004016104d79190612105565b80356001600160a01b0381168114611a5a57600080fd5b919050565b60008083601f840112611a7157600080fd5b50813567ffffffffffffffff811115611a8957600080fd5b60208301915083602082850101111561092057600080fd5b60008060008060608587031215611ab757600080fd5b84359350611ac760208601611a43565b9250604085013567ffffffffffffffff811115611ae357600080fd5b611aef87828801611a5f565b95989497509550505050565b600060208284031215611b0d57600080fd5b5035919050565b60008060008060008060a08789031215611b2d57600080fd5b86359550611b3d60208801611a43565b9450611b4b60408801611a43565b935060608701359250608087013567ffffffffffffffff811115611b6e57600080fd5b611b7a89828a01611a5f565b979a9699509497509295939492505050565b600080600060408486031215611ba157600080fd5b83359250602084013567ffffffffffffffff811115611bbf57600080fd5b611bcb86828701611a5f565b9497909650939450505050565b600080828403610120811215611bed57600080fd5b83359250610100601f1982011215611c0457600080fd5b506020830190509250929050565b60008060008060608587031215611c2857600080fd5b8435935060208501359250604085013567ffffffffffffffff811115611ae357600080fd5b60008060408385031215611c6057600080fd5b82359150611c7060208401611a43565b90509250929050565b600080600080600060808688031215611c9157600080fd5b85359450611ca160208701611a43565b935060408601359250606086013567ffffffffffffffff811115611cc457600080fd5b611cd088828901611a5f565b969995985093965092949392505050565b600080600060608486031215611cf657600080fd5b83359250611d0660208501611a43565b9150604084013590509250925092565b60008060408385031215611d2957600080fd5b50508035926020909101359150565b60008060408385031215611d4b57600080fd5b611d5483611a43565b946020939093013593505050565b60008060008060808587031215611d7857600080fd5b84359350611d8860208601611a43565b9250611d9660408601611a43565b9396929550929360600135925050565b634e487b7160e01b600052602160045260246000fd5b8581526001600160a01b038581166020830152841660408201526060810183905260a0810160038310611dff57634e487b7160e01b600052602160045260246000fd5b8260808301529695505050505050565b600060208284031215611e2157600080fd5b611e2a82611a43565b9392505050565b6020808252602c908201527f43616c6c6572206973206e6f74207468652070726f6a65637420636f6e74726160408201526b637420617574686f7269747960a01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b80151581146113d057600080fd5b600060208284031215611ed257600080fd5b8135611e2a81611eb2565b60208082526024908201527f4e65656420746f2073656e6420657468206d6f7265207468616e2067617320706040820152637269636560e01b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b858152846020820152836040820152608060608201526000610b43608083018486611f21565b634e487b7160e01b600052601160045260246000fd5b600060018201611f9857611f98611f70565b5060010190565b8181038181111561138957611389611f70565b86815260018060a01b038616602082015284604082015283606082015260a060808201526000611fe660a083018486611f21565b98975050505050505050565b8082018082111561138957611389611f70565b6020808252601e908201527f416d6f756e7420657863656564732070726f6a6563742062616c616e63650000604082015260600190565b808202811582820484141761138957611389611f70565b83815260406020820152600061206d604083018486611f21565b95945050505050565b60018060a01b038516815283602082015260606040820152600061209e606083018486611f21565b9695505050505050565b6000602082840312156120ba57600080fd5b8151611e2a81611eb2565b60005b838110156120e05781810151838201526020016120c8565b50506000910152565b600082516120fb8184602087016120c5565b9190910192915050565b60208152600082518060208401526121248160408501602087016120c5565b601f01601f1916919091016040019291505056fea264697066735822122096cbc4975d3a261e14ede6c8a049fe04e9dfd1a6f2e2e481f326fa96aac12e5464736f6c63430008110033
0x60806040526402540be40060015534801561001957600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061216e8061006a6000396000f3fe6080604052600436106101235760003560e01c80635fcbaa81116100a0578063c311d04911610064578063c311d049146103b1578063cbba3b1b146103d1578063d1c015431461043b578063dfeaa6531461045b578063f2fde38b1461047b57600080fd5b80635fcbaa81146103095780636b2391ca146103295780638da5cb5b146103495780639e281a9814610371578063c2f5bde81461039157600080fd5b80633f5eb4ad116100e75780633f5eb4ad1461026e578063468b2f161461028e578063494eb9b4146102ae578063525ebc97146102c157806353367cc9146102f657600080fd5b8063071325051461012f57806311d5aaa71461015157806315e812ad1461021857806329334a541461023b578063367cf90b1461025b57600080fd5b3661012a57005b600080fd5b34801561013b57600080fd5b5061014f61014a366004611aa1565b61049b565b005b34801561015d57600080fd5b506101c661016c366004611afb565b6003602081905260009182526040909120805460018201546002830154938301546006840154600790940154929491936001600160a01b0392831693929091169160ff808216916101008104821691620100009091041688565b6040805198895260208901979097526001600160a01b03958616968801969096529390921660608601526080850152151560a0840152151560c0830152151560e0820152610100015b60405180910390f35b34801561022457600080fd5b5061022d6104f3565b60405190815260200161020f565b34801561024757600080fd5b5061014f610256366004611b14565b610509565b61014f610269366004611b8c565b61055c565b34801561027a57600080fd5b5061014f610289366004611afb565b61056d565b34801561029a57600080fd5b5061014f6102a9366004611bd8565b61059c565b61022d6102bc366004611c12565b610713565b3480156102cd57600080fd5b506102e16102dc366004611c4d565b6108ec565b6040805192835260208301919091520161020f565b61022d610304366004611c79565b610927565b34801561031557600080fd5b5061014f610324366004611ce1565b610b4e565b34801561033557600080fd5b5061014f610344366004611d16565b610c6a565b34801561035557600080fd5b506000546040516001600160a01b03909116815260200161020f565b34801561037d57600080fd5b5061014f61038c366004611d38565b6110de565b34801561039d57600080fd5b5061014f6103ac366004611d62565b611132565b3480156103bd57600080fd5b5061014f6103cc366004611afb565b611298565b3480156103dd57600080fd5b5061042a6103ec366004611afb565b60026020819052600091825260409091208054600182015492820154600383015460049093015491936001600160a01b039081169391169160ff1685565b60405161020f959493929190611dbc565b34801561044757600080fd5b5061022d610456366004611afb565b611365565b34801561046757600080fd5b5061014f610476366004611c79565b61138f565b34801561048757600080fd5b5061014f610496366004611e0f565b61139d565b6000848152600360208190526040909120015484906001600160a01b031633146104e05760405162461bcd60e51b81526004016104d790611e31565b60405180910390fd5b6104ec858585856113d3565b5050505050565b600048600003610504575060015490565b504890565b6000868152600360208190526040909120015486906001600160a01b031633146105455760405162461bcd60e51b81526004016104d790611e31565b6105538787878787876114d6565b50505050505050565b610568833384846113d3565b505050565b6000546001600160a01b031633146105975760405162461bcd60e51b81526004016104d790611e7d565b600155565b6000546001600160a01b031633146105c65760405162461bcd60e51b81526004016104d790611e7d565b60008281526003602090815260409182902083358155908301356001909101556105f69060608301908301611e0f565b600083815260036020526040902060020180546001600160a01b0319166001600160a01b03929092169190911790556106356080820160608301611e0f565b600083815260036020819052604090912090810180546001600160a01b0319166001600160a01b039390931692909217909155608082013560069091015561068360c0820160a08301611ec0565b6000838152600360205260409020600701805460ff19169115159190911790556106b360e0820160c08301611ec0565b6000838152600360205260409020600701805461ff00191661010092151583021790556106e590820160e08301611ec0565b6000928352600360205260409092206007018054921515620100000262ff0000199093169290921790915550565b60008481526003602052604081206007015462010000900460ff166107735760405162461bcd60e51b81526020600482015260166024820152754469737065727365206973206e6f7420656e61626c6560501b60448201526064016104d7565b600061077e86611365565b9050803410156107a05760405162461bcd60e51b81526004016104d790611edd565b6000868152600360205260409020600201546107c5906001600160a01b031682611660565b6040805160a0810182528781523360208083019182526000838501818152606085018b81526080860183815260048054855260029586905297909320865181559451600180870180546001600160a01b03199081166001600160a01b0394851617909155935187870180549095169216919091179092555160038501559051948301805494959394909260ff199091169190849081111561086857610868611da6565b0217905550905050336001600160a01b0316867f181228cf2409fe525837dc0674f13f8a7fe0fb1ff69d52323196732ffaa4e199600454888589896040516108b4959493929190611f4a565b60405180910390a3600480549060006108cc83611f86565b919050555060016004546108e09190611f9f565b9150505b949350505050565b60008281526003602090815260408083206001600160a01b0385168452600481018352818420546005909101909252909120545b9250929050565b60006001600160a01b0385166109745760405162461bcd60e51b8152602060048201526012602482015271546f6b656e2063616e206e6f74207a65726f60701b60448201526064016104d7565b60008681526003602052604090206007015462010000900460ff166109d45760405162461bcd60e51b81526020600482015260166024820152754469737065727365206973206e6f7420656e61626c6560501b60448201526064016104d7565b60006109df87611365565b905080341015610a015760405162461bcd60e51b81526004016104d790611edd565b600087815260036020526040902060020154610a26906001600160a01b031682611660565b6040805160a0810182528881523360208083019182526001600160a01b038a8116848601908152606085018b815260006080870181815260048054835260029687905298909120875181559551600180880180549287166001600160a01b031993841617905593518787018054919096169116179093555160038501559051948301805494959394909260ff1990911691908490811115610ac957610ac9611da6565b0217905550905050336001600160a01b0316877f3b2d4bcbda53a04dbc3fb2e642dd3bfdfb5909131a845153ee4616926e4921716004548989868a8a604051610b1796959493929190611fb2565b60405180910390a360048054906000610b2f83611f86565b91905055506001600454610b439190611f9f565b979650505050505050565b6000838152600360208190526040909120015483906001600160a01b03163314610b8a5760405162461bcd60e51b81526004016104d790611e31565b60008481526003602052604090206007015460ff161515600114610be95760405162461bcd60e51b815260206004820152601660248201527521b0b7103737ba1030baba3437b934bd329032ba341760511b60448201526064016104d7565b600084815260036020526040902060010154610c06908390611ff2565b6000858152600360205260409020541015610c335760405162461bcd60e51b81526004016104d790612005565b60008481526003602052604081206001018054849290610c54908490611ff2565b90915550610c6490508383611660565b50505050565b60008281526003602052604090206002015482906001600160a01b03163314610cd55760405162461bcd60e51b815260206004820152601b60248201527f43616c6c6572206973206e6f742074686520617574686f72697479000000000060448201526064016104d7565b6000828152600260205260409020548314610d325760405162461bcd60e51b815260206004820152601a60248201527f50726f6a65637420616e64206e6f6e6365206d69736d6174636800000000000060448201526064016104d7565b6000828152600260205260409020600101546001600160a01b0316610d995760405162461bcd60e51b815260206004820152601d60248201527f44697370657273652072657175657374206973206e6f7420657869737400000060448201526064016104d7565b600082815260026020819052604082206004015460ff1690811115610dc057610dc0611da6565b14610e1e5760405162461bcd60e51b815260206004820152602860248201527f5468652064697370657273652068617320616c7265616479206265656e20707260448201526737b1b2b9b9b2b21760c11b60648201526084016104d7565b600082815260026020819052604090912060038101549101546001600160a01b0316610f5b57600084815260036020526040902060010154610e61908290611ff2565b6000858152600360205260409020541015610e8e5760405162461bcd60e51b81526004016104d790612005565b6000838152600260209081526040808320600401805460ff1916600190811790915587845260039092528220018054839290610ecb908490611ff2565b9091555050600083815260026020526040902060010154610ef5906001600160a01b031682611660565b60008381526002602090815260408083206001015481518781529283019390935281018390526001600160a01b039091169085907f3ef2be5d39cd8722638ce6f9692aaa79bfba1881076fe04cd9ba622c3f27ab0c9060600160405180910390a3610c64565b6000848152600360209081526040808320868452600280845282852001546001600160a01b03168452600501909152902054610f98908290611ff2565b6000858152600360209081526040808320878452600280845282852001546001600160a01b031684526004019091529020541015610fe85760405162461bcd60e51b81526004016104d790612005565b6000848152600360209081526040808320868452600280845282852001546001600160a01b0316845260050190915281208054839290611029908490611ff2565b9091555050600083815260026020819052604090912060048101805460ff1916600190811790915581015491015461106e916001600160a01b03918216911683611703565b600083815260026020818152604092839020600181015492015483518781526001600160a01b039182169281019290925292810184905291169085907f3ef2be5d39cd8722638ce6f9692aaa79bfba1881076fe04cd9ba622c3f27ab0c906060015b60405180910390a350505050565b6000546001600160a01b031633146111085760405162461bcd60e51b81526004016104d790611e7d565b61112e61111d6000546001600160a01b031690565b6001600160a01b0384169083611703565b5050565b6000848152600360208190526040909120015484906001600160a01b0316331461116e5760405162461bcd60e51b81526004016104d790611e31565b60008581526003602052604090206007015460ff1615156001146111d45760405162461bcd60e51b815260206004820152601860248201527f43616e206e6f7420617574686f72697a6520746f6b656e2e000000000000000060448201526064016104d7565b60008581526003602090815260408083206001600160a01b0388168452600501909152902054611205908390611ff2565b60008681526003602090815260408083206001600160a01b038916845260040190915290205410156112495760405162461bcd60e51b81526004016104d790612005565b60008581526003602090815260408083206001600160a01b03881684526005019091528120805484929061127e908490611ff2565b909155506104ec90506001600160a01b0385168484611703565b6000546001600160a01b031633146112c25760405162461bcd60e51b81526004016104d790611e7d565b600080546040516001600160a01b039091169083908381818185875af1925050503d806000811461130f576040519150601f19603f3d011682016040523d82523d6000602084013e611314565b606091505b505090508061112e5760405162461bcd60e51b815260206004820152601d60248201527f5769746864726177616c20776173206e6f74207375636365737366756c00000060448201526064016104d7565b60008181526003602052604081206006015461137f6104f3565b611389919061203c565b92915050565b6104ec8533868686866114d6565b6000546001600160a01b031633146113c75760405162461bcd60e51b81526004016104d790611e7d565b6113d081611766565b50565b600034116114165760405162461bcd60e51b815260206004820152601060248201526f09ccacac840e8de40e6cadcc840cae8d60831b60448201526064016104d7565b600084815260036020526040902060070154610100900460ff166114735760405162461bcd60e51b8152602060048201526014602482015273436f6d6d6974206973206e6f7420656e61626c6560601b60448201526064016104d7565b60008481526003602052604081208054349290611491908490611ff2565b92505081905550826001600160a01b0316847f3dfbe3a8c97d843c94618f4caa98974f7d15e6c11feb2dbd84557fddf7f2958b3485856040516110d093929190612053565b600083116115175760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908185b5bdd5b9d60921b60448201526064016104d7565b6001600160a01b0384166115625760405162461bcd60e51b8152602060048201526012602482015271546f6b656e2063616e206e6f74207a65726f60701b60448201526064016104d7565b600086815260036020526040902060070154610100900460ff166115bf5760405162461bcd60e51b8152602060048201526014602482015273436f6d6d6974206973206e6f7420656e61626c6560601b60448201526064016104d7565b6115d46001600160a01b038516863086611826565b60008681526003602090815260408083206001600160a01b038816845260040190915281208054859290611609908490611ff2565b92505081905550846001600160a01b0316867f8621300a35238d2a347cb27fde158aaa7618a4ac4bb2d8c3e9c4471d26ec8ccd868686866040516116509493929190612076565b60405180910390a3505050505050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146116ad576040519150601f19603f3d011682016040523d82523d6000602084013e6116b2565b606091505b50509050806105685760405162461bcd60e51b815260206004820152601b60248201527f5472616e7366657220776173206e6f74207375636365737366756c000000000060448201526064016104d7565b6040516001600160a01b03831660248201526044810182905261056890849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261185e565b6001600160a01b0381166117cb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104d7565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6040516001600160a01b0380851660248301528316604482015260648101829052610c649085906323b872dd60e01b9060840161172f565b60006118b3826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166119309092919063ffffffff16565b80519091501561056857808060200190518101906118d191906120a8565b6105685760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016104d7565b60606108e4848460008585600080866001600160a01b0316858760405161195791906120e9565b60006040518083038185875af1925050503d8060008114611994576040519150601f19603f3d011682016040523d82523d6000602084013e611999565b606091505b5091509150610b438783838760608315611a14578251600003611a0d576001600160a01b0385163b611a0d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104d7565b50816108e4565b6108e48383815115611a295781518083602001fd5b8060405162461bcd60e51b81526004016104d79190612105565b80356001600160a01b0381168114611a5a57600080fd5b919050565b60008083601f840112611a7157600080fd5b50813567ffffffffffffffff811115611a8957600080fd5b60208301915083602082850101111561092057600080fd5b60008060008060608587031215611ab757600080fd5b84359350611ac760208601611a43565b9250604085013567ffffffffffffffff811115611ae357600080fd5b611aef87828801611a5f565b95989497509550505050565b600060208284031215611b0d57600080fd5b5035919050565b60008060008060008060a08789031215611b2d57600080fd5b86359550611b3d60208801611a43565b9450611b4b60408801611a43565b935060608701359250608087013567ffffffffffffffff811115611b6e57600080fd5b611b7a89828a01611a5f565b979a9699509497509295939492505050565b600080600060408486031215611ba157600080fd5b83359250602084013567ffffffffffffffff811115611bbf57600080fd5b611bcb86828701611a5f565b9497909650939450505050565b600080828403610120811215611bed57600080fd5b83359250610100601f1982011215611c0457600080fd5b506020830190509250929050565b60008060008060608587031215611c2857600080fd5b8435935060208501359250604085013567ffffffffffffffff811115611ae357600080fd5b60008060408385031215611c6057600080fd5b82359150611c7060208401611a43565b90509250929050565b600080600080600060808688031215611c9157600080fd5b85359450611ca160208701611a43565b935060408601359250606086013567ffffffffffffffff811115611cc457600080fd5b611cd088828901611a5f565b969995985093965092949392505050565b600080600060608486031215611cf657600080fd5b83359250611d0660208501611a43565b9150604084013590509250925092565b60008060408385031215611d2957600080fd5b50508035926020909101359150565b60008060408385031215611d4b57600080fd5b611d5483611a43565b946020939093013593505050565b60008060008060808587031215611d7857600080fd5b84359350611d8860208601611a43565b9250611d9660408601611a43565b9396929550929360600135925050565b634e487b7160e01b600052602160045260246000fd5b8581526001600160a01b038581166020830152841660408201526060810183905260a0810160038310611dff57634e487b7160e01b600052602160045260246000fd5b8260808301529695505050505050565b600060208284031215611e2157600080fd5b611e2a82611a43565b9392505050565b6020808252602c908201527f43616c6c6572206973206e6f74207468652070726f6a65637420636f6e74726160408201526b637420617574686f7269747960a01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b80151581146113d057600080fd5b600060208284031215611ed257600080fd5b8135611e2a81611eb2565b60208082526024908201527f4e65656420746f2073656e6420657468206d6f7265207468616e2067617320706040820152637269636560e01b606082015260800190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b858152846020820152836040820152608060608201526000610b43608083018486611f21565b634e487b7160e01b600052601160045260246000fd5b600060018201611f9857611f98611f70565b5060010190565b8181038181111561138957611389611f70565b86815260018060a01b038616602082015284604082015283606082015260a060808201526000611fe660a083018486611f21565b98975050505050505050565b8082018082111561138957611389611f70565b6020808252601e908201527f416d6f756e7420657863656564732070726f6a6563742062616c616e63650000604082015260600190565b808202811582820484141761138957611389611f70565b83815260406020820152600061206d604083018486611f21565b95945050505050565b60018060a01b038516815283602082015260606040820152600061209e606083018486611f21565b9695505050505050565b6000602082840312156120ba57600080fd5b8151611e2a81611eb2565b60005b838110156120e05781810151838201526020016120c8565b50506000910152565b600082516120fb8184602087016120c5565b9190910192915050565b60208152600082518060208401526121248160408501602087016120c5565b601f01601f1916919091016040019291505056fea264697066735822122096cbc4975d3a261e14ede6c8a049fe04e9dfd1a6f2e2e481f326fa96aac12e5464736f6c63430008110033