0x608060405234801561001057600080fd5b506004361061021c5760003560e01c80637ecebe0011610125578063cae9ca51116100ad578063dd62ed3e1161007c578063dd62ed3e1461050a578063e7a324dc14610543578063f1127ed81461056a578063f2fde38b146105c1578063fca3b5aa146105d457600080fd5b8063cae9ca51146104be578063d4ee1d90146104d1578063d505accf146104e4578063dc39d06d146104f757600080fd5b8063a05fccef116100f4578063a05fccef1461045f578063a457c2d714610472578063a9059cbb14610485578063b4b5ea5714610498578063c3cda520146104ab57600080fd5b80637ecebe00146104115780638da5cb5b1461043157806395d89b41146104445780639dc29fac1461044c57600080fd5b806340c10f19116101a85780636fcfff45116101775780636fcfff451461039f57806370a08231146103c557806376c71ca1146103ee578063782d6fe1146103f657806379ba50971461040957600080fd5b806340c10f1914610314578063587cde1e146103295780635c11d62f1461036d5780635c19a95c1461038c57600080fd5b806323b872dd116101ef57806323b872dd1461029f57806330adf81f146102b257806330b36cef146102d9578063313ce567146102e2578063395093511461030157600080fd5b806306fdde0314610221578063095ea7b31461023f57806318160ddd1461026257806320606b7014610278575b600080fd5b6102296105e7565b6040516102369190612064565b60405180910390f35b61025261024d366004612093565b610675565b6040519015158152602001610236565b61026a6106fa565b604051908152602001610236565b61026a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6102526102ad3660046120bd565b610739565b61026a7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b61026a60095481565b6004546102ef9060ff1681565b60405160ff9091168152602001610236565b61025261030f366004612093565b610888565b610327610322366004612093565b6108bc565b005b6103556103373660046120f9565b6001600160a01b039081166000908152600a60205260409020541690565b6040516001600160a01b039091168152602001610236565b61037762093a8081565b60405163ffffffff9091168152602001610236565b61032761039a3660046120f9565b610ab8565b6103776103ad3660046120f9565b600c6020526000908152604090205463ffffffff1681565b61026a6103d33660046120f9565b6001600160a01b031660009081526007602052604090205490565b6102ef600281565b61026a610404366004612093565b610ac5565b610327610d2a565b61026a61041f3660046120f9565b600d6020526000908152604090205481565b600054610355906001600160a01b031681565b610229610da5565b61032761045a366004612093565b610db2565b61025261046d3660046121ea565b610f72565b610252610480366004612093565b6110df565b610252610493366004612093565b611113565b61026a6104a63660046120f9565b611170565b6103276104b93660046122bb565b6111e5565b6102526104cc366004612313565b6114bb565b600154610355906001600160a01b031681565b6103276104f23660046123c2565b611575565b610252610505366004612093565b611891565b61026a61051836600461242c565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b61026a7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b6105a561057836600461245f565b600b6020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b6040805163ffffffff9093168352602083019190915201610236565b6103276105cf3660046120f9565b611920565b6103276105e23660046120f9565b611959565b600380546105f49061249f565b80601f01602080910402602001604051908101604052809291908181526020018280546106209061249f565b801561066d5780601f106106425761010080835404028352916020019161066d565b820191906000526020600020905b81548152906001019060200180831161065057829003601f168201915b505050505081565b60006001600160a01b0383166106a65760405162461bcd60e51b815260040161069d906124da565b60405180910390fd5b3360008181526008602090815260408083206001600160a01b03881680855290835292819020869055518581529192916000805160206127ea83398151915291015b60405180910390a35060015b92915050565b600554600080805260076020527f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df54909161073491611a4b565b905090565b6001600160a01b03831660009081526007602052604081205461075c9083611a4b565b6001600160a01b03851660009081526007602090815260408083209390935560088152828220338352905220546107939083611a4b565b6001600160a01b03858116600081815260086020908152604080832033845282529182902094909455518581529186169290916000805160206127ea833981519152910160405180910390a36001600160a01b0383166000908152600760205260409020546108029083611aa7565b6001600160a01b0380851660008181526007602052604090819020939093559151908616906000805160206127ca833981519152906108449086815260200190565b60405180910390a36001600160a01b038085166000908152600a602052604080822054868416835291205461087e92918216911684611b05565b5060019392505050565b3360009081526008602090815260408083206001600160a01b038616845290915281205461087e90849061024d9085611aa7565b6006546001600160a01b0316336001600160a01b03161461092b5760405162461bcd60e51b8152602060048201526024808201527f54454c453a3a6d696e743a206f6e6c7920746865206d696e7465722063616e206044820152631b5a5b9d60e21b606482015260840161069d565b6009544210156109895760405162461bcd60e51b815260206004820152602360248201527f54454c453a3a6d696e743a206d696e74696e67206e6f7420616c6c6f776564206044820152621e595d60ea1b606482015260840161069d565b6001600160a01b0382166109df5760405162461bcd60e51b815260206004820152601e60248201527f54454c453a206d696e7420746f20746865207a65726f20616464726573730000604482015260640161069d565b6109ec4262093a80611aa7565b600955610a0a610a02600554600260ff16611c69565b6103e8611cf0565b811115610a1657600080fd5b610a2260055482611aa7565b6005556001600160a01b038216600090815260076020526040902054610a489082611aa7565b6001600160a01b0383166000818152600760205260408082209390935591519091906000805160206127ca83398151915290610a879085815260200190565b60405180910390a36001600160a01b038083166000908152600a6020526040812054610ab4921683611b05565b5050565b610ac23382611d4b565b50565b6000438210610b265760405162461bcd60e51b815260206004820152602760248201527f54454c453a3a6765745072696f72566f7465733a206e6f742079657420646574604482015266195c9b5a5b995960ca1b606482015260840161069d565b6001600160a01b0383166000908152600c602052604090205463ffffffff1680610b545760009150506106f4565b6001600160a01b0384166000908152600b602052604081208491610b79600185612532565b63ffffffff90811682526020820192909252604001600020541611610be2576001600160a01b0384166000908152600b6020526040812090610bbc600184612532565b63ffffffff1663ffffffff168152602001908152602001600020600101549150506106f4565b6001600160a01b0384166000908152600b6020908152604080832083805290915290205463ffffffff16831015610c1d5760009150506106f4565b600080610c2b600184612532565b90505b8163ffffffff168163ffffffff161115610cf35760006002610c508484612532565b610c5a919061256d565b610c649083612532565b6001600160a01b0388166000908152600b6020908152604080832063ffffffff8086168552908352928190208151808301909252805490931680825260019093015491810191909152919250871415610cc7576020015194506106f49350505050565b805163ffffffff16871115610cde57819350610cec565b610ce9600183612532565b92505b5050610c2e565b506001600160a01b0385166000908152600b6020908152604080832063ffffffff9094168352929052206001015491505092915050565b6001546001600160a01b03163314610d4157600080fd5b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b600280546105f49061249f565b6006546001600160a01b0316336001600160a01b031614610e215760405162461bcd60e51b8152602060048201526024808201527f54454c453a3a6275726e3a206f6e6c7920746865206d696e7465722063616e206044820152631b5a5b9d60e21b606482015260840161069d565b6001600160a01b038216610e775760405162461bcd60e51b815260206004820181905260248201527f54454c453a206275726e2066726f6d20746865207a65726f2061646472657373604482015260640161069d565b6001600160a01b038216600090815260076020526040902054610e9a9082611a4b565b6001600160a01b03831660009081526007602090815260408083209390935560089052908120610eed91335b6001600160a01b03166001600160a01b031681526020019081526020016000205482611a4b565b6001600160a01b0383166000818152600860209081526040808320338085529083529281902094909455925184815290926000805160206127ea833981519152910160405180910390a3610f4360055482611a4b565b6005556040518181526000906001600160a01b038416906000805160206127ca83398151915290602001610a87565b60008151835114610ffc5760405162461bcd60e51b815260206004820152604860248201527f54454c453a206e756d626572206f66207265636569766572206164647265737360448201527f657320616e64206e756d626572206f6620616d6f756e74732073686f756c6420606482015267189948195c5d585b60c21b608482015260a40161069d565b60005b83518110156110895760006001600160a01b031684828151811061102557611025612590565b60200260200101516001600160a01b0316146110775761107784828151811061105057611050612590565b602002602001015184838151811061106a5761106a612590565b6020026020010151611dcb565b80611081816125a6565b915050610fff565b508260405161109891906125c1565b60405180910390206110a73390565b6001600160a01b03167f5547f7300f7510fad9df5d36f90cbd1099aebd10d4dd65d3fa3ac7af89db29e9846040516106e89190612600565b3360009081526008602090815260408083206001600160a01b038616845290915281205461087e90849061024d9085611a4b565b60006001600160a01b03831661113b5760405162461bcd60e51b815260040161069d906124da565b6111458383611dcb565b6040518281526001600160a01b0384169033906000805160206127ca833981519152906020016106e8565b6001600160a01b0381166000908152600c602052604081205463ffffffff168061119b5760006111de565b6001600160a01b0383166000908152600b60205260408120906111bf600184612532565b63ffffffff1663ffffffff168152602001908152602001600020600101545b9392505050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86660036040516112179190612644565b60405180910390206112264690565b60408051602080820195909552808201939093526060830191909152306080808401919091528151808403909101815260a0830182528051908401207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c08401526001600160a01b038b1660e084015261010083018a90526101208084018a90528251808503909101815261014084019092528151919093012061190160f01b610160830152610162820183905261018282018190529192506000906101a20160408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa158015611352573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166113c45760405162461bcd60e51b815260206004820152602660248201527f54454c453a3a64656c656761746542795369673a20696e76616c6964207369676044820152656e617475726560d01b606482015260840161069d565b6001600160a01b0381166000908152600d602052604081208054916113e8836125a6565b9190505589146114455760405162461bcd60e51b815260206004820152602260248201527f54454c453a3a64656c656761746542795369673a20696e76616c6964206e6f6e604482015261636560f01b606482015260840161069d565b874211156114a45760405162461bcd60e51b815260206004820152602660248201527f54454c453a3a64656c656761746542795369673a207369676e617475726520656044820152651e1c1a5c995960d21b606482015260840161069d565b6114ae818b611d4b565b505050505b505050505050565b3360008181526008602090815260408083206001600160a01b03881680855290835281842087905590518681529293909290916000805160206127ea833981519152910160405180910390a3604051638f4ffcb160e01b81526001600160a01b03851690638f4ffcb1906115399033908790309088906004016126e0565b600060405180830381600087803b15801561155357600080fd5b505af1158015611567573d6000803e3d6000fd5b506001979650505050505050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86660036040516115a79190612644565b60405180910390206115b64690565b604080516020810194909452830191909152606082015230608082015260a00160408051601f1981840301815291815281516020928301206001600160a01b038b166000908152600d90935290822080549193507f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b918661163c836125a6565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001209050600082826040516020016116bb92919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa158015611726573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166117895760405162461bcd60e51b815260206004820152601f60248201527f54454c453a3a7065726d69743a20696e76616c6964207369676e617475726500604482015260640161069d565b8a6001600160a01b0316816001600160a01b0316146117ea5760405162461bcd60e51b815260206004820152601a60248201527f54454c453a3a7065726d69743a20756e617574686f72697a6564000000000000604482015260640161069d565b8742111561183a5760405162461bcd60e51b815260206004820152601f60248201527f54454c453a3a7065726d69743a207369676e6174757265206578706972656400604482015260640161069d565b6001600160a01b038b81166000818152600860209081526040808320948f16808452948252918290208d905590518c81526000805160206127ea833981519152910160405180910390a35050505050505050505050565b600080546001600160a01b031633146118a957600080fd5b60005460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303816000875af11580156118fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111de919061271d565b6000546001600160a01b0316331461193757600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b0316336001600160a01b0316146119e25760405162461bcd60e51b815260206004820152603e60248201527f54454c453a3a7365744d696e7465723a206f6e6c7920746865206d696e74657260448201527f2063616e206368616e676520746865206d696e74657220616464726573730000606482015260840161069d565b600654604080516001600160a01b03928316815291831660208301527f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f6910160405180910390a1600680546001600160a01b0319166001600160a01b0392909216919091179055565b600082821115611a9d5760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015260640161069d565b6111de828461273f565b6000611ab38284612756565b9050828110156106f45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161069d565b816001600160a01b0316836001600160a01b031614158015611b275750600081115b15611c64576001600160a01b03831615611bca576001600160a01b0383166000908152600c602052604081205463ffffffff169081611b67576000611baa565b6001600160a01b0385166000908152600b6020526040812090611b8b600185612532565b63ffffffff1663ffffffff168152602001908152602001600020600101545b90506000611bb88285611a4b565b9050611bc686848484611e45565b5050505b6001600160a01b03821615611c64576001600160a01b0382166000908152600c602052604081205463ffffffff169081611c05576000611c48565b6001600160a01b0384166000908152600b6020526040812090611c29600185612532565b63ffffffff1663ffffffff168152602001908152602001600020600101545b90506000611c568285611aa7565b90506114b385848484611e45565b505050565b600082611c7857506000611c85565b611c82828461276e565b90505b821580611c9a575081611c98848361278d565b145b6106f45760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161069d565b6000808211611d415760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015260640161069d565b6111de828461278d565b6001600160a01b038281166000818152600a6020818152604080842080546007845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611dc5828483611b05565b50505050565b611dd86007600033610ec6565b33600090815260076020526040808220929092556001600160a01b03841681522054611e049082611aa7565b6001600160a01b03838116600081815260076020908152604080832095909555338252600a9052838120549181529290922054610ab4928216911683611b05565b6000611e694360405180606001604052806034815260200161280a60349139611fe7565b905060008463ffffffff16118015611ec357506001600160a01b0385166000908152600b6020526040812063ffffffff831691611ea7600188612532565b63ffffffff908116825260208201929092526040016000205416145b15611f0c576001600160a01b0385166000908152600b602052604081208391611eed600188612532565b63ffffffff168152602081019190915260400160002060010155611f9c565b60408051808201825263ffffffff838116825260208083018681526001600160a01b038a166000908152600b83528581208a851682529092529390209151825463ffffffff191691161781559051600191820155611f6b9085906127a1565b6001600160a01b0386166000908152600c60205260409020805463ffffffff191663ffffffff929092169190911790555b60408051848152602081018490526001600160a01b038716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050505050565b600081640100000000841061200f5760405162461bcd60e51b815260040161069d9190612064565b509192915050565b6000815180845260005b8181101561203d57602081850181015186830182015201612021565b8181111561204f576000602083870101525b50601f01601f19169290920160200192915050565b6020815260006111de6020830184612017565b80356001600160a01b038116811461208e57600080fd5b919050565b600080604083850312156120a657600080fd5b6120af83612077565b946020939093013593505050565b6000806000606084860312156120d257600080fd5b6120db84612077565b92506120e960208501612077565b9150604084013590509250925092565b60006020828403121561210b57600080fd5b6111de82612077565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561215357612153612114565b604052919050565b600067ffffffffffffffff82111561217557612175612114565b5060051b60200190565b600082601f83011261219057600080fd5b813560206121a56121a08361215b565b61212a565b82815260059290921b840181019181810190868411156121c457600080fd5b8286015b848110156121df57803583529183019183016121c8565b509695505050505050565b600080604083850312156121fd57600080fd5b823567ffffffffffffffff8082111561221557600080fd5b818501915085601f83011261222957600080fd5b813560206122396121a08361215b565b82815260059290921b8401810191818101908984111561225857600080fd5b948201945b8386101561227d5761226e86612077565b8252948201949082019061225d565b9650508601359250508082111561229357600080fd5b506122a08582860161217f565b9150509250929050565b803560ff8116811461208e57600080fd5b60008060008060008060c087890312156122d457600080fd5b6122dd87612077565b955060208701359450604087013593506122f9606088016122aa565b92506080870135915060a087013590509295509295509295565b60008060006060848603121561232857600080fd5b61233184612077565b92506020808501359250604085013567ffffffffffffffff8082111561235657600080fd5b818701915087601f83011261236a57600080fd5b81358181111561237c5761237c612114565b61238e601f8201601f1916850161212a565b915080825288848285010111156123a457600080fd5b80848401858401376000848284010152508093505050509250925092565b600080600080600080600060e0888a0312156123dd57600080fd5b6123e688612077565b96506123f460208901612077565b95506040880135945060608801359350612410608089016122aa565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561243f57600080fd5b61244883612077565b915061245660208401612077565b90509250929050565b6000806040838503121561247257600080fd5b61247b83612077565b9150602083013563ffffffff8116811461249457600080fd5b809150509250929050565b600181811c908216806124b357607f821691505b602082108114156124d457634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526022908201527f54454c453a207472616e7366657220746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff8381169083168181101561254f5761254f61251c565b039392505050565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff8084168061258457612584612557565b92169190910492915050565b634e487b7160e01b600052603260045260246000fd5b60006000198214156125ba576125ba61251c565b5060010190565b815160009082906020808601845b838110156125f45781516001600160a01b0316855293820193908201906001016125cf565b50929695505050505050565b6020808252825182820181905260009190848201906040850190845b818110156126385783518352928401929184019160010161261c565b50909695505050505050565b600080835481600182811c91508083168061266057607f831692505b602080841082141561268057634e487b7160e01b86526022600452602486fd5b81801561269457600181146126a5576126d2565b60ff198616895284890196506126d2565b60008a81526020902060005b868110156126ca5781548b8201529085019083016126b1565b505084890196505b509498975050505050505050565b6001600160a01b038581168252602082018590528316604082015260806060820181905260009061271390830184612017565b9695505050505050565b60006020828403121561272f57600080fd5b815180151581146111de57600080fd5b6000828210156127515761275161251c565b500390565b600082198211156127695761276961251c565b500190565b60008160001904831182151516156127885761278861251c565b500290565b60008261279c5761279c612557565b500490565b600063ffffffff8083168185168083038211156127c0576127c061251c565b0194935050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92554454c453a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473a2646970667358221220d0e5c1c4f29130c4545892d49f0999fd6c7d78abdfd0da46f7e1dd0b952f2e8264736f6c634300080c0033
0x60806040523480156200001157600080fd5b50600080546001600160a01b031916331790556040805180820190915260048082526354454c4560e01b60209092019182526200005191600291620001a6565b506040805180820190915260068082526554656c65667960d01b60209092019182526200008191600391620001a6565b506004805460ff191660121790556b01f04ef12cb04cf1580000006005819055600080546001600160a01b03908116825260076020526040808320849055825490519116927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620000f591815260200190565b60405180910390a3600680546001600160a01b03191673a270da3c3175ed9992c9ad3b6bb679bf81c35ba8179055620001324262093a806200013b565b600955620002b0565b60006200014982846200024c565b905082811015620001a05760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b92915050565b828054620001b49062000273565b90600052602060002090601f016020900481019282620001d8576000855562000223565b82601f10620001f357805160ff191683800117855562000223565b8280016001018555821562000223579182015b828111156200022357825182559160200191906001019062000206565b506200023192915062000235565b5090565b5b8082111562000231576000815560010162000236565b600082198211156200026e57634e487b7160e01b600052601160045260246000fd5b500190565b600181811c908216806200028857607f821691505b60208210811415620002aa57634e487b7160e01b600052602260045260246000fd5b50919050565b61287380620002c06000396000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c80637ecebe0011610125578063cae9ca51116100ad578063dd62ed3e1161007c578063dd62ed3e1461050a578063e7a324dc14610543578063f1127ed81461056a578063f2fde38b146105c1578063fca3b5aa146105d457600080fd5b8063cae9ca51146104be578063d4ee1d90146104d1578063d505accf146104e4578063dc39d06d146104f757600080fd5b8063a05fccef116100f4578063a05fccef1461045f578063a457c2d714610472578063a9059cbb14610485578063b4b5ea5714610498578063c3cda520146104ab57600080fd5b80637ecebe00146104115780638da5cb5b1461043157806395d89b41146104445780639dc29fac1461044c57600080fd5b806340c10f19116101a85780636fcfff45116101775780636fcfff451461039f57806370a08231146103c557806376c71ca1146103ee578063782d6fe1146103f657806379ba50971461040957600080fd5b806340c10f1914610314578063587cde1e146103295780635c11d62f1461036d5780635c19a95c1461038c57600080fd5b806323b872dd116101ef57806323b872dd1461029f57806330adf81f146102b257806330b36cef146102d9578063313ce567146102e2578063395093511461030157600080fd5b806306fdde0314610221578063095ea7b31461023f57806318160ddd1461026257806320606b7014610278575b600080fd5b6102296105e7565b6040516102369190612064565b60405180910390f35b61025261024d366004612093565b610675565b6040519015158152602001610236565b61026a6106fa565b604051908152602001610236565b61026a7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6102526102ad3660046120bd565b610739565b61026a7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b61026a60095481565b6004546102ef9060ff1681565b60405160ff9091168152602001610236565b61025261030f366004612093565b610888565b610327610322366004612093565b6108bc565b005b6103556103373660046120f9565b6001600160a01b039081166000908152600a60205260409020541690565b6040516001600160a01b039091168152602001610236565b61037762093a8081565b60405163ffffffff9091168152602001610236565b61032761039a3660046120f9565b610ab8565b6103776103ad3660046120f9565b600c6020526000908152604090205463ffffffff1681565b61026a6103d33660046120f9565b6001600160a01b031660009081526007602052604090205490565b6102ef600281565b61026a610404366004612093565b610ac5565b610327610d2a565b61026a61041f3660046120f9565b600d6020526000908152604090205481565b600054610355906001600160a01b031681565b610229610da5565b61032761045a366004612093565b610db2565b61025261046d3660046121ea565b610f72565b610252610480366004612093565b6110df565b610252610493366004612093565b611113565b61026a6104a63660046120f9565b611170565b6103276104b93660046122bb565b6111e5565b6102526104cc366004612313565b6114bb565b600154610355906001600160a01b031681565b6103276104f23660046123c2565b611575565b610252610505366004612093565b611891565b61026a61051836600461242c565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b61026a7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b6105a561057836600461245f565b600b6020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b6040805163ffffffff9093168352602083019190915201610236565b6103276105cf3660046120f9565b611920565b6103276105e23660046120f9565b611959565b600380546105f49061249f565b80601f01602080910402602001604051908101604052809291908181526020018280546106209061249f565b801561066d5780601f106106425761010080835404028352916020019161066d565b820191906000526020600020905b81548152906001019060200180831161065057829003601f168201915b505050505081565b60006001600160a01b0383166106a65760405162461bcd60e51b815260040161069d906124da565b60405180910390fd5b3360008181526008602090815260408083206001600160a01b03881680855290835292819020869055518581529192916000805160206127ea83398151915291015b60405180910390a35060015b92915050565b600554600080805260076020527f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df54909161073491611a4b565b905090565b6001600160a01b03831660009081526007602052604081205461075c9083611a4b565b6001600160a01b03851660009081526007602090815260408083209390935560088152828220338352905220546107939083611a4b565b6001600160a01b03858116600081815260086020908152604080832033845282529182902094909455518581529186169290916000805160206127ea833981519152910160405180910390a36001600160a01b0383166000908152600760205260409020546108029083611aa7565b6001600160a01b0380851660008181526007602052604090819020939093559151908616906000805160206127ca833981519152906108449086815260200190565b60405180910390a36001600160a01b038085166000908152600a602052604080822054868416835291205461087e92918216911684611b05565b5060019392505050565b3360009081526008602090815260408083206001600160a01b038616845290915281205461087e90849061024d9085611aa7565b6006546001600160a01b0316336001600160a01b03161461092b5760405162461bcd60e51b8152602060048201526024808201527f54454c453a3a6d696e743a206f6e6c7920746865206d696e7465722063616e206044820152631b5a5b9d60e21b606482015260840161069d565b6009544210156109895760405162461bcd60e51b815260206004820152602360248201527f54454c453a3a6d696e743a206d696e74696e67206e6f7420616c6c6f776564206044820152621e595d60ea1b606482015260840161069d565b6001600160a01b0382166109df5760405162461bcd60e51b815260206004820152601e60248201527f54454c453a206d696e7420746f20746865207a65726f20616464726573730000604482015260640161069d565b6109ec4262093a80611aa7565b600955610a0a610a02600554600260ff16611c69565b6103e8611cf0565b811115610a1657600080fd5b610a2260055482611aa7565b6005556001600160a01b038216600090815260076020526040902054610a489082611aa7565b6001600160a01b0383166000818152600760205260408082209390935591519091906000805160206127ca83398151915290610a879085815260200190565b60405180910390a36001600160a01b038083166000908152600a6020526040812054610ab4921683611b05565b5050565b610ac23382611d4b565b50565b6000438210610b265760405162461bcd60e51b815260206004820152602760248201527f54454c453a3a6765745072696f72566f7465733a206e6f742079657420646574604482015266195c9b5a5b995960ca1b606482015260840161069d565b6001600160a01b0383166000908152600c602052604090205463ffffffff1680610b545760009150506106f4565b6001600160a01b0384166000908152600b602052604081208491610b79600185612532565b63ffffffff90811682526020820192909252604001600020541611610be2576001600160a01b0384166000908152600b6020526040812090610bbc600184612532565b63ffffffff1663ffffffff168152602001908152602001600020600101549150506106f4565b6001600160a01b0384166000908152600b6020908152604080832083805290915290205463ffffffff16831015610c1d5760009150506106f4565b600080610c2b600184612532565b90505b8163ffffffff168163ffffffff161115610cf35760006002610c508484612532565b610c5a919061256d565b610c649083612532565b6001600160a01b0388166000908152600b6020908152604080832063ffffffff8086168552908352928190208151808301909252805490931680825260019093015491810191909152919250871415610cc7576020015194506106f49350505050565b805163ffffffff16871115610cde57819350610cec565b610ce9600183612532565b92505b5050610c2e565b506001600160a01b0385166000908152600b6020908152604080832063ffffffff9094168352929052206001015491505092915050565b6001546001600160a01b03163314610d4157600080fd5b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b600280546105f49061249f565b6006546001600160a01b0316336001600160a01b031614610e215760405162461bcd60e51b8152602060048201526024808201527f54454c453a3a6275726e3a206f6e6c7920746865206d696e7465722063616e206044820152631b5a5b9d60e21b606482015260840161069d565b6001600160a01b038216610e775760405162461bcd60e51b815260206004820181905260248201527f54454c453a206275726e2066726f6d20746865207a65726f2061646472657373604482015260640161069d565b6001600160a01b038216600090815260076020526040902054610e9a9082611a4b565b6001600160a01b03831660009081526007602090815260408083209390935560089052908120610eed91335b6001600160a01b03166001600160a01b031681526020019081526020016000205482611a4b565b6001600160a01b0383166000818152600860209081526040808320338085529083529281902094909455925184815290926000805160206127ea833981519152910160405180910390a3610f4360055482611a4b565b6005556040518181526000906001600160a01b038416906000805160206127ca83398151915290602001610a87565b60008151835114610ffc5760405162461bcd60e51b815260206004820152604860248201527f54454c453a206e756d626572206f66207265636569766572206164647265737360448201527f657320616e64206e756d626572206f6620616d6f756e74732073686f756c6420606482015267189948195c5d585b60c21b608482015260a40161069d565b60005b83518110156110895760006001600160a01b031684828151811061102557611025612590565b60200260200101516001600160a01b0316146110775761107784828151811061105057611050612590565b602002602001015184838151811061106a5761106a612590565b6020026020010151611dcb565b80611081816125a6565b915050610fff565b508260405161109891906125c1565b60405180910390206110a73390565b6001600160a01b03167f5547f7300f7510fad9df5d36f90cbd1099aebd10d4dd65d3fa3ac7af89db29e9846040516106e89190612600565b3360009081526008602090815260408083206001600160a01b038616845290915281205461087e90849061024d9085611a4b565b60006001600160a01b03831661113b5760405162461bcd60e51b815260040161069d906124da565b6111458383611dcb565b6040518281526001600160a01b0384169033906000805160206127ca833981519152906020016106e8565b6001600160a01b0381166000908152600c602052604081205463ffffffff168061119b5760006111de565b6001600160a01b0383166000908152600b60205260408120906111bf600184612532565b63ffffffff1663ffffffff168152602001908152602001600020600101545b9392505050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86660036040516112179190612644565b60405180910390206112264690565b60408051602080820195909552808201939093526060830191909152306080808401919091528151808403909101815260a0830182528051908401207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c08401526001600160a01b038b1660e084015261010083018a90526101208084018a90528251808503909101815261014084019092528151919093012061190160f01b610160830152610162820183905261018282018190529192506000906101a20160408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa158015611352573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166113c45760405162461bcd60e51b815260206004820152602660248201527f54454c453a3a64656c656761746542795369673a20696e76616c6964207369676044820152656e617475726560d01b606482015260840161069d565b6001600160a01b0381166000908152600d602052604081208054916113e8836125a6565b9190505589146114455760405162461bcd60e51b815260206004820152602260248201527f54454c453a3a64656c656761746542795369673a20696e76616c6964206e6f6e604482015261636560f01b606482015260840161069d565b874211156114a45760405162461bcd60e51b815260206004820152602660248201527f54454c453a3a64656c656761746542795369673a207369676e617475726520656044820152651e1c1a5c995960d21b606482015260840161069d565b6114ae818b611d4b565b505050505b505050505050565b3360008181526008602090815260408083206001600160a01b03881680855290835281842087905590518681529293909290916000805160206127ea833981519152910160405180910390a3604051638f4ffcb160e01b81526001600160a01b03851690638f4ffcb1906115399033908790309088906004016126e0565b600060405180830381600087803b15801561155357600080fd5b505af1158015611567573d6000803e3d6000fd5b506001979650505050505050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86660036040516115a79190612644565b60405180910390206115b64690565b604080516020810194909452830191909152606082015230608082015260a00160408051601f1981840301815291815281516020928301206001600160a01b038b166000908152600d90935290822080549193507f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b918661163c836125a6565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001209050600082826040516020016116bb92919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa158015611726573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166117895760405162461bcd60e51b815260206004820152601f60248201527f54454c453a3a7065726d69743a20696e76616c6964207369676e617475726500604482015260640161069d565b8a6001600160a01b0316816001600160a01b0316146117ea5760405162461bcd60e51b815260206004820152601a60248201527f54454c453a3a7065726d69743a20756e617574686f72697a6564000000000000604482015260640161069d565b8742111561183a5760405162461bcd60e51b815260206004820152601f60248201527f54454c453a3a7065726d69743a207369676e6174757265206578706972656400604482015260640161069d565b6001600160a01b038b81166000818152600860209081526040808320948f16808452948252918290208d905590518c81526000805160206127ea833981519152910160405180910390a35050505050505050505050565b600080546001600160a01b031633146118a957600080fd5b60005460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303816000875af11580156118fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111de919061271d565b6000546001600160a01b0316331461193757600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b0316336001600160a01b0316146119e25760405162461bcd60e51b815260206004820152603e60248201527f54454c453a3a7365744d696e7465723a206f6e6c7920746865206d696e74657260448201527f2063616e206368616e676520746865206d696e74657220616464726573730000606482015260840161069d565b600654604080516001600160a01b03928316815291831660208301527f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f6910160405180910390a1600680546001600160a01b0319166001600160a01b0392909216919091179055565b600082821115611a9d5760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015260640161069d565b6111de828461273f565b6000611ab38284612756565b9050828110156106f45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161069d565b816001600160a01b0316836001600160a01b031614158015611b275750600081115b15611c64576001600160a01b03831615611bca576001600160a01b0383166000908152600c602052604081205463ffffffff169081611b67576000611baa565b6001600160a01b0385166000908152600b6020526040812090611b8b600185612532565b63ffffffff1663ffffffff168152602001908152602001600020600101545b90506000611bb88285611a4b565b9050611bc686848484611e45565b5050505b6001600160a01b03821615611c64576001600160a01b0382166000908152600c602052604081205463ffffffff169081611c05576000611c48565b6001600160a01b0384166000908152600b6020526040812090611c29600185612532565b63ffffffff1663ffffffff168152602001908152602001600020600101545b90506000611c568285611aa7565b90506114b385848484611e45565b505050565b600082611c7857506000611c85565b611c82828461276e565b90505b821580611c9a575081611c98848361278d565b145b6106f45760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161069d565b6000808211611d415760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015260640161069d565b6111de828461278d565b6001600160a01b038281166000818152600a6020818152604080842080546007845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611dc5828483611b05565b50505050565b611dd86007600033610ec6565b33600090815260076020526040808220929092556001600160a01b03841681522054611e049082611aa7565b6001600160a01b03838116600081815260076020908152604080832095909555338252600a9052838120549181529290922054610ab4928216911683611b05565b6000611e694360405180606001604052806034815260200161280a60349139611fe7565b905060008463ffffffff16118015611ec357506001600160a01b0385166000908152600b6020526040812063ffffffff831691611ea7600188612532565b63ffffffff908116825260208201929092526040016000205416145b15611f0c576001600160a01b0385166000908152600b602052604081208391611eed600188612532565b63ffffffff168152602081019190915260400160002060010155611f9c565b60408051808201825263ffffffff838116825260208083018681526001600160a01b038a166000908152600b83528581208a851682529092529390209151825463ffffffff191691161781559051600191820155611f6b9085906127a1565b6001600160a01b0386166000908152600c60205260409020805463ffffffff191663ffffffff929092169190911790555b60408051848152602081018490526001600160a01b038716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050505050565b600081640100000000841061200f5760405162461bcd60e51b815260040161069d9190612064565b509192915050565b6000815180845260005b8181101561203d57602081850181015186830182015201612021565b8181111561204f576000602083870101525b50601f01601f19169290920160200192915050565b6020815260006111de6020830184612017565b80356001600160a01b038116811461208e57600080fd5b919050565b600080604083850312156120a657600080fd5b6120af83612077565b946020939093013593505050565b6000806000606084860312156120d257600080fd5b6120db84612077565b92506120e960208501612077565b9150604084013590509250925092565b60006020828403121561210b57600080fd5b6111de82612077565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561215357612153612114565b604052919050565b600067ffffffffffffffff82111561217557612175612114565b5060051b60200190565b600082601f83011261219057600080fd5b813560206121a56121a08361215b565b61212a565b82815260059290921b840181019181810190868411156121c457600080fd5b8286015b848110156121df57803583529183019183016121c8565b509695505050505050565b600080604083850312156121fd57600080fd5b823567ffffffffffffffff8082111561221557600080fd5b818501915085601f83011261222957600080fd5b813560206122396121a08361215b565b82815260059290921b8401810191818101908984111561225857600080fd5b948201945b8386101561227d5761226e86612077565b8252948201949082019061225d565b9650508601359250508082111561229357600080fd5b506122a08582860161217f565b9150509250929050565b803560ff8116811461208e57600080fd5b60008060008060008060c087890312156122d457600080fd5b6122dd87612077565b955060208701359450604087013593506122f9606088016122aa565b92506080870135915060a087013590509295509295509295565b60008060006060848603121561232857600080fd5b61233184612077565b92506020808501359250604085013567ffffffffffffffff8082111561235657600080fd5b818701915087601f83011261236a57600080fd5b81358181111561237c5761237c612114565b61238e601f8201601f1916850161212a565b915080825288848285010111156123a457600080fd5b80848401858401376000848284010152508093505050509250925092565b600080600080600080600060e0888a0312156123dd57600080fd5b6123e688612077565b96506123f460208901612077565b95506040880135945060608801359350612410608089016122aa565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561243f57600080fd5b61244883612077565b915061245660208401612077565b90509250929050565b6000806040838503121561247257600080fd5b61247b83612077565b9150602083013563ffffffff8116811461249457600080fd5b809150509250929050565b600181811c908216806124b357607f821691505b602082108114156124d457634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526022908201527f54454c453a207472616e7366657220746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff8381169083168181101561254f5761254f61251c565b039392505050565b634e487b7160e01b600052601260045260246000fd5b600063ffffffff8084168061258457612584612557565b92169190910492915050565b634e487b7160e01b600052603260045260246000fd5b60006000198214156125ba576125ba61251c565b5060010190565b815160009082906020808601845b838110156125f45781516001600160a01b0316855293820193908201906001016125cf565b50929695505050505050565b6020808252825182820181905260009190848201906040850190845b818110156126385783518352928401929184019160010161261c565b50909695505050505050565b600080835481600182811c91508083168061266057607f831692505b602080841082141561268057634e487b7160e01b86526022600452602486fd5b81801561269457600181146126a5576126d2565b60ff198616895284890196506126d2565b60008a81526020902060005b868110156126ca5781548b8201529085019083016126b1565b505084890196505b509498975050505050505050565b6001600160a01b038581168252602082018590528316604082015260806060820181905260009061271390830184612017565b9695505050505050565b60006020828403121561272f57600080fd5b815180151581146111de57600080fd5b6000828210156127515761275161251c565b500390565b600082198211156127695761276961251c565b500190565b60008160001904831182151516156127885761278861251c565b500290565b60008261279c5761279c612557565b500490565b600063ffffffff8083168185168083038211156127c0576127c061251c565b0194935050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92554454c453a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473a2646970667358221220d0e5c1c4f29130c4545892d49f0999fd6c7d78abdfd0da46f7e1dd0b952f2e8264736f6c634300080c0033