0x608060405234801561001057600080fd5b50612fd2806100206000396000f3fe6080604052600436106102255760003560e01c80638da5cb5b11610123578063c21b4865116100ab578063e6074da71161006f578063e6074da7146106c5578063f0f20127146106f2578063f2fde38b14610712578063f46901ed14610732578063fa0876711461075257600080fd5b8063c21b486514610601578063cda7f83f14610623578063d04567f314610655578063d544e0101461066a578063df42fd361461068a57600080fd5b8063a02a66ec116100f2578063a02a66ec1461056b578063abb718631461058b578063b2e916d6146105a1578063bfd06304146105c1578063c0c53b8b146105e157600080fd5b80638da5cb5b146104f85780638f715701146105165780638f9952341461052b578063960bfe041461054b57600080fd5b80633cbdef56116101b15780635e14e319116101755780635e14e3191461045e57806362a5af3b1461047e5780636a28f000146104935780636b9f97ef146104a85780636c65fd6a146104c857600080fd5b80633cbdef56146103d5578063411b007e146103f557806342cde4e8146104155780635c5b9f8f1461042b5780635d799f871461043e57600080fd5b80631c673ab8116101f85780631c673ab8146102d157806326defa73146103125780632b1a7b58146103345780632f3a3d5d146103a05780633af84ac4146103c057600080fd5b8063017e7e581461022a578063054f7d9c1461026757806313bf81261461029857806316a27ecd146102bc575b600080fd5b34801561023657600080fd5b5060055461024a906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027357600080fd5b5060055461028890600160a01b900460ff1681565b604051901515815260200161025e565b3480156102a457600080fd5b506102ae600c5481565b60405190815260200161025e565b3480156102c857600080fd5b5061024a6107ad565b3480156102dd57600080fd5b5061024a6102ec366004612d0b565b60096020908152600092835260408084209091529082529020546001600160a01b031681565b34801561031e57600080fd5b5061033261032d3660046129d8565b610846565b005b34801561034057600080fd5b5061038161034f366004612d0b565b60086020908152600092835260408084209091529082529020546001600160a01b03811690600160a01b900460ff1682565b604080516001600160a01b03909316835290151560208301520161025e565b3480156103ac57600080fd5b5060045461024a906001600160a01b031681565b3480156103cc57600080fd5b506102ae6109bf565b3480156103e157600080fd5b506103326103f03660046129d8565b6109cf565b34801561040157600080fd5b50600e5461024a906001600160a01b031681565b34801561042157600080fd5b506102ae60035481565b610332610439366004612c8d565b610adb565b34801561044a57600080fd5b506103326104593660046129f2565b610d8e565b34801561046a57600080fd5b50610332610479366004612ab4565b610ec1565b34801561048a57600080fd5b50610332610f7c565b34801561049f57600080fd5b50610332611010565b3480156104b457600080fd5b506103326104c33660046129d8565b6110bb565b3480156104d457600080fd5b506102886104e33660046129d8565b600b6020526000908152604090205460ff1681565b34801561050457600080fd5b506000546001600160a01b031661024a565b34801561052257600080fd5b506103326111a6565b34801561053757600080fd5b50610332610546366004612aea565b611221565b34801561055757600080fd5b50610332610566366004612cdb565b6116ea565b34801561057757600080fd5b506103326105863660046129d8565b6117d8565b34801561059757600080fd5b506102ae60065481565b3480156105ad57600080fd5b506103326105bc366004612a66565b611861565b3480156105cd57600080fd5b506103326105dc366004612bf0565b6119fd565b3480156105ed57600080fd5b506103326105fc366004612a24565b611d82565b34801561060d57600080fd5b50610616611ea4565b60405161025e9190612de1565b34801561062f57600080fd5b50610638611f09565b604080519283526001600160a01b0390911660208301520161025e565b34801561066157600080fd5b50610332611f52565b34801561067657600080fd5b506103326106853660046129d8565b611fc2565b34801561069657600080fd5b506102886106a5366004612d2d565b600760209081526000928352604080842090915290825290205460ff1681565b3480156106d157600080fd5b506102ae6106e03660046129d8565b600a6020526000908152604090205481565b3480156106fe57600080fd5b50600f5461024a906001600160a01b031681565b34801561071e57600080fd5b5061033261072d3660046129d8565b612091565b34801561073e57600080fd5b5061033261074d3660046129d8565b6121b7565b34801561075e57600080fd5b50600d54610785906001600160a01b03811690600160a01b900467ffffffffffffffff1682565b604080516001600160a01b03909316835267ffffffffffffffff90911660208301520161025e565b60408051808201909152600d546001600160a01b0381168252600160a01b900467ffffffffffffffff166020820181905260009190421180156107f9575080516001600160a01b031615155b6108405760405162461bcd60e51b8152602060048201526013602482015272155c19dc985919481b9bdd08185b1b1bddd959606a1b60448201526064015b60405180910390fd5b51919050565b336108596000546001600160a01b031690565b6001600160a01b03161461087f5760405162461bcd60e51b815260040161083790612e7f565b600c54801580159061089057504281105b6108ac5760405162461bcd60e51b815260040161083790612e2e565b6001600160a01b0382166108d25760405162461bcd60e51b815260040161083790612e59565b60ff6108dd60015490565b106109215760405162461bcd60e51b8152602060048201526014602482015273546f6f206d616e7920617574686f72697469657360601b6044820152606401610837565b61092c60018361229d565b6109785760405162461bcd60e51b815260206004820152601760248201527f417574686f7269747920616c72656164792061646465640000000000000000006044820152606401610837565b604080516001600160a01b0384168152600160208201527f9019659af698fad527191eef17d6d00706d88aa9fabff25a08edea756c36199391015b60405180910390a15050565b60006109ca60015490565b905090565b600e546001600160a01b03163314610a295760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f742074686520666f756e646572730000000000006044820152606401610837565b6001600160a01b038116610a7f5760405162461bcd60e51b815260206004820152601d60248201527f6e6577206f776e657220697320746865207a65726f20616464726573730000006044820152606401610837565b600e546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600e80546001600160a01b0319166001600160a01b0392909216919091179055565b600554600160a01b900460ff1615610b285760405162461bcd60e51b815260206004820152601060248201526f213934b233b29034b990333937bd32b760811b6044820152606401610837565b60008181526008602090815260408083206001600160a01b03878116855290835292819020815180830190925254928316808252600160a01b90930460ff1615159181019190915290610bb05760405162461bcd60e51b815260206004820152601060248201526f2a3432b9329034b9903737903830b4b960811b6044820152606401610837565b34601f6001600160a01b03861611610c115734841115610c005760405162461bcd60e51b815260206004820152600b60248201526a57726f6e672076616c756560a81b6044820152606401610837565b610c0a8482612efd565b9050610ce4565b816020015115610ca15760405163079cc67960e41b8152336004820152602481018590526001600160a01b038616906379cc679090604401602060405180830381600087803b158015610c6357600080fd5b505af1158015610c77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9b9190612cbf565b50610ce4565b6001600160a01b0385166000908152600a602052604081208054869290610cc9908490612ee5565b90915550610ce490506001600160a01b038616333087612311565b8015610d3657600554610d00906001600160a01b031682612441565b60405181815233907f7bd3aa7d673767f759ebf216e7f6c12844986c661ae6e0f1d988cf7eb7394d1d9060200160405180910390a25b815160408051868152602081018690526001600160a01b0392831681830152905133928816917ff5dd9317b9e63ac316ce44acc85f670b54b339cfa3e9076e1dd55065b922314b919081900360600190a35050505050565b33610da16000546001600160a01b031690565b6001600160a01b031614610dc75760405162461bcd60e51b815260040161083790612e7f565b6001600160a01b0382166000818152600a60205260408082205490516370a0823160e01b8152306004820152919290916370a082319060240160206040518083038186803b158015610e1857600080fd5b505afa158015610e2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e509190612cf3565b610e5a9190612efd565b9050610e706001600160a01b038416838361250f565b604080516001600160a01b038086168252841660208201529081018290527f2c5650189f92c7058626efc371b51fe7e71f37dacb696bc7cad0b1320931974a906060015b60405180910390a1505050565b33610ed46000546001600160a01b031690565b6001600160a01b031614610efa5760405162461bcd60e51b815260040161083790612e7f565b6001600160a01b038216610f205760405162461bcd60e51b815260040161083790612e59565b6001600160a01b0382166000818152600b6020908152604091829020805460ff19168515159081179091558251938452908301527feabe320fe7911eab2e5125ac393caa5937659b712f0c3ac43316c61d4bc0880191016109b3565b6000546001600160a01b0316331480610fa357503360009081526002602052604090205415155b80610fbd5750336000908152600b602052604090205460ff165b610fc657600080fd5b6005805460ff60a01b1916600160a01b179055604051600181527f59800d968fcce138300a0019410b4b75041610d65b3cdc5f31656b03ed14912e906020015b60405180910390a1565b336110236000546001600160a01b031690565b6001600160a01b0316146110495760405162461bcd60e51b815260040161083790612e7f565b600c54801580159061105a57504281105b6110765760405162461bcd60e51b815260040161083790612e2e565b6005805460ff60a01b19169055604051600081527f59800d968fcce138300a0019410b4b75041610d65b3cdc5f31656b03ed14912e906020015b60405180910390a150565b336110ce6000546001600160a01b031690565b6001600160a01b0316146110f45760405162461bcd60e51b815260040161083790612e7f565b6001600160a01b03811661111a5760405162461bcd60e51b815260040161083790612e59565b6000611129426203f480612ee5565b6040805180820182526001600160a01b03851680825267ffffffffffffffff84166020928301819052600d80546001600160e01b0319168317600160a01b90920291909117905582519081529081018390529192507fd990f8f4f90cd3307c50ab3d095cfb65516e999b7584aee60c0af83eb48118de91016109b3565b336111b96000546001600160a01b031690565b6001600160a01b0316146111df5760405162461bcd60e51b815260040161083790612e7f565b6111ec4262015180612ee5565b600c8190556040519081527f14936c23481f8e50ff3a556eb966606eaa9dd8180100eb757f3dccb05eb8af4290602001611006565b600554600160a01b900460ff161561126e5760405162461bcd60e51b815260206004820152601060248201526f213934b233b29034b990333937bd32b760811b6044820152606401610837565b600082815260076020908152604080832088845290915290205460ff16156112d85760405162461bcd60e51b815260206004820152601d60248201527f5472616e73616374696f6e20616c72656164792070726f6365737365640000006044820152606401610837565b60008281526008602090815260408083206001600160a01b038a8116855290835292819020815180830190925254928316808252600160a01b90930460ff16151591810191909152906113605760405162461bcd60e51b815260206004820152601060248201526f2a3432b9329034b9903737903830b4b960811b6044820152606401610837565b60008381526007602090815260408083208984528252808320805460ff19166001179055600f54815160608c811b6bffffffffffffffffffffffff1990811683870152908b901b16603482015260488101899052606881018b9052608881018890524660a8808301919091528351808303909101815260c8820184528051908501207f19457468657265756d205369676e6564204d6573736167653a0a33320000000060e88301526101048083019190915283518083039091018152610124909101909252815191909201206001600160a01b039091169180805b86518110156114f15760006114778589848151811061146a57634e487b7160e01b600052603260045260246000fd5b602002602001015161262a565b9050856001600160a01b0316816001600160a01b0316141561149857600095505b6001600160a01b0381166000908152600260205260409020546001811b81158015906114c45750848116155b156114db5793841793856114d781612f44565b9650505b50505080806114e990612f44565b91505061143b565b508160035411156115445760405162461bcd60e51b815260206004820152601760248201527f52657175697265206d6f7265207369676e6174757265730000000000000000006044820152606401610837565b6001600160a01b038416156115a75760405162461bcd60e51b8152602060048201526024808201527f54686520726571756972656420617574686f7269747920646f6573206e6f742060448201526339b4b3b760e11b6064820152608401610837565b601f6001600160a01b038c16116115d0576115cb6001600160a01b038a1689612441565b611683565b846020015115611641576040516340c10f1960e01b81526001600160a01b038a81166004830152602482018a90528c16906340c10f1990604401600060405180830381600087803b15801561162457600080fd5b505af1158015611638573d6000803e3d6000fd5b50505050611683565b6001600160a01b038b166000908152600a6020526040812080548a9290611669908490612efd565b9091555061168390506001600160a01b038c168a8a61250f565b8451604080518a8152602081018d90529081018990526001600160a01b039182166060820152818b16918d16907fc9e45b9f44cc745053533754942aa17989494514aeadbb624b4b5e34a0ce5fc29060800160405180910390a35050505050505050505050565b336116fd6000546001600160a01b031690565b6001600160a01b0316146117235760405162461bcd60e51b815260040161083790612e7f565b600c54801580159061173457504281105b6117505760405162461bcd60e51b815260040161083790612e2e565b60035415801590611765575060015460035411155b6117a35760405162461bcd60e51b815260206004820152600f60248201526e15dc9bdb99c81d1a1c995cda1bdb19608a1b6044820152606401610837565b60038290556040518281527f46e8115bf463f9c29a9424fe152addef1bfaf2b43180d19bb7c2c78cc0ff1ebf906020016109b3565b336117eb6000546001600160a01b031690565b6001600160a01b0316146118115760405162461bcd60e51b815260040161083790612e7f565b600c54801580159061182257504281105b61183e5760405162461bcd60e51b815260040161083790612e2e565b50600f80546001600160a01b0319166001600160a01b0392909216919091179055565b336118746000546001600160a01b031690565b6001600160a01b03161461189a5760405162461bcd60e51b815260040161083790612e7f565b600c5480158015906118ab57504281105b6118c75760405162461bcd60e51b815260040161083790612e2e565b60008381526008602090815260408083206001600160a01b038981168552925290912054161561192e5760405162461bcd60e51b815260206004820152601260248201527114185a5c88185b1c9958591e48195e1a5cdd60721b6044820152606401610837565b6040805180820182526001600160a01b03868116808352851515602080850182815260008a8152600883528781208d87168083529084528882209751885493511515600160a01b026001600160a81b0319909416971696909617919091179095558885526009815285852083865281529385902080546001600160a01b0319168417905584519283529282019290925291820152606081018490527f4e37907d987e2429cd26da336a410ffe2d567dc727ed293e6c500023525af2959060800160405180910390a15050505050565b33611a106000546001600160a01b031690565b6001600160a01b031614611a365760405162461bcd60e51b815260040161083790612e7f565b600c548015801590611a4757504281105b611a635760405162461bcd60e51b815260040161083790612e2e565b6001600160a01b038716611aaf5760405162461bcd60e51b815260206004820152601360248201527257726f6e6720746f6b656e206164647265737360681b6044820152606401610837565b60008681526009602090815260408083206001600160a01b038b811685529252909120541615611b215760405162461bcd60e51b815260206004820152601a60248201527f5468697320746f6b656e20616c726561647920777261707065640000000000006044820152606401610837565b6006548211611b7e5760405162461bcd60e51b815260206004820152602360248201527f4e6f6e6365206d75737420626520686967686572207468656e20777261704e6f6044820152626e636560e81b6064820152608401610837565b6006829055600454600090611b9c906001600160a01b0316846126a9565b9050806001600160a01b031663f6d2ee86611bbf6000546001600160a01b031690565b8888886040518563ffffffff1660e01b8152600401611be19493929190612d96565b600060405180830381600087803b158015611bfb57600080fd5b505af1158015611c0f573d6000803e3d6000fd5b505050506040518060400160405280896001600160a01b0316815260200160011515815250600860008981526020019081526020016000206000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160000160146101000a81548160ff021916908315150217905550905050806009600089815260200190815260200160002060008a6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055507f4e37907d987e2429cd26da336a410ffe2d567dc727ed293e6c500023525af2958160018a8a604051611d7094939291906001600160a01b039485168152921515602084015292166040820152606081019190915260800190565b60405180910390a15050505050505050565b6001600160a01b03831615801590611da257506001600160a01b03821615155b8015611db75750600e546001600160a01b0316155b611dc057600080fd5b600080546001600160a01b038086166001600160a01b0319928316178355600e8054918616919092161790556040513391907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36001600160a01b038116611e6d5760405162461bcd60e51b815260206004820152601960248201527f57726f6e6720746f6b656e496d706c656d656e746174696f6e000000000000006044820152606401610837565b600480546001600160a01b039092166001600160a01b03199283161790556005805490911633179055505060016003819055600c55565b60606001600001805480602002602001604051908101604052809291908181526020018280548015611eff57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611ee1575b5050505050905090565b6006546004546000906001600160a01b03165b82611f2681612f44565b9350611f3490508184612749565b915060ff60981b82166033609a1b1415611f4d57509091565b611f1c565b33611f656000546001600160a01b031690565b6001600160a01b031614611f8b5760405162461bcd60e51b815260040161083790612e7f565b6000600c8190556040519081527f14936c23481f8e50ff3a556eb966606eaa9dd8180100eb757f3dccb05eb8af4290602001611006565b33611fd56000546001600160a01b031690565b6001600160a01b031614611ffb5760405162461bcd60e51b815260040161083790612e7f565b6120066001826127b6565b6120525760405162461bcd60e51b815260206004820152601860248201527f417574686f7269747920646f6573206e6f7420657869737400000000000000006044820152606401610837565b604080516001600160a01b0383168152600060208201527f9019659af698fad527191eef17d6d00706d88aa9fabff25a08edea756c36199391016110b0565b600e546001600160a01b031633146120f75760405162461bcd60e51b815260206004820152602360248201527f4f776e61626c653a2063616c6c6572206973206e6f742074686520666f756e6460448201526265727360e81b6064820152608401610837565b6001600160a01b03811661215c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610837565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b336121ca6000546001600160a01b031690565b6001600160a01b0316146121f05760405162461bcd60e51b815260040161083790612e7f565b600c54801580159061220157504281105b61221d5760405162461bcd60e51b815260040161083790612e2e565b6001600160a01b0382166122435760405162461bcd60e51b815260040161083790612e59565b600580546001600160a01b038481166001600160a01b031983168117909355604080519190921680825260208201939093527f41d2755f00068d89c23ebc6f1e73ce119a6236a44517ca061f544a3f91c9bca49101610eb4565b6001600160a01b038116600090815260018301602052604081205461230757508154600180820184556000848152602080822090930180546001600160a01b0319166001600160a01b0386169081179091558554908252828601909352604090209190915561230b565b5060005b92915050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17905291516000928392908816916123759190612d7a565b6000604051808303816000865af19150503d80600081146123b2576040519150601f19603f3d011682016040523d82523d6000602084013e6123b7565b606091505b50915091508180156123e15750805115806123e15750808060200190518101906123e19190612cbf565b6124395760405162461bcd60e51b8152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f46416044820152631253115160e21b6064820152608401610837565b505050505050565b604080516000808252602082019092526001600160a01b03841690839060405161246b9190612d7a565b60006040518083038185875af1925050503d80600081146124a8576040519150601f19603f3d011682016040523d82523d6000602084013e6124ad565b606091505b505090508061250a5760405162461bcd60e51b815260206004820152602360248201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960448201526213115160ea1b6064820152608401610837565b505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b179052915160009283929087169161256b9190612d7a565b6000604051808303816000865af19150503d80600081146125a8576040519150601f19603f3d011682016040523d82523d6000602084013e6125ad565b606091505b50915091508180156125d75750805115806125d75750808060200190518101906125d79190612cbf565b6126235760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c4544006044820152606401610837565b5050505050565b60008060008061263985612922565b6040805160008152602081018083528b905260ff8516918101919091526060810183905260808101829052929550909350915060019060a0016020604051602081039080840390855afa158015612694573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b6000604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528360601b60148201526e5af43d82803e903d91602b57fd5bf360881b6028820152826037826000f59150506001600160a01b03811661230b5760405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c65640000000000000000006044820152606401610837565b60006127af838330604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b8152606093841b60148201526f5af43d82803e903d91602b57fd5bf3ff60801b6028820152921b6038830152604c8201526037808220606c830152605591012090565b9392505050565b6001600160a01b038116600090815260018301602052604081205480156129185760006127e4600183612efd565b85549091506000906127f890600190612efd565b9050600086600001828154811061281f57634e487b7160e01b600052603260045260246000fd5b60009182526020909120015487546001600160a01b039091169150819088908590811061285c57634e487b7160e01b600052603260045260246000fd5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055612890836001612ee5565b6001600160a01b038216600090815260018901602052604090205586548790806128ca57634e487b7160e01b600052603160045260246000fd5b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b038816825260018981019091526040822091909155945061230b9350505050565b600091505061230b565b6000806000835160411461293557600080fd5b5050506020810151604082015160609092015160001a92909190565b80356001600160a01b038116811461296857600080fd5b919050565b600082601f83011261297d578081fd5b813567ffffffffffffffff81111561299757612997612f75565b6129aa601f8201601f1916602001612eb4565b8181528460208386010111156129be578283fd5b816020850160208301379081016020019190915292915050565b6000602082840312156129e9578081fd5b6127af82612951565b60008060408385031215612a04578081fd5b612a0d83612951565b9150612a1b60208401612951565b90509250929050565b600080600060608486031215612a38578081fd5b612a4184612951565b9250612a4f60208501612951565b9150612a5d60408501612951565b90509250925092565b60008060008060808587031215612a7b578081fd5b612a8485612951565b9350612a9260208601612951565b9250604085013591506060850135612aa981612f8b565b939692955090935050565b60008060408385031215612ac6578182fd5b612acf83612951565b91506020830135612adf81612f8b565b809150509250929050565b60008060008060008060c08789031215612b02578182fd5b612b0b87612951565b955060208701359450612b2060408801612951565b9350606087013592506080870135915060a087013567ffffffffffffffff80821115612b4a578283fd5b818901915089601f830112612b5d578283fd5b813581811115612b6f57612b6f612f75565b8060051b612b7f60208201612eb4565b80838252602082019150602086018e6020858901011115612b9e578788fd5b8793505b84841015612bdc578581351115612bb7578788fd5b612bc78f602083358a010161296d565b83526001939093019260209283019201612ba2565b508096505050505050509295509295509295565b60008060008060008060c08789031215612c08578182fd5b612c1187612951565b955060208701359450604087013567ffffffffffffffff80821115612c34578384fd5b612c408a838b0161296d565b95506060890135915080821115612c55578384fd5b50612c6289828a0161296d565b935050608087013560ff81168114612c78578283fd5b8092505060a087013590509295509295509295565b600080600060608486031215612ca1578081fd5b612caa84612951565b95602085013595506040909401359392505050565b600060208284031215612cd0578081fd5b81516127af81612f8b565b600060208284031215612cec578081fd5b5035919050565b600060208284031215612d04578081fd5b5051919050565b60008060408385031215612d1d578182fd5b82359150612a1b60208401612951565b60008060408385031215612d3f578182fd5b50508035926020909101359150565b60008151808452612d66816020860160208601612f14565b601f01601f19169290920160200192915050565b60008251612d8c818460208701612f14565b9190910192915050565b6001600160a01b0385168152608060208201819052600090612dba90830186612d4e565b8281036040840152612dcc8186612d4e565b91505060ff8316606083015295945050505050565b6020808252825182820181905260009190848201906040850190845b81811015612e225783516001600160a01b031683529284019291840191600101612dfd565b50909695505050505050565b6020808252601190820152704e6f7420696e207365747570206d6f646560781b604082015260600190565b6020808252600c908201526b5a65726f206164647265737360a01b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b604051601f8201601f1916810167ffffffffffffffff81118282101715612edd57612edd612f75565b604052919050565b60008219821115612ef857612ef8612f5f565b500190565b600082821015612f0f57612f0f612f5f565b500390565b60005b83811015612f2f578181015183820152602001612f17565b83811115612f3e576000848401525b50505050565b6000600019821415612f5857612f58612f5f565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b8015158114612f9957600080fd5b5056fea2646970667358221220e3d1f0948e06154ab386d6bbb9cbc3316e7e13133fff0d3dd4c560e988140f7c64736f6c63430008040033
0x6080604052600436106102255760003560e01c80638da5cb5b11610123578063c21b4865116100ab578063e6074da71161006f578063e6074da7146106c5578063f0f20127146106f2578063f2fde38b14610712578063f46901ed14610732578063fa0876711461075257600080fd5b8063c21b486514610601578063cda7f83f14610623578063d04567f314610655578063d544e0101461066a578063df42fd361461068a57600080fd5b8063a02a66ec116100f2578063a02a66ec1461056b578063abb718631461058b578063b2e916d6146105a1578063bfd06304146105c1578063c0c53b8b146105e157600080fd5b80638da5cb5b146104f85780638f715701146105165780638f9952341461052b578063960bfe041461054b57600080fd5b80633cbdef56116101b15780635e14e319116101755780635e14e3191461045e57806362a5af3b1461047e5780636a28f000146104935780636b9f97ef146104a85780636c65fd6a146104c857600080fd5b80633cbdef56146103d5578063411b007e146103f557806342cde4e8146104155780635c5b9f8f1461042b5780635d799f871461043e57600080fd5b80631c673ab8116101f85780631c673ab8146102d157806326defa73146103125780632b1a7b58146103345780632f3a3d5d146103a05780633af84ac4146103c057600080fd5b8063017e7e581461022a578063054f7d9c1461026757806313bf81261461029857806316a27ecd146102bc575b600080fd5b34801561023657600080fd5b5060055461024a906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027357600080fd5b5060055461028890600160a01b900460ff1681565b604051901515815260200161025e565b3480156102a457600080fd5b506102ae600c5481565b60405190815260200161025e565b3480156102c857600080fd5b5061024a6107ad565b3480156102dd57600080fd5b5061024a6102ec366004612d0b565b60096020908152600092835260408084209091529082529020546001600160a01b031681565b34801561031e57600080fd5b5061033261032d3660046129d8565b610846565b005b34801561034057600080fd5b5061038161034f366004612d0b565b60086020908152600092835260408084209091529082529020546001600160a01b03811690600160a01b900460ff1682565b604080516001600160a01b03909316835290151560208301520161025e565b3480156103ac57600080fd5b5060045461024a906001600160a01b031681565b3480156103cc57600080fd5b506102ae6109bf565b3480156103e157600080fd5b506103326103f03660046129d8565b6109cf565b34801561040157600080fd5b50600e5461024a906001600160a01b031681565b34801561042157600080fd5b506102ae60035481565b610332610439366004612c8d565b610adb565b34801561044a57600080fd5b506103326104593660046129f2565b610d8e565b34801561046a57600080fd5b50610332610479366004612ab4565b610ec1565b34801561048a57600080fd5b50610332610f7c565b34801561049f57600080fd5b50610332611010565b3480156104b457600080fd5b506103326104c33660046129d8565b6110bb565b3480156104d457600080fd5b506102886104e33660046129d8565b600b6020526000908152604090205460ff1681565b34801561050457600080fd5b506000546001600160a01b031661024a565b34801561052257600080fd5b506103326111a6565b34801561053757600080fd5b50610332610546366004612aea565b611221565b34801561055757600080fd5b50610332610566366004612cdb565b6116ea565b34801561057757600080fd5b506103326105863660046129d8565b6117d8565b34801561059757600080fd5b506102ae60065481565b3480156105ad57600080fd5b506103326105bc366004612a66565b611861565b3480156105cd57600080fd5b506103326105dc366004612bf0565b6119fd565b3480156105ed57600080fd5b506103326105fc366004612a24565b611d82565b34801561060d57600080fd5b50610616611ea4565b60405161025e9190612de1565b34801561062f57600080fd5b50610638611f09565b604080519283526001600160a01b0390911660208301520161025e565b34801561066157600080fd5b50610332611f52565b34801561067657600080fd5b506103326106853660046129d8565b611fc2565b34801561069657600080fd5b506102886106a5366004612d2d565b600760209081526000928352604080842090915290825290205460ff1681565b3480156106d157600080fd5b506102ae6106e03660046129d8565b600a6020526000908152604090205481565b3480156106fe57600080fd5b50600f5461024a906001600160a01b031681565b34801561071e57600080fd5b5061033261072d3660046129d8565b612091565b34801561073e57600080fd5b5061033261074d3660046129d8565b6121b7565b34801561075e57600080fd5b50600d54610785906001600160a01b03811690600160a01b900467ffffffffffffffff1682565b604080516001600160a01b03909316835267ffffffffffffffff90911660208301520161025e565b60408051808201909152600d546001600160a01b0381168252600160a01b900467ffffffffffffffff166020820181905260009190421180156107f9575080516001600160a01b031615155b6108405760405162461bcd60e51b8152602060048201526013602482015272155c19dc985919481b9bdd08185b1b1bddd959606a1b60448201526064015b60405180910390fd5b51919050565b336108596000546001600160a01b031690565b6001600160a01b03161461087f5760405162461bcd60e51b815260040161083790612e7f565b600c54801580159061089057504281105b6108ac5760405162461bcd60e51b815260040161083790612e2e565b6001600160a01b0382166108d25760405162461bcd60e51b815260040161083790612e59565b60ff6108dd60015490565b106109215760405162461bcd60e51b8152602060048201526014602482015273546f6f206d616e7920617574686f72697469657360601b6044820152606401610837565b61092c60018361229d565b6109785760405162461bcd60e51b815260206004820152601760248201527f417574686f7269747920616c72656164792061646465640000000000000000006044820152606401610837565b604080516001600160a01b0384168152600160208201527f9019659af698fad527191eef17d6d00706d88aa9fabff25a08edea756c36199391015b60405180910390a15050565b60006109ca60015490565b905090565b600e546001600160a01b03163314610a295760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f742074686520666f756e646572730000000000006044820152606401610837565b6001600160a01b038116610a7f5760405162461bcd60e51b815260206004820152601d60248201527f6e6577206f776e657220697320746865207a65726f20616464726573730000006044820152606401610837565b600e546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600e80546001600160a01b0319166001600160a01b0392909216919091179055565b600554600160a01b900460ff1615610b285760405162461bcd60e51b815260206004820152601060248201526f213934b233b29034b990333937bd32b760811b6044820152606401610837565b60008181526008602090815260408083206001600160a01b03878116855290835292819020815180830190925254928316808252600160a01b90930460ff1615159181019190915290610bb05760405162461bcd60e51b815260206004820152601060248201526f2a3432b9329034b9903737903830b4b960811b6044820152606401610837565b34601f6001600160a01b03861611610c115734841115610c005760405162461bcd60e51b815260206004820152600b60248201526a57726f6e672076616c756560a81b6044820152606401610837565b610c0a8482612efd565b9050610ce4565b816020015115610ca15760405163079cc67960e41b8152336004820152602481018590526001600160a01b038616906379cc679090604401602060405180830381600087803b158015610c6357600080fd5b505af1158015610c77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9b9190612cbf565b50610ce4565b6001600160a01b0385166000908152600a602052604081208054869290610cc9908490612ee5565b90915550610ce490506001600160a01b038616333087612311565b8015610d3657600554610d00906001600160a01b031682612441565b60405181815233907f7bd3aa7d673767f759ebf216e7f6c12844986c661ae6e0f1d988cf7eb7394d1d9060200160405180910390a25b815160408051868152602081018690526001600160a01b0392831681830152905133928816917ff5dd9317b9e63ac316ce44acc85f670b54b339cfa3e9076e1dd55065b922314b919081900360600190a35050505050565b33610da16000546001600160a01b031690565b6001600160a01b031614610dc75760405162461bcd60e51b815260040161083790612e7f565b6001600160a01b0382166000818152600a60205260408082205490516370a0823160e01b8152306004820152919290916370a082319060240160206040518083038186803b158015610e1857600080fd5b505afa158015610e2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e509190612cf3565b610e5a9190612efd565b9050610e706001600160a01b038416838361250f565b604080516001600160a01b038086168252841660208201529081018290527f2c5650189f92c7058626efc371b51fe7e71f37dacb696bc7cad0b1320931974a906060015b60405180910390a1505050565b33610ed46000546001600160a01b031690565b6001600160a01b031614610efa5760405162461bcd60e51b815260040161083790612e7f565b6001600160a01b038216610f205760405162461bcd60e51b815260040161083790612e59565b6001600160a01b0382166000818152600b6020908152604091829020805460ff19168515159081179091558251938452908301527feabe320fe7911eab2e5125ac393caa5937659b712f0c3ac43316c61d4bc0880191016109b3565b6000546001600160a01b0316331480610fa357503360009081526002602052604090205415155b80610fbd5750336000908152600b602052604090205460ff165b610fc657600080fd5b6005805460ff60a01b1916600160a01b179055604051600181527f59800d968fcce138300a0019410b4b75041610d65b3cdc5f31656b03ed14912e906020015b60405180910390a1565b336110236000546001600160a01b031690565b6001600160a01b0316146110495760405162461bcd60e51b815260040161083790612e7f565b600c54801580159061105a57504281105b6110765760405162461bcd60e51b815260040161083790612e2e565b6005805460ff60a01b19169055604051600081527f59800d968fcce138300a0019410b4b75041610d65b3cdc5f31656b03ed14912e906020015b60405180910390a150565b336110ce6000546001600160a01b031690565b6001600160a01b0316146110f45760405162461bcd60e51b815260040161083790612e7f565b6001600160a01b03811661111a5760405162461bcd60e51b815260040161083790612e59565b6000611129426203f480612ee5565b6040805180820182526001600160a01b03851680825267ffffffffffffffff84166020928301819052600d80546001600160e01b0319168317600160a01b90920291909117905582519081529081018390529192507fd990f8f4f90cd3307c50ab3d095cfb65516e999b7584aee60c0af83eb48118de91016109b3565b336111b96000546001600160a01b031690565b6001600160a01b0316146111df5760405162461bcd60e51b815260040161083790612e7f565b6111ec4262015180612ee5565b600c8190556040519081527f14936c23481f8e50ff3a556eb966606eaa9dd8180100eb757f3dccb05eb8af4290602001611006565b600554600160a01b900460ff161561126e5760405162461bcd60e51b815260206004820152601060248201526f213934b233b29034b990333937bd32b760811b6044820152606401610837565b600082815260076020908152604080832088845290915290205460ff16156112d85760405162461bcd60e51b815260206004820152601d60248201527f5472616e73616374696f6e20616c72656164792070726f6365737365640000006044820152606401610837565b60008281526008602090815260408083206001600160a01b038a8116855290835292819020815180830190925254928316808252600160a01b90930460ff16151591810191909152906113605760405162461bcd60e51b815260206004820152601060248201526f2a3432b9329034b9903737903830b4b960811b6044820152606401610837565b60008381526007602090815260408083208984528252808320805460ff19166001179055600f54815160608c811b6bffffffffffffffffffffffff1990811683870152908b901b16603482015260488101899052606881018b9052608881018890524660a8808301919091528351808303909101815260c8820184528051908501207f19457468657265756d205369676e6564204d6573736167653a0a33320000000060e88301526101048083019190915283518083039091018152610124909101909252815191909201206001600160a01b039091169180805b86518110156114f15760006114778589848151811061146a57634e487b7160e01b600052603260045260246000fd5b602002602001015161262a565b9050856001600160a01b0316816001600160a01b0316141561149857600095505b6001600160a01b0381166000908152600260205260409020546001811b81158015906114c45750848116155b156114db5793841793856114d781612f44565b9650505b50505080806114e990612f44565b91505061143b565b508160035411156115445760405162461bcd60e51b815260206004820152601760248201527f52657175697265206d6f7265207369676e6174757265730000000000000000006044820152606401610837565b6001600160a01b038416156115a75760405162461bcd60e51b8152602060048201526024808201527f54686520726571756972656420617574686f7269747920646f6573206e6f742060448201526339b4b3b760e11b6064820152608401610837565b601f6001600160a01b038c16116115d0576115cb6001600160a01b038a1689612441565b611683565b846020015115611641576040516340c10f1960e01b81526001600160a01b038a81166004830152602482018a90528c16906340c10f1990604401600060405180830381600087803b15801561162457600080fd5b505af1158015611638573d6000803e3d6000fd5b50505050611683565b6001600160a01b038b166000908152600a6020526040812080548a9290611669908490612efd565b9091555061168390506001600160a01b038c168a8a61250f565b8451604080518a8152602081018d90529081018990526001600160a01b039182166060820152818b16918d16907fc9e45b9f44cc745053533754942aa17989494514aeadbb624b4b5e34a0ce5fc29060800160405180910390a35050505050505050505050565b336116fd6000546001600160a01b031690565b6001600160a01b0316146117235760405162461bcd60e51b815260040161083790612e7f565b600c54801580159061173457504281105b6117505760405162461bcd60e51b815260040161083790612e2e565b60035415801590611765575060015460035411155b6117a35760405162461bcd60e51b815260206004820152600f60248201526e15dc9bdb99c81d1a1c995cda1bdb19608a1b6044820152606401610837565b60038290556040518281527f46e8115bf463f9c29a9424fe152addef1bfaf2b43180d19bb7c2c78cc0ff1ebf906020016109b3565b336117eb6000546001600160a01b031690565b6001600160a01b0316146118115760405162461bcd60e51b815260040161083790612e7f565b600c54801580159061182257504281105b61183e5760405162461bcd60e51b815260040161083790612e2e565b50600f80546001600160a01b0319166001600160a01b0392909216919091179055565b336118746000546001600160a01b031690565b6001600160a01b03161461189a5760405162461bcd60e51b815260040161083790612e7f565b600c5480158015906118ab57504281105b6118c75760405162461bcd60e51b815260040161083790612e2e565b60008381526008602090815260408083206001600160a01b038981168552925290912054161561192e5760405162461bcd60e51b815260206004820152601260248201527114185a5c88185b1c9958591e48195e1a5cdd60721b6044820152606401610837565b6040805180820182526001600160a01b03868116808352851515602080850182815260008a8152600883528781208d87168083529084528882209751885493511515600160a01b026001600160a81b0319909416971696909617919091179095558885526009815285852083865281529385902080546001600160a01b0319168417905584519283529282019290925291820152606081018490527f4e37907d987e2429cd26da336a410ffe2d567dc727ed293e6c500023525af2959060800160405180910390a15050505050565b33611a106000546001600160a01b031690565b6001600160a01b031614611a365760405162461bcd60e51b815260040161083790612e7f565b600c548015801590611a4757504281105b611a635760405162461bcd60e51b815260040161083790612e2e565b6001600160a01b038716611aaf5760405162461bcd60e51b815260206004820152601360248201527257726f6e6720746f6b656e206164647265737360681b6044820152606401610837565b60008681526009602090815260408083206001600160a01b038b811685529252909120541615611b215760405162461bcd60e51b815260206004820152601a60248201527f5468697320746f6b656e20616c726561647920777261707065640000000000006044820152606401610837565b6006548211611b7e5760405162461bcd60e51b815260206004820152602360248201527f4e6f6e6365206d75737420626520686967686572207468656e20777261704e6f6044820152626e636560e81b6064820152608401610837565b6006829055600454600090611b9c906001600160a01b0316846126a9565b9050806001600160a01b031663f6d2ee86611bbf6000546001600160a01b031690565b8888886040518563ffffffff1660e01b8152600401611be19493929190612d96565b600060405180830381600087803b158015611bfb57600080fd5b505af1158015611c0f573d6000803e3d6000fd5b505050506040518060400160405280896001600160a01b0316815260200160011515815250600860008981526020019081526020016000206000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160000160146101000a81548160ff021916908315150217905550905050806009600089815260200190815260200160002060008a6001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055507f4e37907d987e2429cd26da336a410ffe2d567dc727ed293e6c500023525af2958160018a8a604051611d7094939291906001600160a01b039485168152921515602084015292166040820152606081019190915260800190565b60405180910390a15050505050505050565b6001600160a01b03831615801590611da257506001600160a01b03821615155b8015611db75750600e546001600160a01b0316155b611dc057600080fd5b600080546001600160a01b038086166001600160a01b0319928316178355600e8054918616919092161790556040513391907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36001600160a01b038116611e6d5760405162461bcd60e51b815260206004820152601960248201527f57726f6e6720746f6b656e496d706c656d656e746174696f6e000000000000006044820152606401610837565b600480546001600160a01b039092166001600160a01b03199283161790556005805490911633179055505060016003819055600c55565b60606001600001805480602002602001604051908101604052809291908181526020018280548015611eff57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611ee1575b5050505050905090565b6006546004546000906001600160a01b03165b82611f2681612f44565b9350611f3490508184612749565b915060ff60981b82166033609a1b1415611f4d57509091565b611f1c565b33611f656000546001600160a01b031690565b6001600160a01b031614611f8b5760405162461bcd60e51b815260040161083790612e7f565b6000600c8190556040519081527f14936c23481f8e50ff3a556eb966606eaa9dd8180100eb757f3dccb05eb8af4290602001611006565b33611fd56000546001600160a01b031690565b6001600160a01b031614611ffb5760405162461bcd60e51b815260040161083790612e7f565b6120066001826127b6565b6120525760405162461bcd60e51b815260206004820152601860248201527f417574686f7269747920646f6573206e6f7420657869737400000000000000006044820152606401610837565b604080516001600160a01b0383168152600060208201527f9019659af698fad527191eef17d6d00706d88aa9fabff25a08edea756c36199391016110b0565b600e546001600160a01b031633146120f75760405162461bcd60e51b815260206004820152602360248201527f4f776e61626c653a2063616c6c6572206973206e6f742074686520666f756e6460448201526265727360e81b6064820152608401610837565b6001600160a01b03811661215c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610837565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b336121ca6000546001600160a01b031690565b6001600160a01b0316146121f05760405162461bcd60e51b815260040161083790612e7f565b600c54801580159061220157504281105b61221d5760405162461bcd60e51b815260040161083790612e2e565b6001600160a01b0382166122435760405162461bcd60e51b815260040161083790612e59565b600580546001600160a01b038481166001600160a01b031983168117909355604080519190921680825260208201939093527f41d2755f00068d89c23ebc6f1e73ce119a6236a44517ca061f544a3f91c9bca49101610eb4565b6001600160a01b038116600090815260018301602052604081205461230757508154600180820184556000848152602080822090930180546001600160a01b0319166001600160a01b0386169081179091558554908252828601909352604090209190915561230b565b5060005b92915050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17905291516000928392908816916123759190612d7a565b6000604051808303816000865af19150503d80600081146123b2576040519150601f19603f3d011682016040523d82523d6000602084013e6123b7565b606091505b50915091508180156123e15750805115806123e15750808060200190518101906123e19190612cbf565b6124395760405162461bcd60e51b8152602060048201526024808201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f46416044820152631253115160e21b6064820152608401610837565b505050505050565b604080516000808252602082019092526001600160a01b03841690839060405161246b9190612d7a565b60006040518083038185875af1925050503d80600081146124a8576040519150601f19603f3d011682016040523d82523d6000602084013e6124ad565b606091505b505090508061250a5760405162461bcd60e51b815260206004820152602360248201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960448201526213115160ea1b6064820152608401610837565b505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b179052915160009283929087169161256b9190612d7a565b6000604051808303816000865af19150503d80600081146125a8576040519150601f19603f3d011682016040523d82523d6000602084013e6125ad565b606091505b50915091508180156125d75750805115806125d75750808060200190518101906125d79190612cbf565b6126235760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c4544006044820152606401610837565b5050505050565b60008060008061263985612922565b6040805160008152602081018083528b905260ff8516918101919091526060810183905260808101829052929550909350915060019060a0016020604051602081039080840390855afa158015612694573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b6000604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81528360601b60148201526e5af43d82803e903d91602b57fd5bf360881b6028820152826037826000f59150506001600160a01b03811661230b5760405162461bcd60e51b815260206004820152601760248201527f455243313136373a2063726561746532206661696c65640000000000000000006044820152606401610837565b60006127af838330604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b8152606093841b60148201526f5af43d82803e903d91602b57fd5bf3ff60801b6028820152921b6038830152604c8201526037808220606c830152605591012090565b9392505050565b6001600160a01b038116600090815260018301602052604081205480156129185760006127e4600183612efd565b85549091506000906127f890600190612efd565b9050600086600001828154811061281f57634e487b7160e01b600052603260045260246000fd5b60009182526020909120015487546001600160a01b039091169150819088908590811061285c57634e487b7160e01b600052603260045260246000fd5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055612890836001612ee5565b6001600160a01b038216600090815260018901602052604090205586548790806128ca57634e487b7160e01b600052603160045260246000fd5b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b038816825260018981019091526040822091909155945061230b9350505050565b600091505061230b565b6000806000835160411461293557600080fd5b5050506020810151604082015160609092015160001a92909190565b80356001600160a01b038116811461296857600080fd5b919050565b600082601f83011261297d578081fd5b813567ffffffffffffffff81111561299757612997612f75565b6129aa601f8201601f1916602001612eb4565b8181528460208386010111156129be578283fd5b816020850160208301379081016020019190915292915050565b6000602082840312156129e9578081fd5b6127af82612951565b60008060408385031215612a04578081fd5b612a0d83612951565b9150612a1b60208401612951565b90509250929050565b600080600060608486031215612a38578081fd5b612a4184612951565b9250612a4f60208501612951565b9150612a5d60408501612951565b90509250925092565b60008060008060808587031215612a7b578081fd5b612a8485612951565b9350612a9260208601612951565b9250604085013591506060850135612aa981612f8b565b939692955090935050565b60008060408385031215612ac6578182fd5b612acf83612951565b91506020830135612adf81612f8b565b809150509250929050565b60008060008060008060c08789031215612b02578182fd5b612b0b87612951565b955060208701359450612b2060408801612951565b9350606087013592506080870135915060a087013567ffffffffffffffff80821115612b4a578283fd5b818901915089601f830112612b5d578283fd5b813581811115612b6f57612b6f612f75565b8060051b612b7f60208201612eb4565b80838252602082019150602086018e6020858901011115612b9e578788fd5b8793505b84841015612bdc578581351115612bb7578788fd5b612bc78f602083358a010161296d565b83526001939093019260209283019201612ba2565b508096505050505050509295509295509295565b60008060008060008060c08789031215612c08578182fd5b612c1187612951565b955060208701359450604087013567ffffffffffffffff80821115612c34578384fd5b612c408a838b0161296d565b95506060890135915080821115612c55578384fd5b50612c6289828a0161296d565b935050608087013560ff81168114612c78578283fd5b8092505060a087013590509295509295509295565b600080600060608486031215612ca1578081fd5b612caa84612951565b95602085013595506040909401359392505050565b600060208284031215612cd0578081fd5b81516127af81612f8b565b600060208284031215612cec578081fd5b5035919050565b600060208284031215612d04578081fd5b5051919050565b60008060408385031215612d1d578182fd5b82359150612a1b60208401612951565b60008060408385031215612d3f578182fd5b50508035926020909101359150565b60008151808452612d66816020860160208601612f14565b601f01601f19169290920160200192915050565b60008251612d8c818460208701612f14565b9190910192915050565b6001600160a01b0385168152608060208201819052600090612dba90830186612d4e565b8281036040840152612dcc8186612d4e565b91505060ff8316606083015295945050505050565b6020808252825182820181905260009190848201906040850190845b81811015612e225783516001600160a01b031683529284019291840191600101612dfd565b50909695505050505050565b6020808252601190820152704e6f7420696e207365747570206d6f646560781b604082015260600190565b6020808252600c908201526b5a65726f206164647265737360a01b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b604051601f8201601f1916810167ffffffffffffffff81118282101715612edd57612edd612f75565b604052919050565b60008219821115612ef857612ef8612f5f565b500190565b600082821015612f0f57612f0f612f5f565b500390565b60005b83811015612f2f578181015183820152602001612f17565b83811115612f3e576000848401525b50505050565b6000600019821415612f5857612f58612f5f565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b8015158114612f9957600080fd5b5056fea2646970667358221220e3d1f0948e06154ab386d6bbb9cbc3316e7e13133fff0d3dd4c560e988140f7c64736f6c63430008040033