60806040526000600f60146101000a81548160ff0219169083151502179055506040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250601190805190602001906200006c9291906200099f565b50600060125561035c60135560036014556001601560006101000a81548160ff021916908315150217905550348015620000a557600080fd5b506040518060400160405280601281526020017f4e656b6f47656e654d696c6c656e6e69756d00000000000000000000000000008152506040518060400160405280600381526020017f4e474d000000000000000000000000000000000000000000000000000000000081525081600290805190602001906200012a9291906200099f565b508060039080519060200190620001439291906200099f565b50620001546200032760201b60201c565b60008190555050506200017c620001706200033060201b60201c565b6200033860201b60201c565b620001a6604051806060016040528060368152602001620054c160369139620003fe60201b60201c565b73845a007d9f283614f403a24e3eb3455f720559ca600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073fe5a28f19934851695783a0c8ccb25d678bb05d3600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073cfe50e49ec3e5eb24cc5bbce524166424563dd4e600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073cae19776cb7197676f9b15f1da6d110dddfb181c600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200032173decf4b112d4120b6998e5020a6b4819e490f7db660016200042a60201b60201c565b62000d23565b60006001905090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6200040e6200045060201b60201c565b8060109080519060200190620004269291906200099f565b5050565b6200044c828260405180602001604052806000815250620004e160201b60201c565b5050565b620004606200033060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620004866200059260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620004df576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004d69062000b76565b60405180910390fd5b565b620004f38383620005bc60201b60201c565b60008373ffffffffffffffffffffffffffffffffffffffff163b146200058d57600080549050600083820390505b6200053c6000868380600101945086620007a560201b60201c565b62000573576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818110620005215781600054146200058a57600080fd5b50505b505050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000805490506000821415620005fe576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6200061360008483856200091760201b60201c565b600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550620006a2836200068460008660006200091d60201b60201c565b62000695856200094d60201b60201c565b176200095d60201b60201c565b6004600083815260200190815260200160002081905550600080838301905073ffffffffffffffffffffffffffffffffffffffff85169150828260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600183015b8181146200074557808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a460018101905062000708565b50600082141562000782576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000819055505050620007a060008483856200098860201b60201c565b505050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02620007d36200098e60201b60201c565b8786866040518563ffffffff1660e01b8152600401620007f7949392919062000b22565b602060405180830381600087803b1580156200081257600080fd5b505af19250505080156200084657506040513d601f19601f8201168201806040525081019062000843919062000a66565b60015b620008c4573d806000811462000879576040519150601f19603f3d011682016040523d82523d6000602084013e6200087e565b606091505b50600081511415620008bc576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b50505050565b60008060e883901c905060e86200093c8686846200099660201b60201c565b62ffffff16901b9150509392505050565b60006001821460e11b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b600033905090565b60009392505050565b828054620009ad9062000c65565b90600052602060002090601f016020900481019282620009d1576000855562000a1d565b82601f10620009ec57805160ff191683800117855562000a1d565b8280016001018555821562000a1d579182015b8281111562000a1c578251825591602001919060010190620009ff565b5b50905062000a2c919062000a30565b5090565b5b8082111562000a4b57600081600090555060010162000a31565b5090565b60008151905062000a608162000d09565b92915050565b60006020828403121562000a7f5762000a7e62000cca565b5b600062000a8f8482850162000a4f565b91505092915050565b62000aa38162000bc5565b82525050565b600062000ab68262000b98565b62000ac2818562000ba3565b935062000ad481856020860162000c2f565b62000adf8162000ccf565b840191505092915050565b600062000af960208362000bb4565b915062000b068262000ce0565b602082019050919050565b62000b1c8162000c25565b82525050565b600060808201905062000b39600083018762000a98565b62000b48602083018662000a98565b62000b57604083018562000b11565b818103606083015262000b6b818462000aa9565b905095945050505050565b6000602082019050818103600083015262000b918162000aea565b9050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600062000bd28262000c05565b9050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101562000c4f57808201518184015260208101905062000c32565b8381111562000c5f576000848401525b50505050565b6000600282049050600182168062000c7e57607f821691505b6020821081141562000c955762000c9462000c9b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b62000d148162000bd9565b811462000d2057600080fd5b50565b61478e8062000d336000396000f3fe6080604052600436106102c95760003560e01c80635c975abb11610175578063b88d4fde116100dc578063e420fb9d11610095578063efba72d51161006f578063efba72d514610aa0578063f2fde38b14610acb578063f46eccc414610af4578063fb10748914610b31576102c9565b8063e420fb9d14610a11578063e985e9c514610a3a578063ea23dc5114610a77576102c9565b8063b88d4fde14610910578063c66828621461092c578063c87b56dd14610957578063cf456ae714610994578063d5abeb01146109bd578063da3ef23f146109e8576102c9565b806395d89b411161012e57806395d89b411461083057806398f687031461085b57806399f9889814610886578063a0712d68146108a2578063a22cb465146108be578063af60698b146108e7576102c9565b80635c975abb146107205780636352211e1461074b5780636f8b44b01461078857806370a08231146107b1578063715018a6146107ee5780638da5cb5b14610805576102c9565b80631fac2a35116102345780633af32abf116101ed578063438b6300116101c7578063438b63001461066657806344a0d68a146106a357806355f804b3146106cc5780635850d5e0146106f5576102c9565b80633af32abf146105f65780633ccfd60b1461063357806342842e0e1461064a576102c9565b80631fac2a35146104f3578063239c70ae1461053057806323b872dd1461055b578063279a669e1461057757806333a04a17146105a057806337735203146105cb576102c9565b8063095ea7b311610286578063095ea7b3146104025780630d895ee11461041e578063125eb42c1461044757806313faede6146104725780631581b6001461049d57806318160ddd146104c8576102c9565b806301ffc9a7146102ce57806302329a291461030b57806303d41e0e1461033457806306fdde0314610371578063081812fc1461039c578063088a4ed0146103d9575b600080fd5b3480156102da57600080fd5b506102f560048036038101906102f09190613806565b610b5a565b6040516103029190613deb565b60405180910390f35b34801561031757600080fd5b50610332600480360381019061032d91906137d9565b610bec565b005b34801561034057600080fd5b5061035b600480360381019061035691906134d7565b610c11565b6040516103689190613deb565b60405180910390f35b34801561037d57600080fd5b50610386610c31565b6040516103939190613e3c565b60405180910390f35b3480156103a857600080fd5b506103c360048036038101906103be91906138f2565b610cc3565b6040516103d09190613d62565b60405180910390f35b3480156103e557600080fd5b5061040060048036038101906103fb91906138f2565b610d42565b005b61041c6004803603810190610417919061371d565b610d54565b005b34801561042a57600080fd5b50610445600480360381019061044091906136dd565b610e98565b005b34801561045357600080fd5b5061045c610efb565b6040516104699190613e21565b60405180910390f35b34801561047e57600080fd5b50610487610f21565b6040516104949190613fde565b60405180910390f35b3480156104a957600080fd5b506104b2610f27565b6040516104bf9190613d62565b60405180910390f35b3480156104d457600080fd5b506104dd610f3f565b6040516104ea9190613fde565b60405180910390f35b3480156104ff57600080fd5b5061051a600480360381019061051591906134d7565b610f56565b6040516105279190613fde565b60405180910390f35b34801561053c57600080fd5b50610545610f6e565b6040516105529190613fde565b60405180910390f35b610575600480360381019061057091906135ab565b610f74565b005b34801561058357600080fd5b5061059e6004803603810190610599919061375d565b611299565b005b3480156105ac57600080fd5b506105b56113f5565b6040516105c29190613e06565b60405180910390f35b3480156105d757600080fd5b506105e061141b565b6040516105ed9190613e06565b60405180910390f35b34801561060257600080fd5b5061061d600480360381019061061891906134d7565b611441565b60405161062a9190613deb565b60405180910390f35b34801561063f57600080fd5b5061064861173d565b005b610664600480360381019061065f91906135ab565b6117d2565b005b34801561067257600080fd5b5061068d600480360381019061068891906134d7565b6117f2565b60405161069a9190613dc9565b60405180910390f35b3480156106af57600080fd5b506106ca60048036038101906106c591906138f2565b6118fd565b005b3480156106d857600080fd5b506106f360048036038101906106ee9190613860565b61190f565b005b34801561070157600080fd5b5061070a611931565b6040516107179190613e06565b60405180910390f35b34801561072c57600080fd5b50610735611957565b6040516107429190613deb565b60405180910390f35b34801561075757600080fd5b50610772600480360381019061076d91906138f2565b61196a565b60405161077f9190613d62565b60405180910390f35b34801561079457600080fd5b506107af60048036038101906107aa91906138f2565b61197c565b005b3480156107bd57600080fd5b506107d860048036038101906107d391906134d7565b61198e565b6040516107e59190613fde565b60405180910390f35b3480156107fa57600080fd5b50610803611a47565b005b34801561081157600080fd5b5061081a611a5b565b6040516108279190613d62565b60405180910390f35b34801561083c57600080fd5b50610845611a85565b6040516108529190613e3c565b60405180910390f35b34801561086757600080fd5b50610870611b17565b60405161087d9190613deb565b60405180910390f35b6108a0600480360381019061089b919061371d565b611b2a565b005b6108bc60048036038101906108b791906138f2565b611c27565b005b3480156108ca57600080fd5b506108e560048036038101906108e091906136dd565b611e70565b005b3480156108f357600080fd5b5061090e60048036038101906109099190613681565b611f7b565b005b61092a600480360381019061092591906135fe565b6120ca565b005b34801561093857600080fd5b5061094161213d565b60405161094e9190613e3c565b60405180910390f35b34801561096357600080fd5b5061097e600480360381019061097991906138f2565b6121cb565b60405161098b9190613e3c565b60405180910390f35b3480156109a057600080fd5b506109bb60048036038101906109b691906136dd565b6122cc565b005b3480156109c957600080fd5b506109d261232f565b6040516109df9190613fde565b60405180910390f35b3480156109f457600080fd5b50610a0f6004803603810190610a0a9190613860565b612335565b005b348015610a1d57600080fd5b50610a386004803603810190610a3391906137d9565b612357565b005b348015610a4657600080fd5b50610a616004803603810190610a5c9190613504565b61237c565b604051610a6e9190613deb565b60405180910390f35b348015610a8357600080fd5b50610a9e6004803603810190610a9991906134d7565b612410565b005b348015610aac57600080fd5b50610ab561245c565b604051610ac29190613e06565b60405180910390f35b348015610ad757600080fd5b50610af26004803603810190610aed91906134d7565b612482565b005b348015610b0057600080fd5b50610b1b6004803603810190610b1691906134d7565b612506565b604051610b289190613deb565b60405180910390f35b348015610b3d57600080fd5b50610b586004803603810190610b539190613544565b612526565b005b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610bb557506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610be55750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b610bf4612638565b80601560006101000a81548160ff02191690831515021790555050565b600a6020528060005260406000206000915054906101000a900460ff1681565b606060028054610c409061432a565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6c9061432a565b8015610cb95780601f10610c8e57610100808354040283529160200191610cb9565b820191906000526020600020905b815481529060010190602001808311610c9c57829003601f168201915b5050505050905090565b6000610cce826126b6565b610d04576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b610d4a612638565b8060148190555050565b6000610d5f8261196a565b90508073ffffffffffffffffffffffffffffffffffffffff16610d80612715565b73ffffffffffffffffffffffffffffffffffffffff1614610de357610dac81610da7612715565b61237c565b610de2576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b826006600084815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b610ea0612638565b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b73decf4b112d4120b6998e5020a6b4819e490f7db681565b6000610f4961271d565b6001546000540303905090565b60166020528060005260406000206000915090505481565b60145481565b6000610f7f82612726565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610fe6576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610ff2846127f4565b915091506110088187611003612715565b61281b565b6110545761101d86611018612715565b61237c565b611053576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156110bb576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110c8868686600161285f565b80156110d357600082555b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154600101919050819055506111a18561117d888887612865565b7c02000000000000000000000000000000000000000000000000000000001761288d565b600460008681526020019081526020016000208190555060007c020000000000000000000000000000000000000000000000000000000084161415611229576000600185019050600060046000838152602001908152602001600020541415611227576000548114611226578360046000838152602001908152602001600020819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461129186868660016128b8565b505050505050565b6112a1612638565b6000805b82518110156112e9578281815181106112c1576112c0614434565b5b6020026020010151826112d49190614148565b915080806112e19061438d565b9150506112a5565b508060001061132d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132490613fbe565b60405180910390fd5b60135481611339610f3f565b6113439190614148565b1115611384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137b90613efe565b60405180910390fd5b60005b82518110156113ee576113db8585838181106113a6576113a5614434565b5b90506020020160208101906113bb91906134d7565b8483815181106113ce576113cd614434565b5b60200260200101516128be565b80806113e69061438d565b915050611387565b5050505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b815260040161149e9190613d62565b60206040518083038186803b1580156114b657600080fd5b505afa1580156114ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ee919061391f565b600010156114ff5760019050611738565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b815260040161155a9190613d62565b60206040518083038186803b15801561157257600080fd5b505afa158015611586573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115aa919061391f565b600010156115bb5760019050611738565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b81526004016116169190613d62565b60206040518083038186803b15801561162e57600080fd5b505afa158015611642573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611666919061391f565b600010156116775760019050611738565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b81526004016116d29190613d62565b60206040518083038186803b1580156116ea57600080fd5b505afa1580156116fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611722919061391f565b600010156117335760019050611738565b600090505b919050565b611745612638565b600073decf4b112d4120b6998e5020a6b4819e490f7db673ffffffffffffffffffffffffffffffffffffffff164760405161177f90613d4d565b60006040518083038185875af1925050503d80600081146117bc576040519150601f19603f3d011682016040523d82523d6000602084013e6117c1565b606091505b50509050806117cf57600080fd5b50565b6117ed838383604051806020016040528060008152506120ca565b505050565b606060006117ff8361198e565b905060008167ffffffffffffffff81111561181d5761181c614463565b5b60405190808252806020026020018201604052801561184b5781602001602082028036833780820191505090505b50905060006001905060005b838110801561186857506013548211155b156118f15760006118788361196a565b90508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118dd57828483815181106118c2576118c1614434565b5b60200260200101818152505081806118d99061438d565b9250505b82806118e89061438d565b93505050611857565b82945050505050919050565b611905612638565b8060128190555050565b611917612638565b806010908051906020019061192d929190613172565b5050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601560009054906101000a900460ff1681565b600061197582612726565b9050919050565b611984612638565b8060138190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119f6576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b611a4f612638565b611a5960006128dc565b565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060038054611a949061432a565b80601f0160208091040260200160405190810160405280929190818152602001828054611ac09061432a565b8015611b0d5780601f10611ae257610100808354040283529160200191611b0d565b820191906000526020600020905b815481529060010190602001808311611af057829003601f168201915b5050505050905090565b600f60149054906101000a900460ff1681565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611bb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bad90613e7e565b60405180910390fd5b601354816001611bc46129a2565b611bce91906141f8565b611bd89190614148565b1115611c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1090613efe565b60405180910390fd5b611c2382826128be565b5050565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611c95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8c90613e9e565b60405180910390fd5b601560009054906101000a900460ff1615611ce5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cdc90613f7e565b60405180910390fd5b80600010611d28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1f90613fbe565b60405180910390fd5b601454811115611d6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6490613f1e565b60405180910390fd5b60135481611d79610f3f565b611d839190614148565b1115611dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbb90613efe565b60405180910390fd5b3481601254611dd3919061419e565b1115611e14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0b90613f9e565b60405180910390fd5b60011515611e2133611441565b151514611e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5a90613f3e565b60405180910390fd5b611e6d33826128be565b50565b8060076000611e7d612715565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611f2a612715565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611f6f9190613deb565b60405180910390a35050565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612007576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffe90613ede565b60405180910390fd5b60005b81518110156120c557600082828151811061202857612027614434565b5b6020026020010151905061203b8161196a565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146120a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209f90613e5e565b60405180910390fd5b6120b1816129ab565b5080806120bd9061438d565b91505061200a565b505050565b6120d5848484610f74565b60008373ffffffffffffffffffffffffffffffffffffffff163b1461213757612100848484846129b9565b612136576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b6011805461214a9061432a565b80601f01602080910402602001604051908101604052809291908181526020018280546121769061432a565b80156121c35780601f10612198576101008083540402835291602001916121c3565b820191906000526020600020905b8154815290600101906020018083116121a657829003601f168201915b505050505081565b6060600f60149054906101000a900460ff161561229957600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c87b56dd836040518263ffffffff1660e01b815260040161223d9190613fde565b60006040518083038186803b15801561225557600080fd5b505afa158015612269573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061229291906138a9565b90506122c7565b6122a282612b19565b60116040516020016122b5929190613d29565b60405160208183030381529060405290505b919050565b6122d4612638565b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b61233d612638565b8060119080519060200190612353929190613172565b5050565b61235f612638565b80600f60146101000a81548160ff02191690831515021790555050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b612418612638565b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61248a612638565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156124fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f190613ebe565b60405180910390fd5b612503816128dc565b50565b60096020528060005260406000206000915054906101000a900460ff1681565b61252e612638565b83600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b612640612bb8565b73ffffffffffffffffffffffffffffffffffffffff1661265e611a5b565b73ffffffffffffffffffffffffffffffffffffffff16146126b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ab90613f5e565b60405180910390fd5b565b6000816126c161271d565b111580156126d0575060005482105b801561270e575060007c0100000000000000000000000000000000000000000000000000000000600460008581526020019081526020016000205416145b9050919050565b600033905090565b60006001905090565b6000808290508061273561271d565b116127bd576000548110156127bc5760006004600083815260200190815260200160002054905060007c0100000000000000000000000000000000000000000000000000000000821614156127ba575b60008114156127b0576004600083600190039350838152602001908152602001600020549050612785565b80925050506127ef565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60008060006006600085815260200190815260200160002090508092508254915050915091565b600073ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b60008060e883901c905060e861287c868684612bc0565b62ffffff16901b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b6128d8828260405180602001604052806000815250612bc9565b5050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008054905090565b6129b6816000612c66565b50565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a026129df612715565b8786866040518563ffffffff1660e01b8152600401612a019493929190613d7d565b602060405180830381600087803b158015612a1b57600080fd5b505af1925050508015612a4c57506040513d601f19601f82011682018060405250810190612a499190613833565b60015b612ac6573d8060008114612a7c576040519150601f19603f3d011682016040523d82523d6000602084013e612a81565b606091505b50600081511415612abe576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6060612b24826126b6565b612b5a576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612b64612eba565b9050600081511415612b855760405180602001604052806000815250612bb0565b80612b8f84612f4c565b604051602001612ba0929190613d05565b6040516020818303038152906040525b915050919050565b600033905090565b60009392505050565b612bd38383612fa5565b60008373ffffffffffffffffffffffffffffffffffffffff163b14612c6157600080549050600083820390505b612c1360008683806001019450866129b9565b612c49576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818110612c00578160005414612c5e57600080fd5b50505b505050565b6000612c7183612726565b90506000819050600080612c84866127f4565b915091508415612ced57612ca08184612c9b612715565b61281b565b612cec57612cb583612cb0612715565b61237c565b612ceb576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5b612cfb83600088600161285f565b8015612d0657600082555b600160806001901b03600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550612dae83612d6b85600088612865565b7c02000000000000000000000000000000000000000000000000000000007c0100000000000000000000000000000000000000000000000000000000171761288d565b600460008881526020019081526020016000208190555060007c020000000000000000000000000000000000000000000000000000000085161415612e36576000600187019050600060046000838152602001908152602001600020541415612e34576000548114612e33578460046000838152602001908152602001600020819055505b5b505b85600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612ea08360008860016128b8565b600160008154809291906001019190505550505050505050565b606060108054612ec99061432a565b80601f0160208091040260200160405190810160405280929190818152602001828054612ef59061432a565b8015612f425780601f10612f1757610100808354040283529160200191612f42565b820191906000526020600020905b815481529060010190602001808311612f2557829003601f168201915b5050505050905090565b606060a060405101806040526020810391506000825281835b600115612f9057600184039350600a81066030018453600a8104905080612f8b57612f90565b612f65565b50828103602084039350808452505050919050565b6000805490506000821415612fe6576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612ff3600084838561285f565b600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555061306a8361305b6000866000612865565b61306485613162565b1761288d565b6004600083815260200190815260200160002081905550600080838301905073ffffffffffffffffffffffffffffffffffffffff85169150828260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600183015b81811461310b57808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a46001810190506130d0565b506000821415613147576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600081905550505061315d60008483856128b8565b505050565b60006001821460e11b9050919050565b82805461317e9061432a565b90600052602060002090601f0160209004810192826131a057600085556131e7565b82601f106131b957805160ff19168380011785556131e7565b828001600101855582156131e7579182015b828111156131e65782518255916020019190600101906131cb565b5b5090506131f491906131f8565b5090565b5b808211156132115760008160009055506001016131f9565b5090565b60006132286132238461401e565b613ff9565b9050808382526020820190508285602086028201111561324b5761324a61449c565b5b60005b8581101561327b578161326188826134ad565b84526020840193506020830192505060018101905061324e565b5050509392505050565b60006132986132938461404a565b613ff9565b9050828152602081018484840111156132b4576132b36144a1565b5b6132bf8482856142e8565b509392505050565b60006132da6132d58461407b565b613ff9565b9050828152602081018484840111156132f6576132f56144a1565b5b6133018482856142e8565b509392505050565b600061331c6133178461407b565b613ff9565b905082815260208101848484011115613338576133376144a1565b5b6133438482856142f7565b509392505050565b60008135905061335a816146fc565b92915050565b60008083601f84011261337657613375614497565b5b8235905067ffffffffffffffff81111561339357613392614492565b5b6020830191508360208202830111156133af576133ae61449c565b5b9250929050565b600082601f8301126133cb576133ca614497565b5b81356133db848260208601613215565b91505092915050565b6000813590506133f381614713565b92915050565b6000813590506134088161472a565b92915050565b60008151905061341d8161472a565b92915050565b600082601f83011261343857613437614497565b5b8135613448848260208601613285565b91505092915050565b600082601f83011261346657613465614497565b5b81356134768482602086016132c7565b91505092915050565b600082601f83011261349457613493614497565b5b81516134a4848260208601613309565b91505092915050565b6000813590506134bc81614741565b92915050565b6000815190506134d181614741565b92915050565b6000602082840312156134ed576134ec6144ab565b5b60006134fb8482850161334b565b91505092915050565b6000806040838503121561351b5761351a6144ab565b5b60006135298582860161334b565b925050602061353a8582860161334b565b9150509250929050565b6000806000806080858703121561355e5761355d6144ab565b5b600061356c8782880161334b565b945050602061357d8782880161334b565b935050604061358e8782880161334b565b925050606061359f8782880161334b565b91505092959194509250565b6000806000606084860312156135c4576135c36144ab565b5b60006135d28682870161334b565b93505060206135e38682870161334b565b92505060406135f4868287016134ad565b9150509250925092565b60008060008060808587031215613618576136176144ab565b5b60006136268782880161334b565b94505060206136378782880161334b565b9350506040613648878288016134ad565b925050606085013567ffffffffffffffff811115613669576136686144a6565b5b61367587828801613423565b91505092959194509250565b60008060408385031215613698576136976144ab565b5b60006136a68582860161334b565b925050602083013567ffffffffffffffff8111156136c7576136c66144a6565b5b6136d3858286016133b6565b9150509250929050565b600080604083850312156136f4576136f36144ab565b5b60006137028582860161334b565b9250506020613713858286016133e4565b9150509250929050565b60008060408385031215613734576137336144ab565b5b60006137428582860161334b565b9250506020613753858286016134ad565b9150509250929050565b600080600060408486031215613776576137756144ab565b5b600084013567ffffffffffffffff811115613794576137936144a6565b5b6137a086828701613360565b9350935050602084013567ffffffffffffffff8111156137c3576137c26144a6565b5b6137cf868287016133b6565b9150509250925092565b6000602082840312156137ef576137ee6144ab565b5b60006137fd848285016133e4565b91505092915050565b60006020828403121561381c5761381b6144ab565b5b600061382a848285016133f9565b91505092915050565b600060208284031215613849576138486144ab565b5b60006138578482850161340e565b91505092915050565b600060208284031215613876576138756144ab565b5b600082013567ffffffffffffffff811115613894576138936144a6565b5b6138a084828501613451565b91505092915050565b6000602082840312156138bf576138be6144ab565b5b600082015167ffffffffffffffff8111156138dd576138dc6144a6565b5b6138e98482850161347f565b91505092915050565b600060208284031215613908576139076144ab565b5b6000613916848285016134ad565b91505092915050565b600060208284031215613935576139346144ab565b5b6000613943848285016134c2565b91505092915050565b60006139588383613ce7565b60208301905092915050565b61396d8161422c565b82525050565b600061397e826140d1565b61398881856140ff565b9350613993836140ac565b8060005b838110156139c45781516139ab888261394c565b97506139b6836140f2565b925050600181019050613997565b5085935050505092915050565b6139da8161423e565b82525050565b60006139eb826140dc565b6139f58185614110565b9350613a058185602086016142f7565b613a0e816144b0565b840191505092915050565b613a22816142a0565b82525050565b613a31816142b2565b82525050565b6000613a42826140e7565b613a4c818561412c565b9350613a5c8185602086016142f7565b613a65816144b0565b840191505092915050565b6000613a7b826140e7565b613a85818561413d565b9350613a958185602086016142f7565b80840191505092915050565b60008154613aae8161432a565b613ab8818661413d565b94506001821660008114613ad35760018114613ae457613b17565b60ff19831686528186019350613b17565b613aed856140bc565b60005b83811015613b0f57815481890152600182019150602081019050613af0565b838801955050505b50505092915050565b6000613b2d60128361412c565b9150613b38826144c1565b602082019050919050565b6000613b50600b8361412c565b9150613b5b826144ea565b602082019050919050565b6000613b73601f8361412c565b9150613b7e82614513565b602082019050919050565b6000613b9660268361412c565b9150613ba18261453c565b604082019050919050565b6000613bb9600b8361412c565b9150613bc48261458b565b602082019050919050565b6000613bdc60168361412c565b9150613be7826145b4565b602082019050919050565b6000613bff60248361412c565b9150613c0a826145dd565b604082019050919050565b6000613c2260178361412c565b9150613c2d8261462c565b602082019050919050565b6000613c4560208361412c565b9150613c5082614655565b602082019050919050565b6000613c6860168361412c565b9150613c738261467e565b602082019050919050565b6000613c8b600083614121565b9150613c96826146a7565b600082019050919050565b6000613cae60128361412c565b9150613cb9826146aa565b602082019050919050565b6000613cd1601b8361412c565b9150613cdc826146d3565b602082019050919050565b613cf081614296565b82525050565b613cff81614296565b82525050565b6000613d118285613a70565b9150613d1d8284613a70565b91508190509392505050565b6000613d358285613a70565b9150613d418284613aa1565b91508190509392505050565b6000613d5882613c7e565b9150819050919050565b6000602082019050613d776000830184613964565b92915050565b6000608082019050613d926000830187613964565b613d9f6020830186613964565b613dac6040830185613cf6565b8181036060830152613dbe81846139e0565b905095945050505050565b60006020820190508181036000830152613de38184613973565b905092915050565b6000602082019050613e0060008301846139d1565b92915050565b6000602082019050613e1b6000830184613a19565b92915050565b6000602082019050613e366000830184613a28565b92915050565b60006020820190508181036000830152613e568184613a37565b905092915050565b60006020820190508181036000830152613e7781613b20565b9050919050565b60006020820190508181036000830152613e9781613b43565b9050919050565b60006020820190508181036000830152613eb781613b66565b9050919050565b60006020820190508181036000830152613ed781613b89565b9050919050565b60006020820190508181036000830152613ef781613bac565b9050919050565b60006020820190508181036000830152613f1781613bcf565b9050919050565b60006020820190508181036000830152613f3781613bf2565b9050919050565b60006020820190508181036000830152613f5781613c15565b9050919050565b60006020820190508181036000830152613f7781613c38565b9050919050565b60006020820190508181036000830152613f9781613c5b565b9050919050565b60006020820190508181036000830152613fb781613ca1565b9050919050565b60006020820190508181036000830152613fd781613cc4565b9050919050565b6000602082019050613ff36000830184613cf6565b92915050565b6000614003614014565b905061400f828261435c565b919050565b6000604051905090565b600067ffffffffffffffff82111561403957614038614463565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561406557614064614463565b5b61406e826144b0565b9050602081019050919050565b600067ffffffffffffffff82111561409657614095614463565b5b61409f826144b0565b9050602081019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061415382614296565b915061415e83614296565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614193576141926143d6565b5b828201905092915050565b60006141a982614296565b91506141b483614296565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156141ed576141ec6143d6565b5b828202905092915050565b600061420382614296565b915061420e83614296565b925082821015614221576142206143d6565b5b828203905092915050565b600061423782614276565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006142ab826142c4565b9050919050565b60006142bd826142c4565b9050919050565b60006142cf826142d6565b9050919050565b60006142e182614276565b9050919050565b82818337600083830152505050565b60005b838110156143155780820151818401526020810190506142fa565b83811115614324576000848401525b50505050565b6000600282049050600182168061434257607f821691505b6020821081141561435657614355614405565b5b50919050565b614365826144b0565b810181811067ffffffffffffffff8211171561438457614383614463565b5b80604052505050565b600061439882614296565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156143cb576143ca6143d6565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e657220697320646966666572656e740000000000000000000000000000600082015250565b7f4e6f74204d696e74657221000000000000000000000000000000000000000000600082015250565b7f5468652063616c6c657220697320616e6f7468657220636f6e74726163742e00600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4e6f74204275726e657221000000000000000000000000000000000000000000600082015250565b7f6d6178204e4654206c696d697420657863656564656400000000000000000000600082015250565b7f6d6178206d696e7420616d6f756e74207065722073657373696f6e206578636560008201527f6564656400000000000000000000000000000000000000000000000000000000602082015250565b7f596f7520617265206e6f742077686974656c6973746564000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f74686520636f6e74726163742069732070617573656400000000000000000000600082015250565b50565b7f696e73756666696369656e742066756e64730000000000000000000000000000600082015250565b7f6e65656420746f206d696e74206174206c656173742031204e46540000000000600082015250565b6147058161422c565b811461471057600080fd5b50565b61471c8161423e565b811461472757600080fd5b50565b6147338161424a565b811461473e57600080fd5b50565b61474a81614296565b811461475557600080fd5b5056fea264697066735822122008fe0fafb2075abb3185b21060c301666485cc1caaa4d8c8c98f4ed7bec37f6c64736f6c63430008070033697066733a2f2f516d647a4a78704a535246756373486835763954555a57314743646f67427a3969757167335136485645364e767a2f