6080604052600160005560405180606001604052806036815260200162004ac760369139600890805190602001906200003a929190620001f8565b506000600960006101000a81548160ff0219169083151502179055503480156200006357600080fd5b506040518060400160405280600d81526020017f506978656c4469766973696f6e000000000000000000000000000000000000008152506040518060400160405280600381526020017f50584400000000000000000000000000000000000000000000000000000000008152508160019080519060200190620000e8929190620001f8565b50806002908051906020019062000101929190620001f8565b50505062000124620001186200012a60201b60201c565b6200013260201b60201c565b6200030d565b600033905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200020690620002a8565b90600052602060002090601f0160209004810192826200022a576000855562000276565b82601f106200024557805160ff191683800117855562000276565b8280016001018555821562000276579182015b828111156200027557825182559160200191906001019062000258565b5b50905062000285919062000289565b5090565b5b80821115620002a45760008160009055506001016200028a565b5090565b60006002820490506001821680620002c157607f821691505b60208210811415620002d857620002d7620002de565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6147aa806200031d6000396000f3fe6080604052600436106101e35760003560e01c80636c0360eb11610102578063b88d4fde11610095578063e985e9c511610064578063e985e9c5146106d5578063f2fde38b14610712578063f43a22dc1461073b578063fa30297e14610766576101e3565b8063b88d4fde14610619578063c668286214610642578063c87b56dd1461066d578063cd7c0326146106aa576101e3565b806395d89b41116100d157806395d89b411461057e578063a035b1fe146105a9578063a0712d68146105d4578063a22cb465146105f0576101e3565b80636c0360eb146104d457806370a08231146104ff578063715018a61461053c5780638da5cb5b14610553576101e3565b80632f745c591161017a5780634f6ccce7116101495780634f6ccce71461040657806355f804b3146104435780635c975abb1461046c5780636352211e14610497576101e3565b80632f745c591461035e57806332cb6b0c1461039b5780633ccfd60b146103c657806342842e0e146103dd576101e3565b8063095ea7b3116101b6578063095ea7b3146102b65780630f2cdd6c146102df57806318160ddd1461030a57806323b872dd14610335576101e3565b806301ffc9a7146101e857806302329a291461022557806306fdde031461024e578063081812fc14610279575b600080fd5b3480156101f457600080fd5b5061020f600480360381019061020a91906130ac565b6107a3565b60405161021c9190613779565b60405180910390f35b34801561023157600080fd5b5061024c6004803603810190610247919061307f565b6108ed565b005b34801561025a57600080fd5b50610263610986565b6040516102709190613794565b60405180910390f35b34801561028557600080fd5b506102a0600480360381019061029b919061317c565b610a18565b6040516102ad9190613712565b60405180910390f35b3480156102c257600080fd5b506102dd60048036038101906102d8919061303f565b610a9d565b005b3480156102eb57600080fd5b506102f4610bb6565b6040516103019190613b16565b60405180910390f35b34801561031657600080fd5b5061031f610bbb565b60405161032c9190613b16565b60405180910390f35b34801561034157600080fd5b5061035c60048036038101906103579190612f29565b610bc4565b005b34801561036a57600080fd5b506103856004803603810190610380919061303f565b610bd4565b6040516103929190613b16565b60405180910390f35b3480156103a757600080fd5b506103b0610dd2565b6040516103bd9190613b16565b60405180910390f35b3480156103d257600080fd5b506103db610dd8565b005b3480156103e957600080fd5b5061040460048036038101906103ff9190612f29565b610f10565b005b34801561041257600080fd5b5061042d6004803603810190610428919061317c565b610f30565b60405161043a9190613b16565b60405180910390f35b34801561044f57600080fd5b5061046a60048036038101906104659190613133565b610f83565b005b34801561047857600080fd5b50610481611019565b60405161048e9190613779565b60405180910390f35b3480156104a357600080fd5b506104be60048036038101906104b9919061317c565b61102c565b6040516104cb9190613712565b60405180910390f35b3480156104e057600080fd5b506104e9611042565b6040516104f69190613794565b60405180910390f35b34801561050b57600080fd5b5061052660048036038101906105219190612ebc565b6110d0565b6040516105339190613b16565b60405180910390f35b34801561054857600080fd5b506105516111b9565b005b34801561055f57600080fd5b50610568611241565b6040516105759190613712565b60405180910390f35b34801561058a57600080fd5b5061059361126b565b6040516105a09190613794565b60405180910390f35b3480156105b557600080fd5b506105be6112fd565b6040516105cb9190613b16565b60405180910390f35b6105ee60048036038101906105e9919061317c565b611302565b005b3480156105fc57600080fd5b5061061760048036038101906106129190612fff565b6115ea565b005b34801561062557600080fd5b50610640600480360381019061063b9190612f7c565b61176b565b005b34801561064e57600080fd5b506106576117c7565b6040516106649190613794565b60405180910390f35b34801561067957600080fd5b50610694600480360381019061068f919061317c565b611800565b6040516106a19190613794565b60405180910390f35b3480156106b657600080fd5b506106bf6118df565b6040516106cc9190613712565b60405180910390f35b3480156106e157600080fd5b506106fc60048036038101906106f79190612ee9565b6118f7565b6040516107099190613779565b60405180910390f35b34801561071e57600080fd5b5061073960048036038101906107349190612ebc565b6119eb565b005b34801561074757600080fd5b50610750611ae3565b60405161075d9190613b16565b60405180910390f35b34801561077257600080fd5b5061078d60048036038101906107889190612ebc565b611ae8565b60405161079a9190613b16565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061086e57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108d657507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108e657506108e582611b00565b5b9050919050565b6108f5611b6a565b73ffffffffffffffffffffffffffffffffffffffff16610913611241565b73ffffffffffffffffffffffffffffffffffffffff1614610969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096090613956565b60405180910390fd5b80600960006101000a81548160ff02191690831515021790555050565b60606001805461099590613e84565b80601f01602080910402602001604051908101604052809291908181526020018280546109c190613e84565b8015610a0e5780601f106109e357610100808354040283529160200191610a0e565b820191906000526020600020905b8154815290600101906020018083116109f157829003601f168201915b5050505050905090565b6000610a2382611b72565b610a62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5990613ad6565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610aa88261102c565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b10906139d6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b38611b6a565b73ffffffffffffffffffffffffffffffffffffffff161480610b675750610b6681610b61611b6a565b6118f7565b5b610ba6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9d906138b6565b60405180910390fd5b610bb1838383611b7f565b505050565b601481565b60008054905090565b610bcf838383611c31565b505050565b6000610bdf836110d0565b8210610c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c17906137b6565b60405180910390fd5b6000610c2a610bbb565b905060008060005b83811015610d90576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610d2457806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d7c5786841415610d6d578195505050505050610dcc565b8380610d7890613ee7565b9450505b508080610d8890613ee7565b915050610c32565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc390613a96565b60405180910390fd5b92915050565b6107d081565b610de0611b6a565b73ffffffffffffffffffffffffffffffffffffffff16610dfe611241565b73ffffffffffffffffffffffffffffffffffffffff1614610e54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4b90613956565b60405180910390fd5b60004790506000610e63611b6a565b73ffffffffffffffffffffffffffffffffffffffff1682604051610e86906136fd565b60006040518083038185875af1925050503d8060008114610ec3576040519150601f19603f3d011682016040523d82523d6000602084013e610ec8565b606091505b5050905080610f0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0390613a76565b60405180910390fd5b5050565b610f2b8383836040518060200160405280600081525061176b565b505050565b6000610f3a610bbb565b8210610f7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7290613876565b60405180910390fd5b819050919050565b610f8b611b6a565b73ffffffffffffffffffffffffffffffffffffffff16610fa9611241565b73ffffffffffffffffffffffffffffffffffffffff1614610fff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff690613956565b60405180910390fd5b8060089080519060200190611015929190612c81565b5050565b600960009054906101000a900460ff1681565b6000611037826121d8565b600001519050919050565b6008805461104f90613e84565b80601f016020809104026020016040519081016040528092919081815260200182805461107b90613e84565b80156110c85780601f1061109d576101008083540402835291602001916110c8565b820191906000526020600020905b8154815290600101906020018083116110ab57829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611141576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611138906138f6565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b6111c1611b6a565b73ffffffffffffffffffffffffffffffffffffffff166111df611241565b73ffffffffffffffffffffffffffffffffffffffff1614611235576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122c90613956565b60405180910390fd5b61123f6000612333565b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606002805461127a90613e84565b80601f01602080910402602001604051908101604052809291908181526020018280546112a690613e84565b80156112f35780601f106112c8576101008083540402835291602001916112f3565b820191906000526020600020905b8154815290600101906020018083116112d657829003601f168201915b5050505050905090565b600081565b600061130c611b6a565b9050600960009054906101000a900460ff161561135e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611355906137d6565b60405180910390fd5b81611367610bbb565b6113719190613c61565b6107d010156113b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ac906138d6565b60405180910390fd5b600082116113f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ef90613836565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145d90613af6565b60405180910390fd5b601482600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114b39190613c61565b11156114f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114eb90613ab6565b60405180910390fd5b8160051015611538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152f90613856565b60405180910390fd5b346000836115469190613ce8565b14611586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157d906139b6565b60405180910390fd5b81600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115d59190613c61565b925050819055506115e681836123f9565b5050565b6115f2611b6a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611660576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165790613976565b60405180910390fd5b806006600061166d611b6a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661171a611b6a565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161175f9190613779565b60405180910390a35050565b611776848484611c31565b61178284848484612417565b6117c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b890613a16565b60405180910390fd5b50505050565b6040518060400160405280600581526020017f2e6a736f6e00000000000000000000000000000000000000000000000000000081525081565b606061180b82611b72565b61184a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184190613916565b60405180910390fd5b60006008805461185990613e84565b90501161187557604051806020016040528060008152506118d8565b6008611880836125ae565b6040518060400160405280600581526020017f2e6a736f6e0000000000000000000000000000000000000000000000000000008152506040516020016118c8939291906136cc565b6040516020818303038152906040525b9050919050565b73a5409ec958c83c3f309868babaca7c86dcb077c181565b60008073a5409ec958c83c3f309868babaca7c86dcb077c190508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663c4552791866040518263ffffffff1660e01b81526004016119619190613712565b60206040518083038186803b15801561197957600080fd5b505afa15801561198d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b19190613106565b73ffffffffffffffffffffffffffffffffffffffff1614156119d75760019150506119e5565b6119e1848461270f565b9150505b92915050565b6119f3611b6a565b73ffffffffffffffffffffffffffffffffffffffff16611a11611241565b73ffffffffffffffffffffffffffffffffffffffff1614611a67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5e90613956565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ad7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ace906137f6565b60405180910390fd5b611ae081612333565b50565b600581565b600a6020528060005260406000206000915090505481565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b6000805482109050919050565b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000611c3c826121d8565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16611c63611b6a565b73ffffffffffffffffffffffffffffffffffffffff161480611cbf5750611c88611b6a565b73ffffffffffffffffffffffffffffffffffffffff16611ca784610a18565b73ffffffffffffffffffffffffffffffffffffffff16145b80611cdb5750611cda8260000151611cd5611b6a565b6118f7565b5b905080611d1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1490613996565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614611d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8690613936565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611dff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df690613896565b60405180910390fd5b611e0c85858560016127a3565b611e1c6000848460000151611b7f565b6001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506003600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555090505060006001846120229190613c61565b9050600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156121685761209881611b72565b15612167576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506003600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46121d086868660016127a9565b505050505050565b6121e0612d07565b6121e982611b72565b612228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221f90613816565b60405180910390fd5b60008290505b6000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461231a57809250505061232e565b50808061232690613e5a565b91505061222e565b919050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6124138282604051806020016040528060008152506127af565b5050565b60006124388473ffffffffffffffffffffffffffffffffffffffff16612c6e565b156125a1578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612461611b6a565b8786866040518563ffffffff1660e01b8152600401612483949392919061372d565b602060405180830381600087803b15801561249d57600080fd5b505af19250505080156124ce57506040513d601f19601f820116820180604052508101906124cb91906130d9565b60015b612551573d80600081146124fe576040519150601f19603f3d011682016040523d82523d6000602084013e612503565b606091505b50600081511415612549576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254090613a16565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506125a6565b600190505b949350505050565b606060008214156125f6576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061270a565b600082905060005b6000821461262857808061261190613ee7565b915050600a826126219190613cb7565b91506125fe565b60008167ffffffffffffffff8111156126445761264361401d565b5b6040519080825280601f01601f1916602001820160405280156126765781602001600182028036833780820191505090505b5090505b600085146127035760018261268f9190613d42565b9150600a8561269e9190613f30565b60306126aa9190613c61565b60f81b8183815181106126c0576126bf613fee565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856126fc9190613cb7565b945061267a565b8093505050505b919050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b50505050565b50505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612825576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281c90613a56565b60405180910390fd5b61282e81611b72565b1561286e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286590613a36565b60405180910390fd5b600083116128b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a8906139f6565b60405180910390fd5b6128be60008583866127a3565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681525050905060405180604001604052808583600001516129bb9190613c1b565b6fffffffffffffffffffffffffffffffff1681526020018583602001516129e29190613c1b565b6fffffffffffffffffffffffffffffffff16815250600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506003600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b85811015612c5157818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612bf16000888488612417565b612c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2790613a16565b60405180910390fd5b8180612c3b90613ee7565b9250508080612c4990613ee7565b915050612b80565b5080600081905550612c6660008785886127a9565b505050505050565b600080823b905060008111915050919050565b828054612c8d90613e84565b90600052602060002090601f016020900481019282612caf5760008555612cf6565b82601f10612cc857805160ff1916838001178555612cf6565b82800160010185558215612cf6579182015b82811115612cf5578251825591602001919060010190612cda565b5b509050612d039190612d41565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b80821115612d5a576000816000905550600101612d42565b5090565b6000612d71612d6c84613b56565b613b31565b905082815260208101848484011115612d8d57612d8c614051565b5b612d98848285613e18565b509392505050565b6000612db3612dae84613b87565b613b31565b905082815260208101848484011115612dcf57612dce614051565b5b612dda848285613e18565b509392505050565b600081359050612df181614701565b92915050565b600081359050612e0681614718565b92915050565b600081359050612e1b8161472f565b92915050565b600081519050612e308161472f565b92915050565b600082601f830112612e4b57612e4a61404c565b5b8135612e5b848260208601612d5e565b91505092915050565b600081519050612e7381614746565b92915050565b600082601f830112612e8e57612e8d61404c565b5b8135612e9e848260208601612da0565b91505092915050565b600081359050612eb68161475d565b92915050565b600060208284031215612ed257612ed161405b565b5b6000612ee084828501612de2565b91505092915050565b60008060408385031215612f0057612eff61405b565b5b6000612f0e85828601612de2565b9250506020612f1f85828601612de2565b9150509250929050565b600080600060608486031215612f4257612f4161405b565b5b6000612f5086828701612de2565b9350506020612f6186828701612de2565b9250506040612f7286828701612ea7565b9150509250925092565b60008060008060808587031215612f9657612f9561405b565b5b6000612fa487828801612de2565b9450506020612fb587828801612de2565b9350506040612fc687828801612ea7565b925050606085013567ffffffffffffffff811115612fe757612fe6614056565b5b612ff387828801612e36565b91505092959194509250565b600080604083850312156130165761301561405b565b5b600061302485828601612de2565b925050602061303585828601612df7565b9150509250929050565b600080604083850312156130565761305561405b565b5b600061306485828601612de2565b925050602061307585828601612ea7565b9150509250929050565b6000602082840312156130955761309461405b565b5b60006130a384828501612df7565b91505092915050565b6000602082840312156130c2576130c161405b565b5b60006130d084828501612e0c565b91505092915050565b6000602082840312156130ef576130ee61405b565b5b60006130fd84828501612e21565b91505092915050565b60006020828403121561311c5761311b61405b565b5b600061312a84828501612e64565b91505092915050565b6000602082840312156131495761314861405b565b5b600082013567ffffffffffffffff81111561316757613166614056565b5b61317384828501612e79565b91505092915050565b6000602082840312156131925761319161405b565b5b60006131a084828501612ea7565b91505092915050565b6131b281613d76565b82525050565b6131c181613d88565b82525050565b60006131d282613bcd565b6131dc8185613be3565b93506131ec818560208601613e27565b6131f581614060565b840191505092915050565b600061320b82613bd8565b6132158185613bff565b9350613225818560208601613e27565b61322e81614060565b840191505092915050565b600061324482613bd8565b61324e8185613c10565b935061325e818560208601613e27565b80840191505092915050565b6000815461327781613e84565b6132818186613c10565b9450600182166000811461329c57600181146132ad576132e0565b60ff198316865281860193506132e0565b6132b685613bb8565b60005b838110156132d8578154818901526001820191506020810190506132b9565b838801955050505b50505092915050565b60006132f6602283613bff565b915061330182614071565b604082019050919050565b6000613319600683613bff565b9150613324826140c0565b602082019050919050565b600061333c602683613bff565b9150613347826140e9565b604082019050919050565b600061335f602a83613bff565b915061336a82614138565b604082019050919050565b6000613382600a83613bff565b915061338d82614187565b602082019050919050565b60006133a5601683613bff565b91506133b0826141b0565b602082019050919050565b60006133c8602383613bff565b91506133d3826141d9565b604082019050919050565b60006133eb602583613bff565b91506133f682614228565b604082019050919050565b600061340e603983613bff565b915061341982614277565b604082019050919050565b6000613431601283613bff565b915061343c826142c6565b602082019050919050565b6000613454602b83613bff565b915061345f826142ef565b604082019050919050565b6000613477601583613bff565b91506134828261433e565b602082019050919050565b600061349a602683613bff565b91506134a582614367565b604082019050919050565b60006134bd602083613bff565b91506134c8826143b6565b602082019050919050565b60006134e0601a83613bff565b91506134eb826143df565b602082019050919050565b6000613503603283613bff565b915061350e82614408565b604082019050919050565b6000613526601683613bff565b915061353182614457565b602082019050919050565b6000613549602283613bff565b915061355482614480565b604082019050919050565b600061356c600083613bf4565b9150613577826144cf565b600082019050919050565b600061358f602383613bff565b915061359a826144d2565b604082019050919050565b60006135b2603383613bff565b91506135bd82614521565b604082019050919050565b60006135d5601d83613bff565b91506135e082614570565b602082019050919050565b60006135f8602183613bff565b915061360382614599565b604082019050919050565b600061361b600e83613bff565b9150613626826145e8565b602082019050919050565b600061363e602e83613bff565b915061364982614611565b604082019050919050565b6000613661601683613bff565b915061366c82614660565b602082019050919050565b6000613684602d83613bff565b915061368f82614689565b604082019050919050565b60006136a7600c83613bff565b91506136b2826146d8565b602082019050919050565b6136c681613e0e565b82525050565b60006136d8828661326a565b91506136e48285613239565b91506136f08284613239565b9150819050949350505050565b60006137088261355f565b9150819050919050565b600060208201905061372760008301846131a9565b92915050565b600060808201905061374260008301876131a9565b61374f60208301866131a9565b61375c60408301856136bd565b818103606083015261376e81846131c7565b905095945050505050565b600060208201905061378e60008301846131b8565b92915050565b600060208201905081810360008301526137ae8184613200565b905092915050565b600060208201905081810360008301526137cf816132e9565b9050919050565b600060208201905081810360008301526137ef8161330c565b9050919050565b6000602082019050818103600083015261380f8161332f565b9050919050565b6000602082019050818103600083015261382f81613352565b9050919050565b6000602082019050818103600083015261384f81613375565b9050919050565b6000602082019050818103600083015261386f81613398565b9050919050565b6000602082019050818103600083015261388f816133bb565b9050919050565b600060208201905081810360008301526138af816133de565b9050919050565b600060208201905081810360008301526138cf81613401565b9050919050565b600060208201905081810360008301526138ef81613424565b9050919050565b6000602082019050818103600083015261390f81613447565b9050919050565b6000602082019050818103600083015261392f8161346a565b9050919050565b6000602082019050818103600083015261394f8161348d565b9050919050565b6000602082019050818103600083015261396f816134b0565b9050919050565b6000602082019050818103600083015261398f816134d3565b9050919050565b600060208201905081810360008301526139af816134f6565b9050919050565b600060208201905081810360008301526139cf81613519565b9050919050565b600060208201905081810360008301526139ef8161353c565b9050919050565b60006020820190508181036000830152613a0f81613582565b9050919050565b60006020820190508181036000830152613a2f816135a5565b9050919050565b60006020820190508181036000830152613a4f816135c8565b9050919050565b60006020820190508181036000830152613a6f816135eb565b9050919050565b60006020820190508181036000830152613a8f8161360e565b9050919050565b60006020820190508181036000830152613aaf81613631565b9050919050565b60006020820190508181036000830152613acf81613654565b9050919050565b60006020820190508181036000830152613aef81613677565b9050919050565b60006020820190508181036000830152613b0f8161369a565b9050919050565b6000602082019050613b2b60008301846136bd565b92915050565b6000613b3b613b4c565b9050613b478282613eb6565b919050565b6000604051905090565b600067ffffffffffffffff821115613b7157613b7061401d565b5b613b7a82614060565b9050602081019050919050565b600067ffffffffffffffff821115613ba257613ba161401d565b5b613bab82614060565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000613c2682613dd2565b9150613c3183613dd2565b9250826fffffffffffffffffffffffffffffffff03821115613c5657613c55613f61565b5b828201905092915050565b6000613c6c82613e0e565b9150613c7783613e0e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613cac57613cab613f61565b5b828201905092915050565b6000613cc282613e0e565b9150613ccd83613e0e565b925082613cdd57613cdc613f90565b5b828204905092915050565b6000613cf382613e0e565b9150613cfe83613e0e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d3757613d36613f61565b5b828202905092915050565b6000613d4d82613e0e565b9150613d5883613e0e565b925082821015613d6b57613d6a613f61565b5b828203905092915050565b6000613d8182613dee565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000613dcb82613d76565b9050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613e45578082015181840152602081019050613e2a565b83811115613e54576000848401525b50505050565b6000613e6582613e0e565b91506000821415613e7957613e78613f61565b5b600182039050919050565b60006002820490506001821680613e9c57607f821691505b60208210811415613eb057613eaf613fbf565b5b50919050565b613ebf82614060565b810181811067ffffffffffffffff82111715613ede57613edd61401d565b5b80604052505050565b6000613ef282613e0e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613f2557613f24613f61565b5b600182019050919050565b6000613f3b82613e0e565b9150613f4683613e0e565b925082613f5657613f55613f90565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f5061757365640000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f4e6f2030206d696e747300000000000000000000000000000000000000000000600082015250565b7f457863657373206d617820706572207061696420747800000000000000000000600082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f45786365656473206d617820737570706c790000000000000000000000000000600082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f546f6b656e20646f6573206e6f742065786973742e0000000000000000000000600082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f496e76616c69642066756e64732070726f766964656400000000000000000000600082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f455243373231413a207175616e74697479206d7573742062652067726561746560008201527f7220300000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f4661696c656420746f2073656e64000000000000000000000000000000000000600082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f45786365656473206d6178207065722077616c6c657400000000000000000000600082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b7f4e6f20636f6e7472616374730000000000000000000000000000000000000000600082015250565b61470a81613d76565b811461471557600080fd5b50565b61472181613d88565b811461472c57600080fd5b50565b61473881613d94565b811461474357600080fd5b50565b61474f81613dc0565b811461475a57600080fd5b50565b61476681613e0e565b811461477157600080fd5b5056fea264697066735822122012c1a5264e76a8e59dc84b7b78827d720e55816a5f0186855abc70fdb2537d3b64736f6c63430008070033697066733a2f2f516d623964416f683142463570596a42435569486d447953776a3269556e4877317168355a5245346e6d4c7374532f