0x6080604052600436106101c55760003560e01c806374010ece116100f7578063a2a957bb11610095578063c492f04611610064578063c492f04614610614578063dd62ed3e1461063d578063ea1644d51461067a578063f2fde38b146106a3576101cc565b8063a2a957bb1461055a578063a9059cbb14610583578063bfd79284146105c0578063c3c8cd80146105fd576101cc565b80638f70ccf7116100d15780638f70ccf7146104b25780638f9a55c0146104db57806395d89b411461050657806398a5c31514610531576101cc565b806374010ece146104335780637d1db4a51461045c5780638da5cb5b14610487576101cc565b8063313ce567116101645780636d8aa8f81161013e5780636d8aa8f81461039f5780636fc3eaec146103c857806370a08231146103df578063715018a61461041c576101cc565b8063313ce5671461032057806349bd5a5e1461034b5780636b99905314610376576101cc565b80631694505e116101a05780631694505e1461026257806318160ddd1461028d57806323b872dd146102b85780632fd689e3146102f5576101cc565b8062b8cf2a146101d157806306fdde03146101fa578063095ea7b314610225576101cc565b366101cc57005b600080fd5b3480156101dd57600080fd5b506101f860048036038101906101f39190612d80565b6106cc565b005b34801561020657600080fd5b5061020f6107f6565b60405161021c9190612e48565b60405180910390f35b34801561023157600080fd5b5061024c60048036038101906102479190612ea0565b610833565b6040516102599190612efb565b60405180910390f35b34801561026e57600080fd5b50610277610851565b6040516102849190612f75565b60405180910390f35b34801561029957600080fd5b506102a2610877565b6040516102af9190612f9f565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da9190612fba565b610887565b6040516102ec9190612efb565b60405180910390f35b34801561030157600080fd5b5061030a610960565b6040516103179190612f9f565b60405180910390f35b34801561032c57600080fd5b50610335610966565b6040516103429190613029565b60405180910390f35b34801561035757600080fd5b5061036061096f565b60405161036d9190613053565b60405180910390f35b34801561038257600080fd5b5061039d6004803603810190610398919061306e565b610995565b005b3480156103ab57600080fd5b506103c660048036038101906103c191906130c7565b610a85565b005b3480156103d457600080fd5b506103dd610b37565b005b3480156103eb57600080fd5b506104066004803603810190610401919061306e565b610c08565b6040516104139190612f9f565b60405180910390f35b34801561042857600080fd5b50610431610c59565b005b34801561043f57600080fd5b5061045a600480360381019061045591906130f4565b610dac565b005b34801561046857600080fd5b50610471610e4b565b60405161047e9190612f9f565b60405180910390f35b34801561049357600080fd5b5061049c610e51565b6040516104a99190613053565b60405180910390f35b3480156104be57600080fd5b506104d960048036038101906104d491906130c7565b610e7a565b005b3480156104e757600080fd5b506104f0610f2c565b6040516104fd9190612f9f565b60405180910390f35b34801561051257600080fd5b5061051b610f32565b6040516105289190612e48565b60405180910390f35b34801561053d57600080fd5b50610558600480360381019061055391906130f4565b610f6f565b005b34801561056657600080fd5b50610581600480360381019061057c9190613121565b61100e565b005b34801561058f57600080fd5b506105aa60048036038101906105a59190612ea0565b6110c5565b6040516105b79190612efb565b60405180910390f35b3480156105cc57600080fd5b506105e760048036038101906105e2919061306e565b6110e3565b6040516105f49190612efb565b60405180910390f35b34801561060957600080fd5b50610612611103565b005b34801561062057600080fd5b5061063b600480360381019061063691906131e3565b6111dc565b005b34801561064957600080fd5b50610664600480360381019061065f9190613243565b611316565b6040516106719190612f9f565b60405180910390f35b34801561068657600080fd5b506106a1600480360381019061069c91906130f4565b61139d565b005b3480156106af57600080fd5b506106ca60048036038101906106c5919061306e565b61143c565b005b6106d46115fd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610761576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610758906132cf565b60405180910390fd5b60005b81518110156107f257600160106000848481518110610786576107856132ef565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107ea9061334d565b915050610764565b5050565b60606040518060400160405280600881526020017f446f6765476f6c64000000000000000000000000000000000000000000000000815250905090565b60006108476108406115fd565b8484611605565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006108948484846117ce565b610955846108a06115fd565b61095085604051806060016040528060288152602001613d5360289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109066115fd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120519092919063ffffffff16565b611605565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61099d6115fd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a21906132cf565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610a8d6115fd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b11906132cf565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b786115fd565b73ffffffffffffffffffffffffffffffffffffffff161480610bee5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bd66115fd565b73ffffffffffffffffffffffffffffffffffffffff16145b610bf757600080fd5b6000479050610c05816120b5565b50565b6000610c52600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121b0565b9050919050565b610c616115fd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce5906132cf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610db46115fd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e38906132cf565b60405180910390fd5b8060168190555050565b60165481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e826115fd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f06906132cf565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600581526020017f44474f4c44000000000000000000000000000000000000000000000000000000815250905090565b610f776115fd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffb906132cf565b60405180910390fd5b8060188190555050565b6110166115fd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109a906132cf565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b60006110d96110d26115fd565b84846117ce565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111446115fd565b73ffffffffffffffffffffffffffffffffffffffff1614806111ba5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111a26115fd565b73ffffffffffffffffffffffffffffffffffffffff16145b6111c357600080fd5b60006111ce30610c08565b90506111d98161221e565b50565b6111e46115fd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611271576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611268906132cf565b60405180910390fd5b60005b83839050811015611310578160056000868685818110611297576112966132ef565b5b90506020020160208101906112ac919061306e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806113089061334d565b915050611274565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113a56115fd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611432576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611429906132cf565b60405180910390fd5b8060178190555050565b6114446115fd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c8906132cf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611540576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153790613407565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611674576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166b90613499565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116da9061352b565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117c19190612f9f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361183d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611834906135bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a39061364f565b60405180910390fd5b600081116118ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e6906136e1565b60405180910390fd5b6118f7610e51565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119655750611935610e51565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d5057601560149054906101000a900460ff166119f457611986610e51565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ea90613773565b60405180910390fd5b5b601654811115611a39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a30906137df565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611add5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1390613871565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611bc95760175481611b7e84610c08565b611b889190613891565b10611bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbf90613937565b60405180910390fd5b5b6000611bd430610c08565b9050600060185482101590506016548210611bef5760165491505b808015611c07575060158054906101000a900460ff16155b8015611c615750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c795750601560169054906101000a900460ff165b8015611ccf5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d255750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d4d57611d338261221e565b60004790506000811115611d4b57611d4a476120b5565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611df75750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611eaa5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611ea95750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611eb8576000905061203f565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f635750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f7b57600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120265750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561203e57600a54600c81905550600b54600d819055505b5b61204b84848484612495565b50505050565b6000838311158290612099576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120909190612e48565b60405180910390fd5b50600083856120a89190613957565b9050809150509392505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6121056002846124c290919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612130573d6000803e3d6000fd5b50601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6121816002846124c290919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156121ac573d6000803e3d6000fd5b5050565b60006006548211156121f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ee906139fd565b60405180910390fd5b600061220161250c565b905061221681846124c290919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561225557612254612bdf565b5b6040519080825280602002602001820160405280156122835781602001602082028036833780820191505090505b509050308160008151811061229b5761229a6132ef565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612342573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123669190613a32565b8160018151811061237a576123796132ef565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123e130601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611605565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612445959493929190613b58565b600060405180830381600087803b15801561245f57600080fd5b505af1158015612473573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806124a3576124a2612537565b5b6124ae848484612574565b806124bc576124bb61273f565b5b50505050565b600061250483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612753565b905092915050565b60008060006125196127b6565b9150915061253081836124c290919063ffffffff16565b9250505090565b6000600c5414801561254b57506000600d54145b61257257600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061258687612815565b9550955095509550955095506125e486600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287d90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061267985600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128c790919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126c581612925565b6126cf84836129e2565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161272c9190612f9f565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b6000808311829061279a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127919190612e48565b60405180910390fd5b50600083856127a99190613be1565b9050809150509392505050565b600080600060065490506000670de0b6b3a764000090506127ea670de0b6b3a76400006006546124c290919063ffffffff16565b82101561280857600654670de0b6b3a7640000935093505050612811565b81819350935050505b9091565b60008060008060008060008060006128328a600c54600d54612a1c565b925092509250600061284261250c565b905060008060006128558e878787612ab2565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006128bf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612051565b905092915050565b60008082846128d69190613891565b90508381101561291b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291290613c5e565b60405180910390fd5b8091505092915050565b600061292f61250c565b905060006129468284612b3b90919063ffffffff16565b905061299a81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128c790919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6129f78260065461287d90919063ffffffff16565b600681905550612a12816007546128c790919063ffffffff16565b6007819055505050565b600080600080612a486064612a3a888a612b3b90919063ffffffff16565b6124c290919063ffffffff16565b90506000612a726064612a64888b612b3b90919063ffffffff16565b6124c290919063ffffffff16565b90506000612a9b82612a8d858c61287d90919063ffffffff16565b61287d90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612acb8589612b3b90919063ffffffff16565b90506000612ae28689612b3b90919063ffffffff16565b90506000612af98789612b3b90919063ffffffff16565b90506000612b2282612b14858761287d90919063ffffffff16565b61287d90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612b4d5760009050612baf565b60008284612b5b9190613c7e565b9050828482612b6a9190613be1565b14612baa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba190613d32565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612c1782612bce565b810181811067ffffffffffffffff82111715612c3657612c35612bdf565b5b80604052505050565b6000612c49612bb5565b9050612c558282612c0e565b919050565b600067ffffffffffffffff821115612c7557612c74612bdf565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cb682612c8b565b9050919050565b612cc681612cab565b8114612cd157600080fd5b50565b600081359050612ce381612cbd565b92915050565b6000612cfc612cf784612c5a565b612c3f565b90508083825260208201905060208402830185811115612d1f57612d1e612c86565b5b835b81811015612d485780612d348882612cd4565b845260208401935050602081019050612d21565b5050509392505050565b600082601f830112612d6757612d66612bc9565b5b8135612d77848260208601612ce9565b91505092915050565b600060208284031215612d9657612d95612bbf565b5b600082013567ffffffffffffffff811115612db457612db3612bc4565b5b612dc084828501612d52565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e03578082015181840152602081019050612de8565b60008484015250505050565b6000612e1a82612dc9565b612e248185612dd4565b9350612e34818560208601612de5565b612e3d81612bce565b840191505092915050565b60006020820190508181036000830152612e628184612e0f565b905092915050565b6000819050919050565b612e7d81612e6a565b8114612e8857600080fd5b50565b600081359050612e9a81612e74565b92915050565b60008060408385031215612eb757612eb6612bbf565b5b6000612ec585828601612cd4565b9250506020612ed685828601612e8b565b9150509250929050565b60008115159050919050565b612ef581612ee0565b82525050565b6000602082019050612f106000830184612eec565b92915050565b6000819050919050565b6000612f3b612f36612f3184612c8b565b612f16565b612c8b565b9050919050565b6000612f4d82612f20565b9050919050565b6000612f5f82612f42565b9050919050565b612f6f81612f54565b82525050565b6000602082019050612f8a6000830184612f66565b92915050565b612f9981612e6a565b82525050565b6000602082019050612fb46000830184612f90565b92915050565b600080600060608486031215612fd357612fd2612bbf565b5b6000612fe186828701612cd4565b9350506020612ff286828701612cd4565b925050604061300386828701612e8b565b9150509250925092565b600060ff82169050919050565b6130238161300d565b82525050565b600060208201905061303e600083018461301a565b92915050565b61304d81612cab565b82525050565b60006020820190506130686000830184613044565b92915050565b60006020828403121561308457613083612bbf565b5b600061309284828501612cd4565b91505092915050565b6130a481612ee0565b81146130af57600080fd5b50565b6000813590506130c18161309b565b92915050565b6000602082840312156130dd576130dc612bbf565b5b60006130eb848285016130b2565b91505092915050565b60006020828403121561310a57613109612bbf565b5b600061311884828501612e8b565b91505092915050565b6000806000806080858703121561313b5761313a612bbf565b5b600061314987828801612e8b565b945050602061315a87828801612e8b565b935050604061316b87828801612e8b565b925050606061317c87828801612e8b565b91505092959194509250565b600080fd5b60008083601f8401126131a3576131a2612bc9565b5b8235905067ffffffffffffffff8111156131c0576131bf613188565b5b6020830191508360208202830111156131dc576131db612c86565b5b9250929050565b6000806000604084860312156131fc576131fb612bbf565b5b600084013567ffffffffffffffff81111561321a57613219612bc4565b5b6132268682870161318d565b93509350506020613239868287016130b2565b9150509250925092565b6000806040838503121561325a57613259612bbf565b5b600061326885828601612cd4565b925050602061327985828601612cd4565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006132b9602083612dd4565b91506132c482613283565b602082019050919050565b600060208201905081810360008301526132e8816132ac565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061335882612e6a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361338a5761338961331e565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006133f1602683612dd4565b91506133fc82613395565b604082019050919050565b60006020820190508181036000830152613420816133e4565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613483602483612dd4565b915061348e82613427565b604082019050919050565b600060208201905081810360008301526134b281613476565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613515602283612dd4565b9150613520826134b9565b604082019050919050565b6000602082019050818103600083015261354481613508565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006135a7602583612dd4565b91506135b28261354b565b604082019050919050565b600060208201905081810360008301526135d68161359a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613639602383612dd4565b9150613644826135dd565b604082019050919050565b600060208201905081810360008301526136688161362c565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006136cb602983612dd4565b91506136d68261366f565b604082019050919050565b600060208201905081810360008301526136fa816136be565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b600061375d603f83612dd4565b915061376882613701565b604082019050919050565b6000602082019050818103600083015261378c81613750565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006137c9601c83612dd4565b91506137d482613793565b602082019050919050565b600060208201905081810360008301526137f8816137bc565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b600061385b602383612dd4565b9150613866826137ff565b604082019050919050565b6000602082019050818103600083015261388a8161384e565b9050919050565b600061389c82612e6a565b91506138a783612e6a565b92508282019050808211156138bf576138be61331e565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613921602383612dd4565b915061392c826138c5565b604082019050919050565b6000602082019050818103600083015261395081613914565b9050919050565b600061396282612e6a565b915061396d83612e6a565b92508282039050818111156139855761398461331e565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006139e7602a83612dd4565b91506139f28261398b565b604082019050919050565b60006020820190508181036000830152613a16816139da565b9050919050565b600081519050613a2c81612cbd565b92915050565b600060208284031215613a4857613a47612bbf565b5b6000613a5684828501613a1d565b91505092915050565b6000819050919050565b6000613a84613a7f613a7a84613a5f565b612f16565b612e6a565b9050919050565b613a9481613a69565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613acf81612cab565b82525050565b6000613ae18383613ac6565b60208301905092915050565b6000602082019050919050565b6000613b0582613a9a565b613b0f8185613aa5565b9350613b1a83613ab6565b8060005b83811015613b4b578151613b328882613ad5565b9750613b3d83613aed565b925050600181019050613b1e565b5085935050505092915050565b600060a082019050613b6d6000830188612f90565b613b7a6020830187613a8b565b8181036040830152613b8c8186613afa565b9050613b9b6060830185613044565b613ba86080830184612f90565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613bec82612e6a565b9150613bf783612e6a565b925082613c0757613c06613bb2565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c48601b83612dd4565b9150613c5382613c12565b602082019050919050565b60006020820190508181036000830152613c7781613c3b565b9050919050565b6000613c8982612e6a565b9150613c9483612e6a565b9250828202613ca281612e6a565b91508282048414831517613cb957613cb861331e565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d1c602183612dd4565b9150613d2782613cc0565b604082019050919050565b60006020820190508181036000830152613d4b81613d0f565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220bc74e097fb889405d717eae067b40d70afdfc506d3f6e7a72176598d7e24576164736f6c63430008110033
0x6080604052670de0b6b3a76400006000196200001c91906200070d565b6000196200002b919062000774565b6006556000600855600980556000600a556010600b55600a54600c55600b54600d55600c54600e55600d54600f557371a112c4f6a67bd1f28226dab70036b961f9a157601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507371a112c4f6a67bd1f28226dab70036b961f9a157601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555066038d7ea4c6800060165566071afd498d000060175565246139ca80006018553480156200016557600080fd5b50600062000178620006a360201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200022d620006a360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000311573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000337919062000819565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200039f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c5919062000819565b6040518363ffffffff1660e01b8152600401620003e49291906200085c565b6020604051808303816000875af115801562000404573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042a919062000819565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016005600062000480620006ab60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200062d620006a360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516200069491906200089a565b60405180910390a350620008b7565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200071a82620006d4565b91506200072783620006d4565b9250826200073a5762000739620006de565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200078182620006d4565b91506200078e83620006d4565b9250828203905081811115620007a957620007a862000745565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007e182620007b4565b9050919050565b620007f381620007d4565b8114620007ff57600080fd5b50565b6000815190506200081381620007e8565b92915050565b600060208284031215620008325762000831620007af565b5b6000620008428482850162000802565b91505092915050565b6200085681620007d4565b82525050565b60006040820190506200087360008301856200084b565b6200088260208301846200084b565b9392505050565b6200089481620006d4565b82525050565b6000602082019050620008b1600083018462000889565b92915050565b613db080620008c76000396000f3fe6080604052600436106101c55760003560e01c806374010ece116100f7578063a2a957bb11610095578063c492f04611610064578063c492f04614610614578063dd62ed3e1461063d578063ea1644d51461067a578063f2fde38b146106a3576101cc565b8063a2a957bb1461055a578063a9059cbb14610583578063bfd79284146105c0578063c3c8cd80146105fd576101cc565b80638f70ccf7116100d15780638f70ccf7146104b25780638f9a55c0146104db57806395d89b411461050657806398a5c31514610531576101cc565b806374010ece146104335780637d1db4a51461045c5780638da5cb5b14610487576101cc565b8063313ce567116101645780636d8aa8f81161013e5780636d8aa8f81461039f5780636fc3eaec146103c857806370a08231146103df578063715018a61461041c576101cc565b8063313ce5671461032057806349bd5a5e1461034b5780636b99905314610376576101cc565b80631694505e116101a05780631694505e1461026257806318160ddd1461028d57806323b872dd146102b85780632fd689e3146102f5576101cc565b8062b8cf2a146101d157806306fdde03146101fa578063095ea7b314610225576101cc565b366101cc57005b600080fd5b3480156101dd57600080fd5b506101f860048036038101906101f39190612d80565b6106cc565b005b34801561020657600080fd5b5061020f6107f6565b60405161021c9190612e48565b60405180910390f35b34801561023157600080fd5b5061024c60048036038101906102479190612ea0565b610833565b6040516102599190612efb565b60405180910390f35b34801561026e57600080fd5b50610277610851565b6040516102849190612f75565b60405180910390f35b34801561029957600080fd5b506102a2610877565b6040516102af9190612f9f565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da9190612fba565b610887565b6040516102ec9190612efb565b60405180910390f35b34801561030157600080fd5b5061030a610960565b6040516103179190612f9f565b60405180910390f35b34801561032c57600080fd5b50610335610966565b6040516103429190613029565b60405180910390f35b34801561035757600080fd5b5061036061096f565b60405161036d9190613053565b60405180910390f35b34801561038257600080fd5b5061039d6004803603810190610398919061306e565b610995565b005b3480156103ab57600080fd5b506103c660048036038101906103c191906130c7565b610a85565b005b3480156103d457600080fd5b506103dd610b37565b005b3480156103eb57600080fd5b506104066004803603810190610401919061306e565b610c08565b6040516104139190612f9f565b60405180910390f35b34801561042857600080fd5b50610431610c59565b005b34801561043f57600080fd5b5061045a600480360381019061045591906130f4565b610dac565b005b34801561046857600080fd5b50610471610e4b565b60405161047e9190612f9f565b60405180910390f35b34801561049357600080fd5b5061049c610e51565b6040516104a99190613053565b60405180910390f35b3480156104be57600080fd5b506104d960048036038101906104d491906130c7565b610e7a565b005b3480156104e757600080fd5b506104f0610f2c565b6040516104fd9190612f9f565b60405180910390f35b34801561051257600080fd5b5061051b610f32565b6040516105289190612e48565b60405180910390f35b34801561053d57600080fd5b50610558600480360381019061055391906130f4565b610f6f565b005b34801561056657600080fd5b50610581600480360381019061057c9190613121565b61100e565b005b34801561058f57600080fd5b506105aa60048036038101906105a59190612ea0565b6110c5565b6040516105b79190612efb565b60405180910390f35b3480156105cc57600080fd5b506105e760048036038101906105e2919061306e565b6110e3565b6040516105f49190612efb565b60405180910390f35b34801561060957600080fd5b50610612611103565b005b34801561062057600080fd5b5061063b600480360381019061063691906131e3565b6111dc565b005b34801561064957600080fd5b50610664600480360381019061065f9190613243565b611316565b6040516106719190612f9f565b60405180910390f35b34801561068657600080fd5b506106a1600480360381019061069c91906130f4565b61139d565b005b3480156106af57600080fd5b506106ca60048036038101906106c5919061306e565b61143c565b005b6106d46115fd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610761576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610758906132cf565b60405180910390fd5b60005b81518110156107f257600160106000848481518110610786576107856132ef565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107ea9061334d565b915050610764565b5050565b60606040518060400160405280600881526020017f446f6765476f6c64000000000000000000000000000000000000000000000000815250905090565b60006108476108406115fd565b8484611605565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006108948484846117ce565b610955846108a06115fd565b61095085604051806060016040528060288152602001613d5360289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109066115fd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120519092919063ffffffff16565b611605565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61099d6115fd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a21906132cf565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610a8d6115fd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b11906132cf565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b786115fd565b73ffffffffffffffffffffffffffffffffffffffff161480610bee5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bd66115fd565b73ffffffffffffffffffffffffffffffffffffffff16145b610bf757600080fd5b6000479050610c05816120b5565b50565b6000610c52600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121b0565b9050919050565b610c616115fd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce5906132cf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610db46115fd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e38906132cf565b60405180910390fd5b8060168190555050565b60165481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e826115fd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f06906132cf565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600581526020017f44474f4c44000000000000000000000000000000000000000000000000000000815250905090565b610f776115fd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffb906132cf565b60405180910390fd5b8060188190555050565b6110166115fd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109a906132cf565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b60006110d96110d26115fd565b84846117ce565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111446115fd565b73ffffffffffffffffffffffffffffffffffffffff1614806111ba5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111a26115fd565b73ffffffffffffffffffffffffffffffffffffffff16145b6111c357600080fd5b60006111ce30610c08565b90506111d98161221e565b50565b6111e46115fd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611271576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611268906132cf565b60405180910390fd5b60005b83839050811015611310578160056000868685818110611297576112966132ef565b5b90506020020160208101906112ac919061306e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806113089061334d565b915050611274565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113a56115fd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611432576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611429906132cf565b60405180910390fd5b8060178190555050565b6114446115fd565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c8906132cf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611540576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153790613407565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611674576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166b90613499565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116da9061352b565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117c19190612f9f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361183d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611834906135bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a39061364f565b60405180910390fd5b600081116118ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e6906136e1565b60405180910390fd5b6118f7610e51565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119655750611935610e51565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d5057601560149054906101000a900460ff166119f457611986610e51565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ea90613773565b60405180910390fd5b5b601654811115611a39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a30906137df565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611add5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1390613871565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611bc95760175481611b7e84610c08565b611b889190613891565b10611bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbf90613937565b60405180910390fd5b5b6000611bd430610c08565b9050600060185482101590506016548210611bef5760165491505b808015611c07575060158054906101000a900460ff16155b8015611c615750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c795750601560169054906101000a900460ff165b8015611ccf5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d255750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d4d57611d338261221e565b60004790506000811115611d4b57611d4a476120b5565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611df75750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611eaa5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611ea95750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611eb8576000905061203f565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f635750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f7b57600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120265750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561203e57600a54600c81905550600b54600d819055505b5b61204b84848484612495565b50505050565b6000838311158290612099576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120909190612e48565b60405180910390fd5b50600083856120a89190613957565b9050809150509392505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6121056002846124c290919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612130573d6000803e3d6000fd5b50601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6121816002846124c290919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156121ac573d6000803e3d6000fd5b5050565b60006006548211156121f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ee906139fd565b60405180910390fd5b600061220161250c565b905061221681846124c290919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561225557612254612bdf565b5b6040519080825280602002602001820160405280156122835781602001602082028036833780820191505090505b509050308160008151811061229b5761229a6132ef565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612342573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123669190613a32565b8160018151811061237a576123796132ef565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123e130601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611605565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612445959493929190613b58565b600060405180830381600087803b15801561245f57600080fd5b505af1158015612473573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806124a3576124a2612537565b5b6124ae848484612574565b806124bc576124bb61273f565b5b50505050565b600061250483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612753565b905092915050565b60008060006125196127b6565b9150915061253081836124c290919063ffffffff16565b9250505090565b6000600c5414801561254b57506000600d54145b61257257600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061258687612815565b9550955095509550955095506125e486600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461287d90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061267985600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128c790919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126c581612925565b6126cf84836129e2565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161272c9190612f9f565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b6000808311829061279a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127919190612e48565b60405180910390fd5b50600083856127a99190613be1565b9050809150509392505050565b600080600060065490506000670de0b6b3a764000090506127ea670de0b6b3a76400006006546124c290919063ffffffff16565b82101561280857600654670de0b6b3a7640000935093505050612811565b81819350935050505b9091565b60008060008060008060008060006128328a600c54600d54612a1c565b925092509250600061284261250c565b905060008060006128558e878787612ab2565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006128bf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612051565b905092915050565b60008082846128d69190613891565b90508381101561291b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291290613c5e565b60405180910390fd5b8091505092915050565b600061292f61250c565b905060006129468284612b3b90919063ffffffff16565b905061299a81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128c790919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6129f78260065461287d90919063ffffffff16565b600681905550612a12816007546128c790919063ffffffff16565b6007819055505050565b600080600080612a486064612a3a888a612b3b90919063ffffffff16565b6124c290919063ffffffff16565b90506000612a726064612a64888b612b3b90919063ffffffff16565b6124c290919063ffffffff16565b90506000612a9b82612a8d858c61287d90919063ffffffff16565b61287d90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612acb8589612b3b90919063ffffffff16565b90506000612ae28689612b3b90919063ffffffff16565b90506000612af98789612b3b90919063ffffffff16565b90506000612b2282612b14858761287d90919063ffffffff16565b61287d90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612b4d5760009050612baf565b60008284612b5b9190613c7e565b9050828482612b6a9190613be1565b14612baa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba190613d32565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612c1782612bce565b810181811067ffffffffffffffff82111715612c3657612c35612bdf565b5b80604052505050565b6000612c49612bb5565b9050612c558282612c0e565b919050565b600067ffffffffffffffff821115612c7557612c74612bdf565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cb682612c8b565b9050919050565b612cc681612cab565b8114612cd157600080fd5b50565b600081359050612ce381612cbd565b92915050565b6000612cfc612cf784612c5a565b612c3f565b90508083825260208201905060208402830185811115612d1f57612d1e612c86565b5b835b81811015612d485780612d348882612cd4565b845260208401935050602081019050612d21565b5050509392505050565b600082601f830112612d6757612d66612bc9565b5b8135612d77848260208601612ce9565b91505092915050565b600060208284031215612d9657612d95612bbf565b5b600082013567ffffffffffffffff811115612db457612db3612bc4565b5b612dc084828501612d52565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e03578082015181840152602081019050612de8565b60008484015250505050565b6000612e1a82612dc9565b612e248185612dd4565b9350612e34818560208601612de5565b612e3d81612bce565b840191505092915050565b60006020820190508181036000830152612e628184612e0f565b905092915050565b6000819050919050565b612e7d81612e6a565b8114612e8857600080fd5b50565b600081359050612e9a81612e74565b92915050565b60008060408385031215612eb757612eb6612bbf565b5b6000612ec585828601612cd4565b9250506020612ed685828601612e8b565b9150509250929050565b60008115159050919050565b612ef581612ee0565b82525050565b6000602082019050612f106000830184612eec565b92915050565b6000819050919050565b6000612f3b612f36612f3184612c8b565b612f16565b612c8b565b9050919050565b6000612f4d82612f20565b9050919050565b6000612f5f82612f42565b9050919050565b612f6f81612f54565b82525050565b6000602082019050612f8a6000830184612f66565b92915050565b612f9981612e6a565b82525050565b6000602082019050612fb46000830184612f90565b92915050565b600080600060608486031215612fd357612fd2612bbf565b5b6000612fe186828701612cd4565b9350506020612ff286828701612cd4565b925050604061300386828701612e8b565b9150509250925092565b600060ff82169050919050565b6130238161300d565b82525050565b600060208201905061303e600083018461301a565b92915050565b61304d81612cab565b82525050565b60006020820190506130686000830184613044565b92915050565b60006020828403121561308457613083612bbf565b5b600061309284828501612cd4565b91505092915050565b6130a481612ee0565b81146130af57600080fd5b50565b6000813590506130c18161309b565b92915050565b6000602082840312156130dd576130dc612bbf565b5b60006130eb848285016130b2565b91505092915050565b60006020828403121561310a57613109612bbf565b5b600061311884828501612e8b565b91505092915050565b6000806000806080858703121561313b5761313a612bbf565b5b600061314987828801612e8b565b945050602061315a87828801612e8b565b935050604061316b87828801612e8b565b925050606061317c87828801612e8b565b91505092959194509250565b600080fd5b60008083601f8401126131a3576131a2612bc9565b5b8235905067ffffffffffffffff8111156131c0576131bf613188565b5b6020830191508360208202830111156131dc576131db612c86565b5b9250929050565b6000806000604084860312156131fc576131fb612bbf565b5b600084013567ffffffffffffffff81111561321a57613219612bc4565b5b6132268682870161318d565b93509350506020613239868287016130b2565b9150509250925092565b6000806040838503121561325a57613259612bbf565b5b600061326885828601612cd4565b925050602061327985828601612cd4565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006132b9602083612dd4565b91506132c482613283565b602082019050919050565b600060208201905081810360008301526132e8816132ac565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061335882612e6a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361338a5761338961331e565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006133f1602683612dd4565b91506133fc82613395565b604082019050919050565b60006020820190508181036000830152613420816133e4565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613483602483612dd4565b915061348e82613427565b604082019050919050565b600060208201905081810360008301526134b281613476565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613515602283612dd4565b9150613520826134b9565b604082019050919050565b6000602082019050818103600083015261354481613508565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006135a7602583612dd4565b91506135b28261354b565b604082019050919050565b600060208201905081810360008301526135d68161359a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613639602383612dd4565b9150613644826135dd565b604082019050919050565b600060208201905081810360008301526136688161362c565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006136cb602983612dd4565b91506136d68261366f565b604082019050919050565b600060208201905081810360008301526136fa816136be565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b600061375d603f83612dd4565b915061376882613701565b604082019050919050565b6000602082019050818103600083015261378c81613750565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006137c9601c83612dd4565b91506137d482613793565b602082019050919050565b600060208201905081810360008301526137f8816137bc565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b600061385b602383612dd4565b9150613866826137ff565b604082019050919050565b6000602082019050818103600083015261388a8161384e565b9050919050565b600061389c82612e6a565b91506138a783612e6a565b92508282019050808211156138bf576138be61331e565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613921602383612dd4565b915061392c826138c5565b604082019050919050565b6000602082019050818103600083015261395081613914565b9050919050565b600061396282612e6a565b915061396d83612e6a565b92508282039050818111156139855761398461331e565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006139e7602a83612dd4565b91506139f28261398b565b604082019050919050565b60006020820190508181036000830152613a16816139da565b9050919050565b600081519050613a2c81612cbd565b92915050565b600060208284031215613a4857613a47612bbf565b5b6000613a5684828501613a1d565b91505092915050565b6000819050919050565b6000613a84613a7f613a7a84613a5f565b612f16565b612e6a565b9050919050565b613a9481613a69565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613acf81612cab565b82525050565b6000613ae18383613ac6565b60208301905092915050565b6000602082019050919050565b6000613b0582613a9a565b613b0f8185613aa5565b9350613b1a83613ab6565b8060005b83811015613b4b578151613b328882613ad5565b9750613b3d83613aed565b925050600181019050613b1e565b5085935050505092915050565b600060a082019050613b6d6000830188612f90565b613b7a6020830187613a8b565b8181036040830152613b8c8186613afa565b9050613b9b6060830185613044565b613ba86080830184612f90565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613bec82612e6a565b9150613bf783612e6a565b925082613c0757613c06613bb2565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c48601b83612dd4565b9150613c5382613c12565b602082019050919050565b60006020820190508181036000830152613c7781613c3b565b9050919050565b6000613c8982612e6a565b9150613c9483612e6a565b9250828202613ca281612e6a565b91508282048414831517613cb957613cb861331e565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d1c602183612dd4565b9150613d2782613cc0565b604082019050919050565b60006020820190508181036000830152613d4b81613d0f565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220bc74e097fb889405d717eae067b40d70afdfc506d3f6e7a72176598d7e24576164736f6c63430008110033