{
  "contractName": "TokenInfoWidgetRenderer",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "TOKEN_ADDRESS",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "TOKEN_INFO",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "SHORT_DESC",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "LONG_DESC",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "locale",
          "type": "string"
        },
        {
          "name": "key",
          "type": "string"
        },
        {
          "name": "value",
          "type": "string"
        }
      ],
      "name": "setResource",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "locale",
          "type": "string"
        },
        {
          "name": "key",
          "type": "string"
        }
      ],
      "name": "resource",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipRenounced",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_locale",
          "type": "string"
        },
        {
          "name": "_sale",
          "type": "address"
        }
      ],
      "name": "render",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405260008054600160a060020a031916331790556124c0806100256000396000f30060806040526004361061008a5763ffffffff60e060020a6000350416630bdf5300811461008f5780636da26d4e14610119578063715018a61461012e5780638b582712146101455780638da5cb5b1461015a578063ac5c6e121461018b578063ca1a70be146101a0578063ed3487fe14610204578063f2fde38b146102d9578063f65a5c1b146102fa575b600080fd5b34801561009b57600080fd5b506100a4610391565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100de5781810151838201526020016100c6565b50505050905090810190601f16801561010b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561012557600080fd5b506100a46103c8565b34801561013a57600080fd5b506101436103ff565b005b34801561015157600080fd5b506100a461046b565b34801561016657600080fd5b5061016f6104a2565b60408051600160a060020a039092168252519081900360200190f35b34801561019757600080fd5b506100a46104b1565b3480156101ac57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526100a494369492936024939284019190819084018382808284375094975050509235600160a060020a031693506104e892505050565b34801561021057600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261014394369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506110899650505050505050565b3480156102e557600080fd5b50610143600160a060020a0360043516611176565b34801561030657600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526100a494369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506111999650505050505050565b60408051808201909152600d81527f746f6b656e5f6164647265737300000000000000000000000000000000000000602082015281565b60408051808201909152600a81527f746f6b656e5f696e666f00000000000000000000000000000000000000000000602082015281565b600054600160a060020a0316331461041657600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b60408051808201909152600a81527f73686f72745f6465736300000000000000000000000000000000000000000000602082015281565b600054600160a060020a031681565b60408051808201909152600981527f6c6f6e675f646573630000000000000000000000000000000000000000000000602082015281565b6060600060606104f66122e5565b84600160a060020a031663fc0c546a6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561053457600080fd5b505af1158015610548573d6000803e3d6000fd5b505050506040513d602081101561055e57600080fd5b505160408051600280825260608201909252919450816020015b610580612315565b81526020019060019003908161057857905050915060e0604051908101604052806001151581526020016040805190810160405280600a81526020017f746f6b656e5f696e666f0000000000000000000000000000000000000000000081525081526020016040805190810160405280600481526020017f746578740000000000000000000000000000000000000000000000000000000081525081526020016040805190810160405280600581526020017f455243323000000000000000000000000000000000000000000000000000000081525081526020016108f385600160a060020a03166306fdde036040518163ffffffff1660e060020a028152600401600060405180830381600087803b15801561069c57600080fd5b505af11580156106b0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156106d957600080fd5b8101908080516401000000008111156106f157600080fd5b8201602081018481111561070457600080fd5b815164010000000081118282018710171561071e57600080fd5b505092919050505086600160a060020a03166395d89b416040518163ffffffff1660e060020a028152600401600060405180830381600087803b15801561076457600080fd5b505af1158015610778573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156107a157600080fd5b8101908080516401000000008111156107b957600080fd5b820160208101848111156107cc57600080fd5b81516401000000008111828201871017156107e657600080fd5b50509291905050506040516020018083805190602001908083835b602083106108205780518252601f199092019160209182019101610801565b51815160209384036101000a60001901801990921691161790527f2028000000000000000000000000000000000000000000000000000000000000919093019081528451600290910192850191508083835b602083106108915780518252601f199092019160209182019101610872565b6001836020036101000a038019825116818451168082178552505050505050905001807f2900000000000000000000000000000000000000000000000000000000000000815250600101925050506040516020818303038152906040526112ea565b815260200161090061135f565b815260200161090d6113b2565b905282518390600090811061091e57fe5b9060200190602002018190525060e0604051908101604052806001151581526020016040805190810160405280600d81526020017f746f6b656e5f616464726573730000000000000000000000000000000000000081525081526020016040805190810160405280600781526020017f616464726573730000000000000000000000000000000000000000000000000081525081526020016001886040518082805190602001908083835b602083106109e85780518252601f1990920191602091820191016109c9565b51815160209384036101000a60001901801990921691161790529201948552506040805194859003820185208582018252600d8087527f746f6b656e5f616464726573730000000000000000000000000000000000000093870193845291519095945092508291908083835b60208310610a735780518252601f199092019160209182019101610a54565b518151600019602094850361010090810a820192831692199390931691909117909252949092019687526040805197889003820188208054601f6002600183161590980290950116959095049283018290048202880182019052818752929450925050830182828015610b275780601f10610afc57610100808354040283529160200191610b27565b820191906000526020600020905b815481529060010190602001808311610b0a57829003601f168201915b50505050508152602001610bb4610baf88600160a060020a031663fc0c546a6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610b7557600080fd5b505af1158015610b89573d6000803e3d6000fd5b505050506040513d6020811015610b9f57600080fd5b5051600160a060020a031661143f565b6112ea565b8152602001610bc161135f565b8152602001610bce6113b2565b9052825183906001908110610bdf57fe5b9060200190602002018190525060a0604051908101604052806001886040518082805190602001908083835b60208310610c2a5780518252601f199092019160209182019101610c0b565b51815160209384036101000a60001901801990921691161790529201948552506040805194859003820185208582018252600a8087527f746f6b656e5f696e666f0000000000000000000000000000000000000000000093870193845291519095945092508291908083835b60208310610cb55780518252601f199092019160209182019101610c96565b518151600019602094850361010090810a820192831692199390931691909117909252949092019687526040805197889003820188208054601f6002600183161590980290950116959095049283018290048202880182019052818752929450925050830182828015610d695780601f10610d3e57610100808354040283529160200191610d69565b820191906000526020600020905b815481529060010190602001808311610d4c57829003601f168201915b505050505081526020016001886040518082805190602001908083835b60208310610da55780518252601f199092019160209182019101610d86565b51815160209384036101000a60001901801990921691161790529201948552506040805194859003820185208582018252600a8087527f73686f72745f646573630000000000000000000000000000000000000000000093870193845291519095945092508291908083835b60208310610e305780518252601f199092019160209182019101610e11565b518151600019602094850361010090810a820192831692199390931691909117909252949092019687526040805197889003820188208054601f6002600183161590980290950116959095049283018290048202880182019052818752929450925050830182828015610ee45780601f10610eb957610100808354040283529160200191610ee4565b820191906000526020600020905b815481529060010190602001808311610ec757829003601f168201915b505050505081526020016001886040518082805190602001908083835b60208310610f205780518252601f199092019160209182019101610f01565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520858201825260098087527f6c6f6e675f64657363000000000000000000000000000000000000000000000093870193845291519095945092508291908083835b60208310610fab5780518252601f199092019160209182019101610f8c565b518151600019602094850361010090810a820192831692199390931691909117909252949092019687526040805197889003820188208054601f600260018316159098029095011695909504928301829004820288018201905281875292945092505083018282801561105f5780601f106110345761010080835404028352916020019161105f565b820191906000526020600020905b81548152906001019060200180831161104257829003601f168201915b505050505081526020016004815260200183815250905061107f81611585565b9695505050505050565b600054600160a060020a031633146110a057600080fd5b806001846040518082805190602001908083835b602083106110d35780518252601f1990920191602091820191016110b4565b51815160209384036101000a6000190180199092169116179052920194855250604051938490038101842087519094889450925082918401908083835b6020831061112f5780518252601f199092019160209182019101611110565b51815160209384036101000a600019018019909216911617905292019485525060405193849003810190932084516111709591949190910192509050612361565b50505050565b600054600160a060020a0316331461118d57600080fd5b611196816117e2565b50565b60606001836040518082805190602001908083835b602083106111cd5780518252601f1990920191602091820191016111ae565b51815160209384036101000a6000190180199092169116179052920194855250604051938490038101842086519094879450925082918401908083835b602083106112295780518252601f19909201916020918201910161120a565b518151600019602094850361010090810a820192831692199390931691909117909252949092019687526040805197889003820188208054601f60026001831615909802909501169590950492830182900482028801820190528187529294509250508301828280156112dd5780601f106112b2576101008083540402835291602001916112dd565b820191906000526020600020905b8154815290600101906020018083116112c057829003601f168201915b5050505050905092915050565b606061135961131460408051908101604052806001815260200160f960020a60110281525061185f565b6113486113546113238661185f565b61134860408051908101604052806001815260200160f960020a60110281525061185f565b9063ffffffff61188816565b61185f565b92915050565b6113676123df565b506040805160a0810182526000808252602080830182905283518082018552828152838501528351808201855282815260608401528351908101909352825260808101919091525b90565b6113ba61240c565b604080516060810182526000808252825181815260208181019094529192830191906113fc565b6113e9612430565b8152602001906001900390816113e15790505b508152602001600060405190808252806020026020018201604052801561143757816020015b60608152602001906001900390816114225790505b509052905090565b60408051602a80825260608083019093528291600091829182916020820161054080388339505081519195507f300000000000000000000000000000000000000000000000000000000000000091869150600090811061149b57fe5b906020010190600160f860020a031916908160001a90535083517f780000000000000000000000000000000000000000000000000000000000000090859060019081106114e457fe5b906020010190600160f860020a031916908160001a905350859250600091505b602882101561157857506030600f8316016039600160a060020a038216111561152b576027015b8060f860020a02848360280360010181518110151561154657fe5b906020010190600160f860020a031916908160001a9053506010600160a060020a038416049250600190910190611504565b8394505b50505050919050565b60408051808201909152600a81527f7b227469746c65223a220000000000000000000000000000000000000000000060208201528151606091906000906115d8906115cf9061185f565b6113488461185f565b915061161b6115cf6040805190810160405280600f81526020017f222c2273686f727444657363223a22000000000000000000000000000000000081525061185f565b915061162d6115cf856020015161185f565b91506116706115cf6040805190810160405280600e81526020017f222c226c6f6e6744657363223a2200000000000000000000000000000000000081525061185f565b91506116826115cf856040015161185f565b91506116c56115cf6040805190810160405280600a81526020017f222c227769647468223a0000000000000000000000000000000000000000000081525061185f565b91506116da6115cf61135486606001516118ff565b915061171d6115cf6040805190810160405280600d81526020017f2c22656c656d656e7473223a5b0000000000000000000000000000000000000081525061185f565b9150600090505b836080015151811015611799576000811115611765576117626115cf60408051908101604052806001815260200160fa60020a600b0281525061185f565b91505b61178f6115cf61135486608001518481518110151561178057fe5b90602001906020020151611a5a565b9150600101611724565b6117da6115cf6040805190810160405280600281526020017f5d7d00000000000000000000000000000000000000000000000000000000000081525061185f565b949350505050565b600160a060020a03811615156117f757600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b611867612463565b50604080518082019091528151815260208281019082018190525b50919050565b606080600083600001518560000151016040519080825280601f01601f1916602001820160405280156118c5578160200160208202803883390190505b5091506020820190506118e18186602001518760000151611d2f565b8451602085015185516118f79284019190611d2f565b509392505050565b606080600081818515156119485760408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152945061157c565b6040805160208082528183019092529080820161040080388339019050509350600092505b60008611156119ba57600a860660300160f860020a02848481518110151561199157fe5b906020010190600160f860020a031916908160001a905350600a8604955060019092019161196d565b60408051848152601f19601f860116810160200190915260001984019380156119ed578160200160208202803883390190505b509150600090505b8151811015611a5157835160001984019385918110611a1057fe5b90602001015160f860020a900460f860020a028282815181101515611a3157fe5b906020010190600160f860020a031916908160001a9053506001016119f5565b50949350505050565b606080826000015115611cf4576040805190810160405280600781526020017f7b226964223a22000000000000000000000000000000000000000000000000008152509050611ab8611aaf846020015161185f565b6113488361185f565b9050611ae2611aaf60408051908101604052806001815260200160f960020a60110281525061185f565b60a08401515190915015611b4957611b31611aaf6040805190810160405280600b81526020017f2c2022616374696f6e223a00000000000000000000000000000000000000000081525061185f565b9050611b46611aaf6113548560a00151611d73565b90505b60c08301515115611bad57611b95611aaf6040805190810160405280600a81526020017f2c20227461626c65223a0000000000000000000000000000000000000000000081525061185f565b9050611baa611aaf6113548560c00151611f16565b90505b611bee611aaf6040805190810160405280600981526020017f2c2274797065223a22000000000000000000000000000000000000000000000081525061185f565b9050611c00611aaf846040015161185f565b9050611c43611aaf6040805190810160405280600b81526020017f222c226c6162656c223a2200000000000000000000000000000000000000000081525061185f565b9050611c55611aaf846060015161185f565b9050611c98611aaf6040805190810160405280600981526020017f222c2264617461223a000000000000000000000000000000000000000000000081525061185f565b9050611caa611aaf846080015161185f565b9050611ced611aaf6040805190810160405280600181526020017f7d0000000000000000000000000000000000000000000000000000000000000081525061185f565b9150611882565b60408051808201909152600481527f6e756c6c0000000000000000000000000000000000000000000000000000000060208201529150611882565b60005b60208210611d54578251845260209384019390920191601f1990910190611d32565b50905182516020929092036101000a6000190180199091169116179052565b606080826000015115611cf4576040805190810160405280600c81526020017f7b2261646472657373223a2200000000000000000000000000000000000000008152509050611dd4611aaf6113548560200151600160a060020a031661143f565b9050611e17611aaf6040805190810160405280601681526020017f222c2266756e6374696f6e53656c6563746f72223a220000000000000000000081525061185f565b9050611e29611aaf846040015161185f565b9050611e6c611aaf6040805190810160405280600e81526020017f222c22617267756d656e7473223a00000000000000000000000000000000000081525061185f565b9050611e7e611aaf846060015161185f565b9050611ec1611aaf6040805190810160405280600c81526020017f2c22636f6e6669726d223a22000000000000000000000000000000000000000081525061185f565b9050611ed3611aaf846080015161185f565b9050611ced611aaf6040805190810160405280600281526020017f227d00000000000000000000000000000000000000000000000000000000000081525061185f565b6060806000808460000151156120ee57505060408051808201909152600c81527f7b22636f6c756d6e73223a5b0000000000000000000000000000000000000000602082015290506000805b846020015151811015611fe4576000821115611fac57611fa9611fa060408051908101604052806001815260200160fa60020a600b0281525061185f565b6113488561185f565b92505b611fd6611fa0611354876020015184815181101515611fc757fe5b9060200190602002015161212d565b925060019182019101611f62565b612025611fa06040805190810160405280600a81526020017f5d2c22726f7773223a5b0000000000000000000000000000000000000000000081525061185f565b925060009150600090505b8460400151518110156120a65760008211156120715761206e611fa060408051908101604052806001815260200160fa60020a600b0281525061185f565b92505b612098611fa086604001518381518110151561208957fe5b9060200190602002015161185f565b925060019182019101612030565b6120e7611fa06040805190810160405280600281526020017f5d7d00000000000000000000000000000000000000000000000000000000000081525061185f565b9350612125565b60408051808201909152600481527f6e756c6c00000000000000000000000000000000000000000000000000000000602082015293505b505050919050565b606080826000015115611cf4576040805190810160405280600781526020017f7b226964223a22000000000000000000000000000000000000000000000000008152509050612182611aaf846020015161185f565b90506121ac611aaf60408051908101604052806001815260200160f960020a60110281525061185f565b6080840151519091501561223d576121e2611aaf60408051908101604052806001815260200160fa60020a600b0281525061185f565b9050612225611aaf6040805190810160405280600981526020017f22616374696f6e223a000000000000000000000000000000000000000000000081525061185f565b905061223a611aaf6113548560800151611d73565b90505b61227e611aaf6040805190810160405280600981526020017f2c2274797065223a22000000000000000000000000000000000000000000000081525061185f565b9050612290611aaf846040015161185f565b90506122d3611aaf6040805190810160405280600b81526020017f222c226c6162656c223a2200000000000000000000000000000000000000000081525061185f565b9050611ed3611aaf846060015161185f565b60a06040519081016040528060608152602001606081526020016060815260200160008152602001606081525090565b6101a0604051908101604052806000151581526020016060815260200160608152602001606081526020016060815260200161234f6123df565b815260200161235c61240c565b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106123a257805160ff19168380011785556123cf565b828001600101855582156123cf579182015b828111156123cf5782518255916020019190600101906123b4565b506123db92915061247a565b5090565b6040805160a081018252600080825260208201526060918101829052818101829052608081019190915290565b60606040519081016040528060001515815260200160608152602001606081525090565b6101206040519081016040528060001515815260200160608152602001606081526020016060815260200161235c6123df565b604080518082019091526000808252602082015290565b6113af91905b808211156123db57600081556001016124805600a165627a7a723058207c74dc6c5e54b18a95026ffd5341fe9b530e5fbcd8764cedbd7b8529e9bd2c890029",
  "deployedBytecode": "0x60806040526004361061008a5763ffffffff60e060020a6000350416630bdf5300811461008f5780636da26d4e14610119578063715018a61461012e5780638b582712146101455780638da5cb5b1461015a578063ac5c6e121461018b578063ca1a70be146101a0578063ed3487fe14610204578063f2fde38b146102d9578063f65a5c1b146102fa575b600080fd5b34801561009b57600080fd5b506100a4610391565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100de5781810151838201526020016100c6565b50505050905090810190601f16801561010b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561012557600080fd5b506100a46103c8565b34801561013a57600080fd5b506101436103ff565b005b34801561015157600080fd5b506100a461046b565b34801561016657600080fd5b5061016f6104a2565b60408051600160a060020a039092168252519081900360200190f35b34801561019757600080fd5b506100a46104b1565b3480156101ac57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526100a494369492936024939284019190819084018382808284375094975050509235600160a060020a031693506104e892505050565b34801561021057600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261014394369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506110899650505050505050565b3480156102e557600080fd5b50610143600160a060020a0360043516611176565b34801561030657600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526100a494369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506111999650505050505050565b60408051808201909152600d81527f746f6b656e5f6164647265737300000000000000000000000000000000000000602082015281565b60408051808201909152600a81527f746f6b656e5f696e666f00000000000000000000000000000000000000000000602082015281565b600054600160a060020a0316331461041657600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b60408051808201909152600a81527f73686f72745f6465736300000000000000000000000000000000000000000000602082015281565b600054600160a060020a031681565b60408051808201909152600981527f6c6f6e675f646573630000000000000000000000000000000000000000000000602082015281565b6060600060606104f66122e5565b84600160a060020a031663fc0c546a6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561053457600080fd5b505af1158015610548573d6000803e3d6000fd5b505050506040513d602081101561055e57600080fd5b505160408051600280825260608201909252919450816020015b610580612315565b81526020019060019003908161057857905050915060e0604051908101604052806001151581526020016040805190810160405280600a81526020017f746f6b656e5f696e666f0000000000000000000000000000000000000000000081525081526020016040805190810160405280600481526020017f746578740000000000000000000000000000000000000000000000000000000081525081526020016040805190810160405280600581526020017f455243323000000000000000000000000000000000000000000000000000000081525081526020016108f385600160a060020a03166306fdde036040518163ffffffff1660e060020a028152600401600060405180830381600087803b15801561069c57600080fd5b505af11580156106b0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156106d957600080fd5b8101908080516401000000008111156106f157600080fd5b8201602081018481111561070457600080fd5b815164010000000081118282018710171561071e57600080fd5b505092919050505086600160a060020a03166395d89b416040518163ffffffff1660e060020a028152600401600060405180830381600087803b15801561076457600080fd5b505af1158015610778573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156107a157600080fd5b8101908080516401000000008111156107b957600080fd5b820160208101848111156107cc57600080fd5b81516401000000008111828201871017156107e657600080fd5b50509291905050506040516020018083805190602001908083835b602083106108205780518252601f199092019160209182019101610801565b51815160209384036101000a60001901801990921691161790527f2028000000000000000000000000000000000000000000000000000000000000919093019081528451600290910192850191508083835b602083106108915780518252601f199092019160209182019101610872565b6001836020036101000a038019825116818451168082178552505050505050905001807f2900000000000000000000000000000000000000000000000000000000000000815250600101925050506040516020818303038152906040526112ea565b815260200161090061135f565b815260200161090d6113b2565b905282518390600090811061091e57fe5b9060200190602002018190525060e0604051908101604052806001151581526020016040805190810160405280600d81526020017f746f6b656e5f616464726573730000000000000000000000000000000000000081525081526020016040805190810160405280600781526020017f616464726573730000000000000000000000000000000000000000000000000081525081526020016001886040518082805190602001908083835b602083106109e85780518252601f1990920191602091820191016109c9565b51815160209384036101000a60001901801990921691161790529201948552506040805194859003820185208582018252600d8087527f746f6b656e5f616464726573730000000000000000000000000000000000000093870193845291519095945092508291908083835b60208310610a735780518252601f199092019160209182019101610a54565b518151600019602094850361010090810a820192831692199390931691909117909252949092019687526040805197889003820188208054601f6002600183161590980290950116959095049283018290048202880182019052818752929450925050830182828015610b275780601f10610afc57610100808354040283529160200191610b27565b820191906000526020600020905b815481529060010190602001808311610b0a57829003601f168201915b50505050508152602001610bb4610baf88600160a060020a031663fc0c546a6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610b7557600080fd5b505af1158015610b89573d6000803e3d6000fd5b505050506040513d6020811015610b9f57600080fd5b5051600160a060020a031661143f565b6112ea565b8152602001610bc161135f565b8152602001610bce6113b2565b9052825183906001908110610bdf57fe5b9060200190602002018190525060a0604051908101604052806001886040518082805190602001908083835b60208310610c2a5780518252601f199092019160209182019101610c0b565b51815160209384036101000a60001901801990921691161790529201948552506040805194859003820185208582018252600a8087527f746f6b656e5f696e666f0000000000000000000000000000000000000000000093870193845291519095945092508291908083835b60208310610cb55780518252601f199092019160209182019101610c96565b518151600019602094850361010090810a820192831692199390931691909117909252949092019687526040805197889003820188208054601f6002600183161590980290950116959095049283018290048202880182019052818752929450925050830182828015610d695780601f10610d3e57610100808354040283529160200191610d69565b820191906000526020600020905b815481529060010190602001808311610d4c57829003601f168201915b505050505081526020016001886040518082805190602001908083835b60208310610da55780518252601f199092019160209182019101610d86565b51815160209384036101000a60001901801990921691161790529201948552506040805194859003820185208582018252600a8087527f73686f72745f646573630000000000000000000000000000000000000000000093870193845291519095945092508291908083835b60208310610e305780518252601f199092019160209182019101610e11565b518151600019602094850361010090810a820192831692199390931691909117909252949092019687526040805197889003820188208054601f6002600183161590980290950116959095049283018290048202880182019052818752929450925050830182828015610ee45780601f10610eb957610100808354040283529160200191610ee4565b820191906000526020600020905b815481529060010190602001808311610ec757829003601f168201915b505050505081526020016001886040518082805190602001908083835b60208310610f205780518252601f199092019160209182019101610f01565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520858201825260098087527f6c6f6e675f64657363000000000000000000000000000000000000000000000093870193845291519095945092508291908083835b60208310610fab5780518252601f199092019160209182019101610f8c565b518151600019602094850361010090810a820192831692199390931691909117909252949092019687526040805197889003820188208054601f600260018316159098029095011695909504928301829004820288018201905281875292945092505083018282801561105f5780601f106110345761010080835404028352916020019161105f565b820191906000526020600020905b81548152906001019060200180831161104257829003601f168201915b505050505081526020016004815260200183815250905061107f81611585565b9695505050505050565b600054600160a060020a031633146110a057600080fd5b806001846040518082805190602001908083835b602083106110d35780518252601f1990920191602091820191016110b4565b51815160209384036101000a6000190180199092169116179052920194855250604051938490038101842087519094889450925082918401908083835b6020831061112f5780518252601f199092019160209182019101611110565b51815160209384036101000a600019018019909216911617905292019485525060405193849003810190932084516111709591949190910192509050612361565b50505050565b600054600160a060020a0316331461118d57600080fd5b611196816117e2565b50565b60606001836040518082805190602001908083835b602083106111cd5780518252601f1990920191602091820191016111ae565b51815160209384036101000a6000190180199092169116179052920194855250604051938490038101842086519094879450925082918401908083835b602083106112295780518252601f19909201916020918201910161120a565b518151600019602094850361010090810a820192831692199390931691909117909252949092019687526040805197889003820188208054601f60026001831615909802909501169590950492830182900482028801820190528187529294509250508301828280156112dd5780601f106112b2576101008083540402835291602001916112dd565b820191906000526020600020905b8154815290600101906020018083116112c057829003601f168201915b5050505050905092915050565b606061135961131460408051908101604052806001815260200160f960020a60110281525061185f565b6113486113546113238661185f565b61134860408051908101604052806001815260200160f960020a60110281525061185f565b9063ffffffff61188816565b61185f565b92915050565b6113676123df565b506040805160a0810182526000808252602080830182905283518082018552828152838501528351808201855282815260608401528351908101909352825260808101919091525b90565b6113ba61240c565b604080516060810182526000808252825181815260208181019094529192830191906113fc565b6113e9612430565b8152602001906001900390816113e15790505b508152602001600060405190808252806020026020018201604052801561143757816020015b60608152602001906001900390816114225790505b509052905090565b60408051602a80825260608083019093528291600091829182916020820161054080388339505081519195507f300000000000000000000000000000000000000000000000000000000000000091869150600090811061149b57fe5b906020010190600160f860020a031916908160001a90535083517f780000000000000000000000000000000000000000000000000000000000000090859060019081106114e457fe5b906020010190600160f860020a031916908160001a905350859250600091505b602882101561157857506030600f8316016039600160a060020a038216111561152b576027015b8060f860020a02848360280360010181518110151561154657fe5b906020010190600160f860020a031916908160001a9053506010600160a060020a038416049250600190910190611504565b8394505b50505050919050565b60408051808201909152600a81527f7b227469746c65223a220000000000000000000000000000000000000000000060208201528151606091906000906115d8906115cf9061185f565b6113488461185f565b915061161b6115cf6040805190810160405280600f81526020017f222c2273686f727444657363223a22000000000000000000000000000000000081525061185f565b915061162d6115cf856020015161185f565b91506116706115cf6040805190810160405280600e81526020017f222c226c6f6e6744657363223a2200000000000000000000000000000000000081525061185f565b91506116826115cf856040015161185f565b91506116c56115cf6040805190810160405280600a81526020017f222c227769647468223a0000000000000000000000000000000000000000000081525061185f565b91506116da6115cf61135486606001516118ff565b915061171d6115cf6040805190810160405280600d81526020017f2c22656c656d656e7473223a5b0000000000000000000000000000000000000081525061185f565b9150600090505b836080015151811015611799576000811115611765576117626115cf60408051908101604052806001815260200160fa60020a600b0281525061185f565b91505b61178f6115cf61135486608001518481518110151561178057fe5b90602001906020020151611a5a565b9150600101611724565b6117da6115cf6040805190810160405280600281526020017f5d7d00000000000000000000000000000000000000000000000000000000000081525061185f565b949350505050565b600160a060020a03811615156117f757600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b611867612463565b50604080518082019091528151815260208281019082018190525b50919050565b606080600083600001518560000151016040519080825280601f01601f1916602001820160405280156118c5578160200160208202803883390190505b5091506020820190506118e18186602001518760000151611d2f565b8451602085015185516118f79284019190611d2f565b509392505050565b606080600081818515156119485760408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152945061157c565b6040805160208082528183019092529080820161040080388339019050509350600092505b60008611156119ba57600a860660300160f860020a02848481518110151561199157fe5b906020010190600160f860020a031916908160001a905350600a8604955060019092019161196d565b60408051848152601f19601f860116810160200190915260001984019380156119ed578160200160208202803883390190505b509150600090505b8151811015611a5157835160001984019385918110611a1057fe5b90602001015160f860020a900460f860020a028282815181101515611a3157fe5b906020010190600160f860020a031916908160001a9053506001016119f5565b50949350505050565b606080826000015115611cf4576040805190810160405280600781526020017f7b226964223a22000000000000000000000000000000000000000000000000008152509050611ab8611aaf846020015161185f565b6113488361185f565b9050611ae2611aaf60408051908101604052806001815260200160f960020a60110281525061185f565b60a08401515190915015611b4957611b31611aaf6040805190810160405280600b81526020017f2c2022616374696f6e223a00000000000000000000000000000000000000000081525061185f565b9050611b46611aaf6113548560a00151611d73565b90505b60c08301515115611bad57611b95611aaf6040805190810160405280600a81526020017f2c20227461626c65223a0000000000000000000000000000000000000000000081525061185f565b9050611baa611aaf6113548560c00151611f16565b90505b611bee611aaf6040805190810160405280600981526020017f2c2274797065223a22000000000000000000000000000000000000000000000081525061185f565b9050611c00611aaf846040015161185f565b9050611c43611aaf6040805190810160405280600b81526020017f222c226c6162656c223a2200000000000000000000000000000000000000000081525061185f565b9050611c55611aaf846060015161185f565b9050611c98611aaf6040805190810160405280600981526020017f222c2264617461223a000000000000000000000000000000000000000000000081525061185f565b9050611caa611aaf846080015161185f565b9050611ced611aaf6040805190810160405280600181526020017f7d0000000000000000000000000000000000000000000000000000000000000081525061185f565b9150611882565b60408051808201909152600481527f6e756c6c0000000000000000000000000000000000000000000000000000000060208201529150611882565b60005b60208210611d54578251845260209384019390920191601f1990910190611d32565b50905182516020929092036101000a6000190180199091169116179052565b606080826000015115611cf4576040805190810160405280600c81526020017f7b2261646472657373223a2200000000000000000000000000000000000000008152509050611dd4611aaf6113548560200151600160a060020a031661143f565b9050611e17611aaf6040805190810160405280601681526020017f222c2266756e6374696f6e53656c6563746f72223a220000000000000000000081525061185f565b9050611e29611aaf846040015161185f565b9050611e6c611aaf6040805190810160405280600e81526020017f222c22617267756d656e7473223a00000000000000000000000000000000000081525061185f565b9050611e7e611aaf846060015161185f565b9050611ec1611aaf6040805190810160405280600c81526020017f2c22636f6e6669726d223a22000000000000000000000000000000000000000081525061185f565b9050611ed3611aaf846080015161185f565b9050611ced611aaf6040805190810160405280600281526020017f227d00000000000000000000000000000000000000000000000000000000000081525061185f565b6060806000808460000151156120ee57505060408051808201909152600c81527f7b22636f6c756d6e73223a5b0000000000000000000000000000000000000000602082015290506000805b846020015151811015611fe4576000821115611fac57611fa9611fa060408051908101604052806001815260200160fa60020a600b0281525061185f565b6113488561185f565b92505b611fd6611fa0611354876020015184815181101515611fc757fe5b9060200190602002015161212d565b925060019182019101611f62565b612025611fa06040805190810160405280600a81526020017f5d2c22726f7773223a5b0000000000000000000000000000000000000000000081525061185f565b925060009150600090505b8460400151518110156120a65760008211156120715761206e611fa060408051908101604052806001815260200160fa60020a600b0281525061185f565b92505b612098611fa086604001518381518110151561208957fe5b9060200190602002015161185f565b925060019182019101612030565b6120e7611fa06040805190810160405280600281526020017f5d7d00000000000000000000000000000000000000000000000000000000000081525061185f565b9350612125565b60408051808201909152600481527f6e756c6c00000000000000000000000000000000000000000000000000000000602082015293505b505050919050565b606080826000015115611cf4576040805190810160405280600781526020017f7b226964223a22000000000000000000000000000000000000000000000000008152509050612182611aaf846020015161185f565b90506121ac611aaf60408051908101604052806001815260200160f960020a60110281525061185f565b6080840151519091501561223d576121e2611aaf60408051908101604052806001815260200160fa60020a600b0281525061185f565b9050612225611aaf6040805190810160405280600981526020017f22616374696f6e223a000000000000000000000000000000000000000000000081525061185f565b905061223a611aaf6113548560800151611d73565b90505b61227e611aaf6040805190810160405280600981526020017f2c2274797065223a22000000000000000000000000000000000000000000000081525061185f565b9050612290611aaf846040015161185f565b90506122d3611aaf6040805190810160405280600b81526020017f222c226c6162656c223a2200000000000000000000000000000000000000000081525061185f565b9050611ed3611aaf846060015161185f565b60a06040519081016040528060608152602001606081526020016060815260200160008152602001606081525090565b6101a0604051908101604052806000151581526020016060815260200160608152602001606081526020016060815260200161234f6123df565b815260200161235c61240c565b905290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106123a257805160ff19168380011785556123cf565b828001600101855582156123cf579182015b828111156123cf5782518255916020019190600101906123b4565b506123db92915061247a565b5090565b6040805160a081018252600080825260208201526060918101829052818101829052608081019190915290565b60606040519081016040528060001515815260200160608152602001606081525090565b6101206040519081016040528060001515815260200160608152602001606081526020016060815260200161235c6123df565b604080518082019091526000808252602082015290565b6113af91905b808211156123db57600081556001016124805600a165627a7a723058207c74dc6c5e54b18a95026ffd5341fe9b530e5fbcd8764cedbd7b8529e9bd2c890029",
  "sourceMap": "256:1436:8:-;;;567:5:35;:18;;-1:-1:-1;;;;;;567:18:35;575:10;567:18;;;256:1436:8;;;;;;",
  "deployedSourceMap": "256:1436:8:-;;;;;;;;;-1:-1:-1;;;256:1436:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;485:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;485:54:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;485:54:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;431:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;431:48:8;;;;1001:111:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1001:111:35;;;;;;545:48:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;545:48:8;;;;238:20:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;238:20:35;;;;;;;;-1:-1:-1;;;;;238:20:35;;;;;;;;;;;;;;599:46:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;599:46:8;;;;652:1038;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;652:1038:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;652:1038:8;;-1:-1:-1;;;652:1038:8;;-1:-1:-1;;;;;652:1038:8;;-1:-1:-1;652:1038:8;;-1:-1:-1;;;652:1038:8;186:126:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;186:126:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;186:126:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;186:126:28;;;;-1:-1:-1;186:126:28;-1:-1:-1;186:126:28;;-1:-1:-1;186:126:28;;;;;;;;-1:-1:-1;;186:126:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;186:126:28;;;;-1:-1:-1;186:126:28;-1:-1:-1;186:126:28;;-1:-1:-1;186:126:28;;;;;;;;-1:-1:-1;186:126:28;;-1:-1:-1;186:126:28;;-1:-1:-1;;;;;;;186:126:28;1274:103:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1274:103:35;-1:-1:-1;;;;;1274:103:35;;;;;318:120:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;318:120:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;318:120:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;318:120:28;;;;-1:-1:-1;318:120:28;-1:-1:-1;318:120:28;;-1:-1:-1;318:120:28;;;;;;;;-1:-1:-1;318:120:28;;-1:-1:-1;318:120:28;;-1:-1:-1;;;;;;;318:120:28;485:54:8;;;;;;;;;;;;;;;;;;;:::o;431:48::-;;;;;;;;;;;;;;;;;;;:::o;1001:111:35:-;719:5;;-1:-1:-1;;;;;719:5:35;705:10;:19;697:28;;;;;;1077:5;;;1058:25;;-1:-1:-1;;;;;1077:5:35;;;;1058:25;;;1105:1;1089:18;;-1:-1:-1;;1089:18:35;;;1001:111::o;545:48:8:-;;;;;;;;;;;;;;;;;;;:::o;238:20:35:-;;;-1:-1:-1;;;;;238:20:35;;:::o;599:46:8:-;;;;;;;;;;;;;;;;;;;:::o;652:1038::-;722:6;740:19;800:34;1428:28;;:::i;:::-;776:5;-1:-1:-1;;;;;776:11:8;;:13;;;;;-1:-1:-1;;;776:13:8;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;776:13:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;776:13:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;776:13:8;837:25;;;860:1;837:25;;;;;;;;;776:13;;-1:-1:-1;837:25:8;;;;;;:::i;:::-;;;;;;;;;;;;;;;;800:62;;886:254;;;;;;;;;916:4;886:254;;;;;;934:10;;;;;;;;;;;;;;;;;;886:254;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;999:74;1023:5;-1:-1:-1;;;;;1023:10:8;;:12;;;;;-1:-1:-1;;;1023:12:8;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1023:12:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1023:12:8;;;;;;39:16:-1;36:1;17:17;2:54;101:4;1023:12:8;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;1023:12:8;;;;;;20:11:-1;15:3;12:20;9:2;;;45:1;42;35:12;9:2;64:21;;126:4;117:14;;142:31;;;139:2;;;186:1;183;176:12;139:2;218:10;;268:11;251:29;;293:43;;;290:58;-1:-1;239:118;236:2;;;370:1;367;360:12;236:2;0:382;;1023:12:8;;;;;;1043:5;-1:-1:-1;;;;;1043:12:8;;:14;;;;;-1:-1:-1;;;1043:14:8;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1043:14:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1043:14:8;;;;;;39:16:-1;36:1;17:17;2:54;101:4;1043:14:8;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;1043:14:8;;;;;;20:11:-1;15:3;12:20;9:2;;;45:1;42;35:12;9:2;64:21;;126:4;117:14;;142:31;;;139:2;;;186:1;183;176:12;139:2;218:10;;268:11;251:29;;293:43;;;290:58;-1:-1;239:118;236:2;;;370:1;367;360:12;236:2;0:382;;1043:14:8;;;;;;1006:57;;;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;1006:57:8;;;;;;;;;;;;;;;;;;-1:-1:-1;1006:57:8;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1006:57:8;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1006:57:8;;;999:72;:74::i;:::-;886:254;;;;1087:15;:13;:15::i;:::-;886:254;;;;1116:14;:12;:14::i;:::-;886:254;;872:11;;:8;;881:1;;872:11;;;;;;;;;;;;;:268;;;;1164:254;;;;;;;;;1194:4;1164:254;;;;;;1212:13;;;;;;;;;;;;;;;;;;1164:254;;;;;;;;;;;;;;;;;;;;;;;;;;1262:9;1272:7;1262:18;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;1262:18:8;;;;;-1:-1:-1;1262:18:8;;;;;;;;;;;1281:13;;;;;;;;;;;;;;;;1262:33;;:18;;;-1:-1:-1;1262:33:8;-1:-1:-1;1262:33:8;;1281:13;;1262:33;1281:13;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;-1:-1;;263:2;259:12;;;254:3;250:22;;;246:30;;340:21;;;311:9;;295:26;;;;377:20;;;;365:33;;;1262::8;;;;;;;;;;;;;;;;;;1164:254;;;;274:1:-1;1164:254:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1262:33;;-1:-1:-1;1164:254:8;-1:-1:-1;;1164:254:8;;1262:33;1164:254;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1309:42;:33;1317:5;-1:-1:-1;;;;;1317:11:8;;:13;;;;;-1:-1:-1;;;1317:13:8;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1317:13:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1317:13:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1317:13:8;-1:-1:-1;;;;;1309:31:8;;:33::i;:::-;:40;:42::i;:::-;1164:254;;;;1365:15;:13;:15::i;:::-;1164:254;;;;1394:14;:12;:14::i;:::-;1164:254;;1150:11;;:8;;1159:1;;1150:11;;;;;;;;;;;;;:268;;;;1459:192;;;;;;;;;1487:9;1497:7;1487:18;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;1487:18:8;;;;;-1:-1:-1;1487:18:8;;;;;;;;;;;1506:10;;;;;;;;;;;;;;;;1487:30;;:18;;;-1:-1:-1;1487:30:8;-1:-1:-1;1487:30:8;;1506:10;;1487:30;1506:10;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;-1:-1;;263:2;259:12;;;254:3;250:22;;;246:30;;340:21;;;311:9;;295:26;;;;377:20;;;;365:33;;;1487:30:8;;;;;;;;;;;;;;;;;;1459:192;;;;274:1:-1;1459:192:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1487:30;;-1:-1:-1;1459:192:8;-1:-1:-1;;1459:192:8;;1487:30;1459:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1531:9;1541:7;1531:18;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;1531:18:8;;;;;-1:-1:-1;1531:18:8;;;;;;;;;;;1550:10;;;;;;;;;;;;;;;;1531:30;;:18;;;-1:-1:-1;1531:30:8;-1:-1:-1;1531:30:8;;1550:10;;1531:30;1550:10;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;-1:-1;;263:2;259:12;;;254:3;250:22;;;246:30;;340:21;;;311:9;;295:26;;;;377:20;;;;365:33;;;1531:30:8;;;;;;;;;;;;;;;;;;1459:192;;;;274:1:-1;1459:192:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1531:30;;-1:-1:-1;1459:192:8;-1:-1:-1;;1459:192:8;;1531:30;1459:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1575:9;1585:7;1575:18;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;1575:18:8;;;;;-1:-1:-1;1575:18:8;;;;;;;;;;;1594:9;;;;;;;;;;;;;;;;1575:29;;:18;;;-1:-1:-1;1575:29:8;-1:-1:-1;1575:29:8;;1594:9;;1575:29;1594:9;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;-1:-1;;263:2;259:12;;;254:3;250:22;;;246:30;;340:21;;;311:9;;295:26;;;;377:20;;;;365:33;;;1575:29:8;;;;;;;;;;;;;;;;;;1459:192;;;;274:1:-1;1459:192:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1575:29;;-1:-1:-1;1459:192:8;-1:-1:-1;;1459:192:8;;1575:29;1459:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1618:1;1459:192;;;;1633:8;1459:192;;;1428:223;;1668:15;:6;:13;:15::i;:::-;1661:22;652:1038;-1:-1:-1;;;;;;652:1038:8:o;186:126:28:-;719:5:35;;-1:-1:-1;;;;;719:5:35;705:10;:19;697:28;;;;;;300:5:28;275:9;285:6;275:17;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;275:17:28;;;;;-1:-1:-1;275:17:28;;;;;;;;;;:22;;:17;;:22;;-1:-1:-1;275:17:28;-1:-1:-1;275:17:28;;:22;;;;:17;:22;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;275:22:28;;;;;-1:-1:-1;275:22:28;;;;;;;;;;;:30;;;;:22;;:30;;;;;-1:-1:-1;275:30:28;-1:-1:-1;275:30:28;:::i;:::-;;186:126;;;:::o;1274:103:35:-;719:5;;-1:-1:-1;;;;;719:5:35;705:10;:19;697:28;;;;;;1343:29;1362:9;1343:18;:29::i;:::-;1274:103;:::o;318:120:28:-;384:6;409:9;419:6;409:17;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;409:17:28;;;;;-1:-1:-1;409:17:28;;;;;;;;;;:22;;:17;;:22;;-1:-1:-1;409:17:28;-1:-1:-1;409:17:28;;:22;;;;:17;:22;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;-1:-1;;263:2;259:12;;;254:3;250:22;;;246:30;;340:21;;;311:9;;295:26;;;;377:20;;;;365:33;;;409:22:28;;;;;;;;;;;;;;;;;;402:29;;;;274:1:-1;402:29:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;409:22;;-1:-1:-1;402:29:28;-1:-1:-1;;402:29:28;;409:22;402:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;318:120;;;;:::o;103:158:23:-;158:6;183:71;240:13;:11;;;;;;;;;;;;;;-1:-1:-1;;;;;240:11:23;;;;:13::i;:::-;183:49;:39;204:17;:7;:15;:17::i;:::-;183:13;:11;;;;;;;;;;;;;;-1:-1:-1;;;;;183:11:23;;;;:13::i;:::-;:20;:39;:20;:39;:::i;:::-;:47;:49::i;:71::-;176:78;103:158;-1:-1:-1;;103:158:23:o;329:116:26:-;369:6;;:::i;:::-;-1:-1:-1;401:37:26;;;;;;;;-1:-1:-1;401:37:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;329:116;;:::o;374:124:30:-;414:5;;:::i;:::-;445:46;;;;;;;;-1:-1:-1;445:46:30;;;458:15;;;;;445:46;458:15;;;;;;445:46;;;;;458:15;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;445:46;;;;488:1;475:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;445:46:30;;438:53;-1:-1:-1;374:124:30;:::o;206:443:21:-;307:13;;;317:2;307:13;;;262:6;307:13;;;;;;262:6;;387:11;;;;;;307:13;;;17:15:-1;;105:10;307:13:21;88:34:-1;-1:-1;;330:7:21;;287:33;;-1:-1:-1;340:8:21;;287:33;;-1:-1:-1;335:1:21;;330:7;;;;;;;;;;:18;-1:-1:-1;;;;;330:18:21;;;;;;;;-1:-1:-1;358:7:21;;368:9;;358:4;;363:1;;358:7;;;;;;;;;;:19;-1:-1:-1;;;;;358:19:21;;;;;;;;;409:5;387:28;;450:1;446:5;;441:173;457:2;453:1;:6;441:173;;;-1:-1:-1;505:2:21;493:8;;;492:15;529:2;-1:-1:-1;;;;;525:6:21;;;521:19;;;538:2;533:7;521:19;578:1;-1:-1:-1;;;573:7:21;554:4;564:1;559:2;:6;568:1;559:10;554:16;;;;;;;;;;;;;;:26;-1:-1:-1;;;;;554:26:21;;;;;;;;-1:-1:-1;601:2:21;-1:-1:-1;;;;;594:9:21;;;;-1:-1:-1;461:3:21;;;;;441:173;;;637:4;623:19;;206:443;;;;;;;;:::o;392:943:31:-;470:33;;;;;;;;;;;;;;;;;542:11;;452:6;;470:33;1040:6;;520:44;;542:21;;:19;:21::i;:::-;520:14;:4;:12;:14::i;:44::-;513:51;;581:50;603:27;:25;;;;;;;;;;;;;;;;;;;:27::i;581:50::-;574:57;;648:48;670:25;:5;:15;;;:23;:25::i;648:48::-;641:55;;713:49;735:26;:24;;;;;;;;;;;;;;;;;;;:26::i;713:49::-;706:56;;779:47;801:24;:5;:14;;;:22;:24::i;779:47::-;772:54;;843:45;865:22;:20;;;;;;;;;;;;;;;;;;;:22::i;843:45::-;836:52;;905:55;927:32;:22;:5;:11;;;:20;:22::i;905:55::-;898:62;;977:48;999:25;:23;;;;;;;;;;;;;;;;;;;:25::i;977:48::-;970:55;;1049:1;1040:10;;1035:240;1056:5;:14;;;:21;1052:1;:25;1035:240;;;1106:1;1102;:5;1098:87;;;1134:36;1156:13;:11;;;;;;;;;;;;;;-1:-1:-1;;;;;1156:11:31;;;;:13::i;1134:36::-;1127:43;;1098:87;1205:59;1227:36;:26;:5;:14;;;1242:1;1227:17;;;;;;;;;;;;;;;;;;:24;:26::i;1205:59::-;1198:66;-1:-1:-1;1079:3:31;;1035:240;;;1291:37;1313:14;:12;;;;;;;;;;;;;;;;;;;:14::i;1291:37::-;1284:44;392:943;-1:-1:-1;;;;392:943:31:o;1512:171:35:-;-1:-1:-1;;;;;1582:23:35;;;;1574:32;;;;;;1638:5;;;1617:38;;-1:-1:-1;;;;;1617:38:35;;;;1638:5;;;1617:38;;;1661:5;:17;;-1:-1:-1;;1661:17:35;-1:-1:-1;;;;;1661:17:35;;;;;;;;;;1512:171::o;2837:210:25:-;2897:5;;:::i;:::-;-1:-1:-1;3010:30:25;;;;;;;;;3016:18;;3010:30;;2979:4;2969:15;;;3010:30;;;;;;2837:210;;;;;:::o;23944:355::-;24022:6;24047:17;24111:11;24090:5;:10;;;24078:4;:9;;;:22;24067:34;;;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;24067:34:25;;24047:54;;24162:2;24157:3;24153:12;24143:22;;24176:36;24183:6;24191:4;:9;;;24202:4;:9;;;24176:6;:36::i;:::-;24238:9;;24249:10;;;;24261;;24222:50;;24229:18;;;24249:10;24222:6;:50::i;:::-;-1:-1:-1;24289:3:25;23944:355;-1:-1:-1;;;23944:355:25:o;50:483:24:-;103:6;;231;103;231;132:10;;128:51;;;158:10;;;;;;;;;;;;;;;;;;-1:-1:-1;158:10:24;;128:51;208:13;;;218:2;208:13;;;;;;;;;;;;;17:15:-1;;105:10;208:13:24;88:34:-1;136:17;;-1:-1;208:13:24;188:33;;256:1;252:5;;247:111;267:1;259:5;:9;247:111;;;313:2;305:5;:10;319:2;304:17;-1:-1:-1;;;299:23:24;289:4;294:1;289:7;;;;;;;;;;;;;;:33;-1:-1:-1;;;;;289:33:24;;;;;;;;-1:-1:-1;345:2:24;336:11;;;-1:-1:-1;270:3:24;;;;;247:111;;;388:14;;;;;;-1:-1:-1;;388:14:24;;;;;;;;;;;-1:-1:-1;;398:3:24;;;388:14;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;388:14:24;;367:35;;426:1;417:10;;412:85;433:5;:12;429:1;:16;412:85;;;477:9;;-1:-1:-1;;482:3:24;;;477:4;;:9;;;;;;;;;;;-1:-1:-1;;;477:9:24;;-1:-1:-1;;;477:9:24;466:5;472:1;466:8;;;;;;;;;;;;;;:20;-1:-1:-1;;;;;466:20:24;;;;;;;;-1:-1:-1;447:3:24;;412:85;;;-1:-1:-1;520:5:24;50:483;-1:-1:-1;;;;50:483:24:o;568:1172:27:-;629:6;679:18;651:5;:12;;;647:1087;;;679:30;;;;;;;;;;;;;;;;;;;;730:41;752:18;:5;:8;;;:16;:18::i;:::-;730:14;:4;:12;:14::i;:41::-;723:48;;792:36;814:13;:11;;;;;;;;;;;;;;-1:-1:-1;;;;;814:11:27;;;;:13::i;792:36::-;846:12;;;;:19;785:43;;-1:-1:-1;842:190:27;;;892:46;914:23;:21;;;;;;;;;;;;;;;;;;;:23::i;892:46::-;885:53;;963:54;985:31;:21;:5;:12;;;:19;:21::i;963:54::-;956:61;;842:190;1049:11;;;;:18;1045:187;;;1094:45;1116:22;:20;;;;;;;;;;;;;;;;;;;:22::i;1094:45::-;1087:52;;1164:53;1186:30;:20;:5;:11;;;:18;:20::i;1164:53::-;1157:60;;1045:187;1252:44;1274:21;:19;;;;;;;;;;;;;;;;;;;:21::i;1252:44::-;1245:51;;1317:44;1339:21;:5;:11;;;:19;:21::i;1317:44::-;1310:51;;1382:46;1404:23;:21;;;;;;;;;;;;;;;;;;;:23::i;1382:46::-;1375:53;;1449:44;1471:21;:5;:11;;;:19;:21::i;1449:44::-;1442:51;;1514:44;1536:21;:19;;;;;;;;;;;;;;;;;;;:21::i;1514:44::-;1507:51;;1579:43;1601:20;:5;:10;;;:18;:20::i;1579:43::-;1572:50;;1643:36;1665:13;:11;;;;;;;;;;;;;;;;;;;:13::i;1643:36::-;1636:43;;;;647:1087;1710:13;;;;;;;;;;;;;;;;;;-1:-1:-1;1710:13:27;;2089:548:25;2415:9;2209:164;2222:2;2215:9;;2209:164;;2291:10;;2278:24;;2337:2;2329:10;;;;2353:9;;;;-1:-1:-1;;2226:9:25;;;;2209:164;;;-1:-1:-1;2500:10:25;;2555:11;;2435:2;:8;;;;2427:3;:17;-1:-1:-1;;2427:21:25;2512:9;;2496:26;;;2551:22;;2599:21;2586:35;;2467:164::o;451:765:26:-;511:6;561:18;533:5;:12;;;529:681;;;561:35;;;;;;;;;;;;;;;;;;;;617:52;639:29;:19;:5;:8;;;-1:-1:-1;;;;;639:17:26;;:19::i;617:52::-;610:59;;690:57;712:34;:32;;;;;;;;;;;;;;;;;;;:34::i;690:57::-;683:64;;768:55;790:32;:5;:22;;;:30;:32::i;768:55::-;761:62;;844:49;866:26;:24;;;;;;;;;;;;;;;;;;;:26::i;844:49::-;837:56;;914:48;936:25;:5;:15;;;:23;:25::i;914:48::-;907:55;;983:47;1005:24;:22;;;;;;;;;;;;;;;;;;;:24::i;983:47::-;976:54;;1051:46;1073:23;:5;:13;;;:21;:23::i;1051:46::-;1044:53;;1118:37;1140:14;:12;;;;;;;;;;;;;;;;;;;:14::i;504:978:30:-;563:6;613:18;662:11;696:6;585:5;:12;;;581:895;;;-1:-1:-1;;613:35:30;;;;;;;;;;;;;;;;;;-1:-1:-1;;;691:298:30;712:5;:13;;;:20;708:1;:24;691:298;;;770:1;761:6;:10;757:100;;;802:36;824:13;:11;;;;;;;;;;;;;;-1:-1:-1;;;;;824:11:30;;;;:13::i;:::-;802:14;:4;:12;:14::i;:36::-;795:43;;757:100;881:64;903:41;:31;917:5;:13;;;931:1;917:16;;;;;;;;;;;;;;;;;;903:13;:31::i;881:64::-;874:71;-1:-1:-1;973:1:30;963:11;;;;734:3;691:298;;;1009:45;1031:22;:20;;;;;;;;;;;;;;;;;;;:22::i;1009:45::-;1002:52;;1077:1;1068:10;;1101:1;1097:5;;1092:272;1108:5;:10;;;:17;1104:1;:21;1092:272;;;1163:1;1154:6;:10;1150:100;;;1195:36;1217:13;:11;;;;;;;;;;;;;;-1:-1:-1;;;;;1217:11:30;;;;:13::i;1195:36::-;1188:43;;1150:100;1274:46;1296:23;:5;:10;;;1307:1;1296:13;;;;;;;;;;;;;;;;;;:21;:23::i;1274:46::-;1267:53;-1:-1:-1;1348:1:30;1338:11;;;;1127:3;1092:272;;;1384:37;1406:14;:12;;;;;;;;;;;;;;;;;;;:14::i;1384:37::-;1377:44;;;;581:895;1452:13;;;;;;;;;;;;;;;;;;-1:-1:-1;581:895:30;504:978;;;;;;:::o;1488:909::-;1555:6;1605:18;1577:5;:12;;;1573:818;;;1605:30;;;;;;;;;;;;;;;;;;;;1656:41;1678:18;:5;:8;;;:16;:18::i;1656:41::-;1649:48;;1718:36;1740:13;:11;;;;;;;;;;;;;;-1:-1:-1;;;;;1740:11:30;;;;:13::i;1718:36::-;1772:12;;;;:19;1711:43;;-1:-1:-1;1768:249:30;;;1818:36;1840:13;:11;;;;;;;;;;;;;;-1:-1:-1;;;;;1840:11:30;;;;:13::i;1818:36::-;1811:43;;1879:44;1901:21;:19;;;;;;;;;;;;;;;;;;;:21::i;1879:44::-;1872:51;;1948:54;1970:31;:21;:5;:12;;;:19;:21::i;1948:54::-;1941:61;;1768:249;2037:44;2059:21;:19;;;;;;;;;;;;;;;;;;;:21::i;2037:44::-;2030:51;;2102:44;2124:21;:5;:11;;;:19;:21::i;2102:44::-;2095:51;;2167:46;2189:23;:21;;;;;;;;;;;;;;;;;;;:23::i;2167:46::-;2160:53;;2234:44;2256:21;:5;:11;;;:19;:21::i;256:1436:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;256:1436:8;;;-1:-1:-1;256:1436:8;:::i;:::-;;;:::o;:::-;;;;;;;;;-1:-1:-1;256:1436:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;256:1436:8;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;",
  "source": "pragma solidity ^0.4.24;\n\nimport \"./ERC20SaleWidgetRenderer.sol\";\nimport \"tokenboost-solidity/contracts/widget/Widgets.sol\";\nimport \"tokenboost-solidity/contracts/utils/StringUtils.sol\";\nimport \"zeppelin-solidity/contracts/token/ERC20/DetailedERC20.sol\";\n\ncontract TokenInfoWidgetRenderer is ERC20SaleWidgetRenderer {\n    using Widgets for Widgets.Widget;\n    using AddressUtils for address;\n    using StringUtils for string;\n\n    string public constant TOKEN_INFO = \"token_info\";\n    string public constant TOKEN_ADDRESS = \"token_address\";\n    string public constant SHORT_DESC = \"short_desc\";\n    string public constant LONG_DESC = \"long_desc\";\n\n    function render(string _locale, ERC20Sale _sale) public view returns (string) {\n        DetailedERC20 token = DetailedERC20(_sale.token());\n        Elements.Element[] memory elements = new Elements.Element[](2);\n        elements[0] = Elements.Element(\n            true,\n            TOKEN_INFO,\n            \"text\",\n            \"ERC20\",\n            string(abi.encodePacked(token.name(), \" (\", token.symbol(), \")\")).quoted(),\n            Actions.empty(),\n            Tables.empty()\n        );\n        elements[1] = Elements.Element(\n            true,\n            TOKEN_ADDRESS,\n            \"address\",\n            resources[_locale][TOKEN_ADDRESS],\n            address(_sale.token()).toString().quoted(),\n            Actions.empty(),\n            Tables.empty()\n        );\n        Widgets.Widget memory widget = Widgets.Widget(\n            resources[_locale][TOKEN_INFO],\n            resources[_locale][SHORT_DESC],\n            resources[_locale][LONG_DESC],\n            4,\n            elements\n        );\n        return widget.toJson();\n    }\n}\n",
  "sourcePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity-erc20sale/contracts/sale/erc20/widget/TokenInfoWidgetRenderer.sol",
  "ast": {
    "absolutePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity-erc20sale/contracts/sale/erc20/widget/TokenInfoWidgetRenderer.sol",
    "exportedSymbols": {
      "TokenInfoWidgetRenderer": [
        2037
      ]
    },
    "id": 2038,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1887,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:8"
      },
      {
        "absolutePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity-erc20sale/contracts/sale/erc20/widget/ERC20SaleWidgetRenderer.sol",
        "file": "./ERC20SaleWidgetRenderer.sol",
        "id": 1888,
        "nodeType": "ImportDirective",
        "scope": 2038,
        "sourceUnit": 1203,
        "src": "26:39:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "tokenboost-solidity/contracts/widget/Widgets.sol",
        "file": "tokenboost-solidity/contracts/widget/Widgets.sol",
        "id": 1889,
        "nodeType": "ImportDirective",
        "scope": 2038,
        "sourceUnit": 6259,
        "src": "66:58:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "tokenboost-solidity/contracts/utils/StringUtils.sol",
        "file": "tokenboost-solidity/contracts/utils/StringUtils.sol",
        "id": 1890,
        "nodeType": "ImportDirective",
        "scope": 2038,
        "sourceUnit": 3505,
        "src": "125:61:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "zeppelin-solidity/contracts/token/ERC20/DetailedERC20.sol",
        "file": "zeppelin-solidity/contracts/token/ERC20/DetailedERC20.sol",
        "id": 1891,
        "nodeType": "ImportDirective",
        "scope": 2038,
        "sourceUnit": 6534,
        "src": "187:67:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1892,
              "name": "ERC20SaleWidgetRenderer",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1202,
              "src": "292:23:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC20SaleWidgetRenderer_$1202",
                "typeString": "contract ERC20SaleWidgetRenderer"
              }
            },
            "id": 1893,
            "nodeType": "InheritanceSpecifier",
            "src": "292:23:8"
          }
        ],
        "contractDependencies": [
          1202,
          5715,
          6499
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2037,
        "linearizedBaseContracts": [
          2037,
          1202,
          5715,
          6499
        ],
        "name": "TokenInfoWidgetRenderer",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 1896,
            "libraryName": {
              "contractScope": null,
              "id": 1894,
              "name": "Widgets",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6258,
              "src": "328:7:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Widgets_$6258",
                "typeString": "library Widgets"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "322:33:8",
            "typeName": {
              "contractScope": null,
              "id": 1895,
              "name": "Widgets.Widget",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6096,
              "src": "340:14:8",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Widget_$6096_storage_ptr",
                "typeString": "struct Widgets.Widget"
              }
            }
          },
          {
            "id": 1899,
            "libraryName": {
              "contractScope": null,
              "id": 1897,
              "name": "AddressUtils",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3455,
              "src": "366:12:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AddressUtils_$3455",
                "typeString": "library AddressUtils"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "360:31:8",
            "typeName": {
              "id": 1898,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "383:7:8",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            }
          },
          {
            "id": 1902,
            "libraryName": {
              "contractScope": null,
              "id": 1900,
              "name": "StringUtils",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3504,
              "src": "402:11:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_StringUtils_$3504",
                "typeString": "library StringUtils"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "396:29:8",
            "typeName": {
              "id": 1901,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "418:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            }
          },
          {
            "constant": true,
            "id": 1905,
            "name": "TOKEN_INFO",
            "nodeType": "VariableDeclaration",
            "scope": 2037,
            "src": "431:48:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1903,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "431:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "746f6b656e5f696e666f",
              "id": 1904,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "467:12:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_24aaac374ac654d6834e8742a650af08eab906d794a104d84bc9867239c787a6",
                "typeString": "literal_string \"token_info\""
              },
              "value": "token_info"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 1908,
            "name": "TOKEN_ADDRESS",
            "nodeType": "VariableDeclaration",
            "scope": 2037,
            "src": "485:54:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1906,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "485:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "746f6b656e5f61646472657373",
              "id": 1907,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "524:15:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_4cb59f37c0f9d09ea41ec01867728e0af61d0339b945f7d193fd07f4f96cfee8",
                "typeString": "literal_string \"token_address\""
              },
              "value": "token_address"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 1911,
            "name": "SHORT_DESC",
            "nodeType": "VariableDeclaration",
            "scope": 2037,
            "src": "545:48:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1909,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "545:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "73686f72745f64657363",
              "id": 1910,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "581:12:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_94c241f8e931f92c2d4b9c8bf91f277610ffbc69f83ddd91d5e8535e49fe7894",
                "typeString": "literal_string \"short_desc\""
              },
              "value": "short_desc"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 1914,
            "name": "LONG_DESC",
            "nodeType": "VariableDeclaration",
            "scope": 2037,
            "src": "599:46:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1912,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "599:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "6c6f6e675f64657363",
              "id": 1913,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "634:11:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_a47709c5db6426dae60658aa3fe6818a09dac224ef85f317a31b897413052755",
                "typeString": "literal_string \"long_desc\""
              },
              "value": "long_desc"
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 2035,
              "nodeType": "Block",
              "src": "730:960:8",
              "statements": [
                {
                  "assignments": [
                    1924
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1924,
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 2036,
                      "src": "740:19:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DetailedERC20_$6533",
                        "typeString": "contract DetailedERC20"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1923,
                        "name": "DetailedERC20",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6533,
                        "src": "740:13:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DetailedERC20_$6533",
                          "typeString": "contract DetailedERC20"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1930,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1926,
                            "name": "_sale",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1918,
                            "src": "776:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ERC20Sale_$444",
                              "typeString": "contract ERC20Sale"
                            }
                          },
                          "id": 1927,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "token",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 32,
                          "src": "776:11:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_ERC20_$6576_$",
                            "typeString": "function () view external returns (contract ERC20)"
                          }
                        },
                        "id": 1928,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "776:13:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20_$6576",
                          "typeString": "contract ERC20"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_ERC20_$6576",
                          "typeString": "contract ERC20"
                        }
                      ],
                      "id": 1925,
                      "name": "DetailedERC20",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6533,
                      "src": "762:13:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_DetailedERC20_$6533_$",
                        "typeString": "type(contract DetailedERC20)"
                      }
                    },
                    "id": 1929,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "762:28:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DetailedERC20_$6533",
                      "typeString": "contract DetailedERC20"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "740:50:8"
                },
                {
                  "assignments": [
                    1935
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1935,
                      "name": "elements",
                      "nodeType": "VariableDeclaration",
                      "scope": 2036,
                      "src": "800:34:8",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_Element_$5466_memory_$dyn_memory_ptr",
                        "typeString": "struct Elements.Element[]"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 1933,
                          "name": "Elements.Element",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 5466,
                          "src": "800:16:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Element_$5466_storage_ptr",
                            "typeString": "struct Elements.Element"
                          }
                        },
                        "id": 1934,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "800:18:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Element_$5466_storage_$dyn_storage_ptr",
                          "typeString": "struct Elements.Element[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1941,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 1939,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "860:1:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        }
                      ],
                      "id": 1938,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "837:22:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Element_$5466_memory_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (struct Elements.Element memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 1936,
                          "name": "Elements.Element",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 5466,
                          "src": "841:16:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Element_$5466_storage_ptr",
                            "typeString": "struct Elements.Element"
                          }
                        },
                        "id": 1937,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "841:18:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Element_$5466_storage_$dyn_storage_ptr",
                          "typeString": "struct Elements.Element[]"
                        }
                      }
                    },
                    "id": 1940,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "837:25:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_Element_$5466_memory_$dyn_memory",
                      "typeString": "struct Elements.Element memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "800:62:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1973,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1942,
                        "name": "elements",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1935,
                        "src": "872:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Element_$5466_memory_$dyn_memory_ptr",
                          "typeString": "struct Elements.Element memory[] memory"
                        }
                      },
                      "id": 1944,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1943,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "881:1:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "872:11:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Element_$5466_memory",
                        "typeString": "struct Elements.Element memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 1947,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "916:4:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        {
                          "argumentTypes": null,
                          "id": 1948,
                          "name": "TOKEN_INFO",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1905,
                          "src": "934:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "74657874",
                          "id": 1949,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "958:6:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_9599d5e4e43121196cadfeaea326e46f58d9db74299decfd64bd3b700350ccd9",
                            "typeString": "literal_string \"text\""
                          },
                          "value": "text"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "4552433230",
                          "id": 1950,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "978:7:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_8ae85d849167ff996c04040c44924fd364217285e4cad818292c7ac37c0a345b",
                            "typeString": "literal_string \"ERC20\""
                          },
                          "value": "ERC20"
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1954,
                                          "name": "token",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1924,
                                          "src": "1023:5:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_DetailedERC20_$6533",
                                            "typeString": "contract DetailedERC20"
                                          }
                                        },
                                        "id": 1955,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "name",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 6506,
                                        "src": "1023:10:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_view$__$returns$_t_string_memory_$",
                                          "typeString": "function () view external returns (string memory)"
                                        }
                                      },
                                      "id": 1956,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1023:12:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory",
                                        "typeString": "string memory"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "2028",
                                      "id": 1957,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1037:4:8",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_c128201f9c8a3f86d1708e60c71fc62d6fe8dd57c8053c22057ce79fa6a900f2",
                                        "typeString": "literal_string \" (\""
                                      },
                                      "value": " ("
                                    },
                                    {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1958,
                                          "name": "token",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1924,
                                          "src": "1043:5:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_DetailedERC20_$6533",
                                            "typeString": "contract DetailedERC20"
                                          }
                                        },
                                        "id": 1959,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "symbol",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 6508,
                                        "src": "1043:12:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_view$__$returns$_t_string_memory_$",
                                          "typeString": "function () view external returns (string memory)"
                                        }
                                      },
                                      "id": 1960,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1043:14:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory",
                                        "typeString": "string memory"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "29",
                                      "id": 1961,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1059:3:8",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed",
                                        "typeString": "literal_string \")\""
                                      },
                                      "value": ")"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_string_memory",
                                        "typeString": "string memory"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_c128201f9c8a3f86d1708e60c71fc62d6fe8dd57c8053c22057ce79fa6a900f2",
                                        "typeString": "literal_string \" (\""
                                      },
                                      {
                                        "typeIdentifier": "t_string_memory",
                                        "typeString": "string memory"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed",
                                        "typeString": "literal_string \")\""
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1952,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6610,
                                      "src": "1006:3:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 1953,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "encodePacked",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "1006:16:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 1962,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1006:57:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 1951,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "999:6:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                  "typeString": "type(string storage pointer)"
                                },
                                "typeName": "string"
                              },
                              "id": 1963,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "999:65:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            },
                            "id": 1964,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "quoted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3503,
                            "src": "999:72:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                              "typeString": "function (string memory) pure returns (string memory)"
                            }
                          },
                          "id": 1965,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "999:74:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1966,
                              "name": "Actions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5438,
                              "src": "1087:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Actions_$5438_$",
                                "typeString": "type(library Actions)"
                              }
                            },
                            "id": 1967,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "empty",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5326,
                            "src": "1087:13:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Action_$5310_memory_ptr_$",
                              "typeString": "function () pure returns (struct Actions.Action memory)"
                            }
                          },
                          "id": 1968,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1087:15:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Action_$5310_memory_ptr",
                            "typeString": "struct Actions.Action memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1969,
                              "name": "Tables",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6071,
                              "src": "1116:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Tables_$6071_$",
                                "typeString": "type(library Tables)"
                              }
                            },
                            "id": 1970,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "empty",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5787,
                            "src": "1116:12:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Table_$5767_memory_ptr_$",
                              "typeString": "function () pure returns (struct Tables.Table memory)"
                            }
                          },
                          "id": 1971,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1116:14:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Table_$5767_memory_ptr",
                            "typeString": "struct Tables.Table memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_string_memory",
                            "typeString": "string memory"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_9599d5e4e43121196cadfeaea326e46f58d9db74299decfd64bd3b700350ccd9",
                            "typeString": "literal_string \"text\""
                          },
                          {
                            "typeIdentifier": "t_stringliteral_8ae85d849167ff996c04040c44924fd364217285e4cad818292c7ac37c0a345b",
                            "typeString": "literal_string \"ERC20\""
                          },
                          {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_Action_$5310_memory_ptr",
                            "typeString": "struct Actions.Action memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_Table_$5767_memory_ptr",
                            "typeString": "struct Tables.Table memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1945,
                          "name": "Elements",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5667,
                          "src": "886:8:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Elements_$5667_$",
                            "typeString": "type(library Elements)"
                          }
                        },
                        "id": 1946,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "Element",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5466,
                        "src": "886:16:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Element_$5466_storage_ptr_$",
                          "typeString": "type(struct Elements.Element storage pointer)"
                        }
                      },
                      "id": 1972,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "886:254:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Element_$5466_memory",
                        "typeString": "struct Elements.Element memory"
                      }
                    },
                    "src": "872:268:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Element_$5466_memory",
                      "typeString": "struct Elements.Element memory"
                    }
                  },
                  "id": 1974,
                  "nodeType": "ExpressionStatement",
                  "src": "872:268:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2004,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1975,
                        "name": "elements",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1935,
                        "src": "1150:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Element_$5466_memory_$dyn_memory_ptr",
                          "typeString": "struct Elements.Element memory[] memory"
                        }
                      },
                      "id": 1977,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 1976,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1159:1:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1150:11:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Element_$5466_memory",
                        "typeString": "struct Elements.Element memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 1980,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1194:4:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        {
                          "argumentTypes": null,
                          "id": 1981,
                          "name": "TOKEN_ADDRESS",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1908,
                          "src": "1212:13:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "61646472657373",
                          "id": 1982,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1239:9:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_421683f821a0574472445355be6d2b769119e8515f8376a1d7878523dfdecf7b",
                            "typeString": "literal_string \"address\""
                          },
                          "value": "address"
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1983,
                              "name": "resources",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5678,
                              "src": "1262:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_string_memory_$_t_mapping$_t_string_memory_$_t_string_storage_$_$",
                                "typeString": "mapping(string memory => mapping(string memory => string storage ref))"
                              }
                            },
                            "id": 1985,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1984,
                              "name": "_locale",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1916,
                              "src": "1272:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1262:18:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_$_t_string_storage_$",
                              "typeString": "mapping(string memory => string storage ref)"
                            }
                          },
                          "id": 1987,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1986,
                            "name": "TOKEN_ADDRESS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1908,
                            "src": "1281:13:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory",
                              "typeString": "string memory"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1262:33:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1989,
                                          "name": "_sale",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1918,
                                          "src": "1317:5:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_ERC20Sale_$444",
                                            "typeString": "contract ERC20Sale"
                                          }
                                        },
                                        "id": 1990,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "token",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 32,
                                        "src": "1317:11:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_ERC20_$6576_$",
                                          "typeString": "function () view external returns (contract ERC20)"
                                        }
                                      },
                                      "id": 1991,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1317:13:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ERC20_$6576",
                                        "typeString": "contract ERC20"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_ERC20_$6576",
                                        "typeString": "contract ERC20"
                                      }
                                    ],
                                    "id": 1988,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1309:7:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 1992,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1309:22:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 1993,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "toString",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3454,
                                "src": "1309:31:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_string_memory_ptr_$bound_to$_t_address_$",
                                  "typeString": "function (address) pure returns (string memory)"
                                }
                              },
                              "id": 1994,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1309:33:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "id": 1995,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "quoted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3503,
                            "src": "1309:40:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                              "typeString": "function (string memory) pure returns (string memory)"
                            }
                          },
                          "id": 1996,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1309:42:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1997,
                              "name": "Actions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5438,
                              "src": "1365:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Actions_$5438_$",
                                "typeString": "type(library Actions)"
                              }
                            },
                            "id": 1998,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "empty",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5326,
                            "src": "1365:13:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Action_$5310_memory_ptr_$",
                              "typeString": "function () pure returns (struct Actions.Action memory)"
                            }
                          },
                          "id": 1999,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1365:15:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Action_$5310_memory_ptr",
                            "typeString": "struct Actions.Action memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2000,
                              "name": "Tables",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6071,
                              "src": "1394:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Tables_$6071_$",
                                "typeString": "type(library Tables)"
                              }
                            },
                            "id": 2001,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "empty",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5787,
                            "src": "1394:12:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Table_$5767_memory_ptr_$",
                              "typeString": "function () pure returns (struct Tables.Table memory)"
                            }
                          },
                          "id": 2002,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1394:14:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Table_$5767_memory_ptr",
                            "typeString": "struct Tables.Table memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_string_memory",
                            "typeString": "string memory"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_421683f821a0574472445355be6d2b769119e8515f8376a1d7878523dfdecf7b",
                            "typeString": "literal_string \"address\""
                          },
                          {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          },
                          {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_Action_$5310_memory_ptr",
                            "typeString": "struct Actions.Action memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_Table_$5767_memory_ptr",
                            "typeString": "struct Tables.Table memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1978,
                          "name": "Elements",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5667,
                          "src": "1164:8:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Elements_$5667_$",
                            "typeString": "type(library Elements)"
                          }
                        },
                        "id": 1979,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "Element",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5466,
                        "src": "1164:16:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Element_$5466_storage_ptr_$",
                          "typeString": "type(struct Elements.Element storage pointer)"
                        }
                      },
                      "id": 2003,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1164:254:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Element_$5466_memory",
                        "typeString": "struct Elements.Element memory"
                      }
                    },
                    "src": "1150:268:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Element_$5466_memory",
                      "typeString": "struct Elements.Element memory"
                    }
                  },
                  "id": 2005,
                  "nodeType": "ExpressionStatement",
                  "src": "1150:268:8"
                },
                {
                  "assignments": [
                    2009
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2009,
                      "name": "widget",
                      "nodeType": "VariableDeclaration",
                      "scope": 2036,
                      "src": "1428:28:8",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Widget_$6096_memory_ptr",
                        "typeString": "struct Widgets.Widget"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2008,
                        "name": "Widgets.Widget",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6096,
                        "src": "1428:14:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Widget_$6096_storage_ptr",
                          "typeString": "struct Widgets.Widget"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2030,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2012,
                            "name": "resources",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5678,
                            "src": "1487:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_$_t_mapping$_t_string_memory_$_t_string_storage_$_$",
                              "typeString": "mapping(string memory => mapping(string memory => string storage ref))"
                            }
                          },
                          "id": 2014,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2013,
                            "name": "_locale",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1916,
                            "src": "1497:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1487:18:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_$_t_string_storage_$",
                            "typeString": "mapping(string memory => string storage ref)"
                          }
                        },
                        "id": 2016,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2015,
                          "name": "TOKEN_INFO",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1905,
                          "src": "1506:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory",
                            "typeString": "string memory"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1487:30:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2017,
                            "name": "resources",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5678,
                            "src": "1531:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_$_t_mapping$_t_string_memory_$_t_string_storage_$_$",
                              "typeString": "mapping(string memory => mapping(string memory => string storage ref))"
                            }
                          },
                          "id": 2019,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2018,
                            "name": "_locale",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1916,
                            "src": "1541:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1531:18:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_$_t_string_storage_$",
                            "typeString": "mapping(string memory => string storage ref)"
                          }
                        },
                        "id": 2021,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2020,
                          "name": "SHORT_DESC",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1911,
                          "src": "1550:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory",
                            "typeString": "string memory"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1531:30:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2022,
                            "name": "resources",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5678,
                            "src": "1575:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_$_t_mapping$_t_string_memory_$_t_string_storage_$_$",
                              "typeString": "mapping(string memory => mapping(string memory => string storage ref))"
                            }
                          },
                          "id": 2024,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2023,
                            "name": "_locale",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1916,
                            "src": "1585:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1575:18:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_$_t_string_storage_$",
                            "typeString": "mapping(string memory => string storage ref)"
                          }
                        },
                        "id": 2026,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2025,
                          "name": "LONG_DESC",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1914,
                          "src": "1594:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory",
                            "typeString": "string memory"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1575:29:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "34",
                        "id": 2027,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1618:1:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        },
                        "value": "4"
                      },
                      {
                        "argumentTypes": null,
                        "id": 2028,
                        "name": "elements",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1935,
                        "src": "1633:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Element_$5466_memory_$dyn_memory_ptr",
                          "typeString": "struct Elements.Element memory[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        },
                        {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        },
                        {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        },
                        {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        },
                        {
                          "typeIdentifier": "t_array$_t_struct$_Element_$5466_memory_$dyn_memory_ptr",
                          "typeString": "struct Elements.Element memory[] memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2010,
                        "name": "Widgets",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6258,
                        "src": "1459:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Widgets_$6258_$",
                          "typeString": "type(library Widgets)"
                        }
                      },
                      "id": 2011,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "Widget",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6096,
                      "src": "1459:14:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_Widget_$6096_storage_ptr_$",
                        "typeString": "type(struct Widgets.Widget storage pointer)"
                      }
                    },
                    "id": 2029,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1459:192:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Widget_$6096_memory",
                      "typeString": "struct Widgets.Widget memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1428:223:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2031,
                        "name": "widget",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2009,
                        "src": "1668:6:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Widget_$6096_memory_ptr",
                          "typeString": "struct Widgets.Widget memory"
                        }
                      },
                      "id": 2032,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "toJson",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6257,
                      "src": "1668:13:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_Widget_$6096_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_struct$_Widget_$6096_memory_ptr_$",
                        "typeString": "function (struct Widgets.Widget memory) pure returns (string memory)"
                      }
                    },
                    "id": 2033,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1668:15:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 1922,
                  "id": 2034,
                  "nodeType": "Return",
                  "src": "1661:22:8"
                }
              ]
            },
            "documentation": null,
            "id": 2036,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "render",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1919,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1916,
                  "name": "_locale",
                  "nodeType": "VariableDeclaration",
                  "scope": 2036,
                  "src": "668:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1915,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "668:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1918,
                  "name": "_sale",
                  "nodeType": "VariableDeclaration",
                  "scope": 2036,
                  "src": "684:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERC20Sale_$444",
                    "typeString": "contract ERC20Sale"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1917,
                    "name": "ERC20Sale",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 444,
                    "src": "684:9:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20Sale_$444",
                      "typeString": "contract ERC20Sale"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "667:33:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1922,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1921,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2036,
                  "src": "722:6:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1920,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "722:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "721:8:8"
            },
            "scope": 2037,
            "src": "652:1038:8",
            "stateMutability": "view",
            "superFunction": 1201,
            "visibility": "public"
          }
        ],
        "scope": 2038,
        "src": "256:1436:8"
      }
    ],
    "src": "0:1693:8"
  },
  "legacyAST": {
    "absolutePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity-erc20sale/contracts/sale/erc20/widget/TokenInfoWidgetRenderer.sol",
    "exportedSymbols": {
      "TokenInfoWidgetRenderer": [
        2037
      ]
    },
    "id": 2038,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1887,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:8"
      },
      {
        "absolutePath": "/Users/yoonjae/SolidityProjects/tokenboost-solidity-erc20sale/contracts/sale/erc20/widget/ERC20SaleWidgetRenderer.sol",
        "file": "./ERC20SaleWidgetRenderer.sol",
        "id": 1888,
        "nodeType": "ImportDirective",
        "scope": 2038,
        "sourceUnit": 1203,
        "src": "26:39:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "tokenboost-solidity/contracts/widget/Widgets.sol",
        "file": "tokenboost-solidity/contracts/widget/Widgets.sol",
        "id": 1889,
        "nodeType": "ImportDirective",
        "scope": 2038,
        "sourceUnit": 6259,
        "src": "66:58:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "tokenboost-solidity/contracts/utils/StringUtils.sol",
        "file": "tokenboost-solidity/contracts/utils/StringUtils.sol",
        "id": 1890,
        "nodeType": "ImportDirective",
        "scope": 2038,
        "sourceUnit": 3505,
        "src": "125:61:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "zeppelin-solidity/contracts/token/ERC20/DetailedERC20.sol",
        "file": "zeppelin-solidity/contracts/token/ERC20/DetailedERC20.sol",
        "id": 1891,
        "nodeType": "ImportDirective",
        "scope": 2038,
        "sourceUnit": 6534,
        "src": "187:67:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 1892,
              "name": "ERC20SaleWidgetRenderer",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1202,
              "src": "292:23:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC20SaleWidgetRenderer_$1202",
                "typeString": "contract ERC20SaleWidgetRenderer"
              }
            },
            "id": 1893,
            "nodeType": "InheritanceSpecifier",
            "src": "292:23:8"
          }
        ],
        "contractDependencies": [
          1202,
          5715,
          6499
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 2037,
        "linearizedBaseContracts": [
          2037,
          1202,
          5715,
          6499
        ],
        "name": "TokenInfoWidgetRenderer",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 1896,
            "libraryName": {
              "contractScope": null,
              "id": 1894,
              "name": "Widgets",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6258,
              "src": "328:7:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Widgets_$6258",
                "typeString": "library Widgets"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "322:33:8",
            "typeName": {
              "contractScope": null,
              "id": 1895,
              "name": "Widgets.Widget",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6096,
              "src": "340:14:8",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Widget_$6096_storage_ptr",
                "typeString": "struct Widgets.Widget"
              }
            }
          },
          {
            "id": 1899,
            "libraryName": {
              "contractScope": null,
              "id": 1897,
              "name": "AddressUtils",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3455,
              "src": "366:12:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AddressUtils_$3455",
                "typeString": "library AddressUtils"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "360:31:8",
            "typeName": {
              "id": 1898,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "383:7:8",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            }
          },
          {
            "id": 1902,
            "libraryName": {
              "contractScope": null,
              "id": 1900,
              "name": "StringUtils",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3504,
              "src": "402:11:8",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_StringUtils_$3504",
                "typeString": "library StringUtils"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "396:29:8",
            "typeName": {
              "id": 1901,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "418:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            }
          },
          {
            "constant": true,
            "id": 1905,
            "name": "TOKEN_INFO",
            "nodeType": "VariableDeclaration",
            "scope": 2037,
            "src": "431:48:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1903,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "431:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "746f6b656e5f696e666f",
              "id": 1904,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "467:12:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_24aaac374ac654d6834e8742a650af08eab906d794a104d84bc9867239c787a6",
                "typeString": "literal_string \"token_info\""
              },
              "value": "token_info"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 1908,
            "name": "TOKEN_ADDRESS",
            "nodeType": "VariableDeclaration",
            "scope": 2037,
            "src": "485:54:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1906,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "485:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "746f6b656e5f61646472657373",
              "id": 1907,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "524:15:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_4cb59f37c0f9d09ea41ec01867728e0af61d0339b945f7d193fd07f4f96cfee8",
                "typeString": "literal_string \"token_address\""
              },
              "value": "token_address"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 1911,
            "name": "SHORT_DESC",
            "nodeType": "VariableDeclaration",
            "scope": 2037,
            "src": "545:48:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1909,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "545:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "73686f72745f64657363",
              "id": 1910,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "581:12:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_94c241f8e931f92c2d4b9c8bf91f277610ffbc69f83ddd91d5e8535e49fe7894",
                "typeString": "literal_string \"short_desc\""
              },
              "value": "short_desc"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 1914,
            "name": "LONG_DESC",
            "nodeType": "VariableDeclaration",
            "scope": 2037,
            "src": "599:46:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory",
              "typeString": "string"
            },
            "typeName": {
              "id": 1912,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "599:6:8",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "6c6f6e675f64657363",
              "id": 1913,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "634:11:8",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_a47709c5db6426dae60658aa3fe6818a09dac224ef85f317a31b897413052755",
                "typeString": "literal_string \"long_desc\""
              },
              "value": "long_desc"
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 2035,
              "nodeType": "Block",
              "src": "730:960:8",
              "statements": [
                {
                  "assignments": [
                    1924
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1924,
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "scope": 2036,
                      "src": "740:19:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DetailedERC20_$6533",
                        "typeString": "contract DetailedERC20"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1923,
                        "name": "DetailedERC20",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6533,
                        "src": "740:13:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DetailedERC20_$6533",
                          "typeString": "contract DetailedERC20"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1930,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1926,
                            "name": "_sale",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1918,
                            "src": "776:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ERC20Sale_$444",
                              "typeString": "contract ERC20Sale"
                            }
                          },
                          "id": 1927,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "token",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 32,
                          "src": "776:11:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_ERC20_$6576_$",
                            "typeString": "function () view external returns (contract ERC20)"
                          }
                        },
                        "id": 1928,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "776:13:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC20_$6576",
                          "typeString": "contract ERC20"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_ERC20_$6576",
                          "typeString": "contract ERC20"
                        }
                      ],
                      "id": 1925,
                      "name": "DetailedERC20",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6533,
                      "src": "762:13:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_DetailedERC20_$6533_$",
                        "typeString": "type(contract DetailedERC20)"
                      }
                    },
                    "id": 1929,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "762:28:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DetailedERC20_$6533",
                      "typeString": "contract DetailedERC20"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "740:50:8"
                },
                {
                  "assignments": [
                    1935
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1935,
                      "name": "elements",
                      "nodeType": "VariableDeclaration",
                      "scope": 2036,
                      "src": "800:34:8",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_Element_$5466_memory_$dyn_memory_ptr",
                        "typeString": "struct Elements.Element[]"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 1933,
                          "name": "Elements.Element",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 5466,
                          "src": "800:16:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Element_$5466_storage_ptr",
                            "typeString": "struct Elements.Element"
                          }
                        },
                        "id": 1934,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "800:18:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Element_$5466_storage_$dyn_storage_ptr",
                          "typeString": "struct Elements.Element[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1941,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "32",
                        "id": 1939,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "860:1:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        }
                      ],
                      "id": 1938,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "837:22:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Element_$5466_memory_$dyn_memory_$",
                        "typeString": "function (uint256) pure returns (struct Elements.Element memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "contractScope": null,
                          "id": 1936,
                          "name": "Elements.Element",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 5466,
                          "src": "841:16:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Element_$5466_storage_ptr",
                            "typeString": "struct Elements.Element"
                          }
                        },
                        "id": 1937,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "841:18:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Element_$5466_storage_$dyn_storage_ptr",
                          "typeString": "struct Elements.Element[]"
                        }
                      }
                    },
                    "id": 1940,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "837:25:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_Element_$5466_memory_$dyn_memory",
                      "typeString": "struct Elements.Element memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "800:62:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1973,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1942,
                        "name": "elements",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1935,
                        "src": "872:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Element_$5466_memory_$dyn_memory_ptr",
                          "typeString": "struct Elements.Element memory[] memory"
                        }
                      },
                      "id": 1944,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 1943,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "881:1:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "872:11:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Element_$5466_memory",
                        "typeString": "struct Elements.Element memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 1947,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "916:4:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        {
                          "argumentTypes": null,
                          "id": 1948,
                          "name": "TOKEN_INFO",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1905,
                          "src": "934:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "74657874",
                          "id": 1949,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "958:6:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_9599d5e4e43121196cadfeaea326e46f58d9db74299decfd64bd3b700350ccd9",
                            "typeString": "literal_string \"text\""
                          },
                          "value": "text"
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "4552433230",
                          "id": 1950,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "978:7:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_8ae85d849167ff996c04040c44924fd364217285e4cad818292c7ac37c0a345b",
                            "typeString": "literal_string \"ERC20\""
                          },
                          "value": "ERC20"
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1954,
                                          "name": "token",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1924,
                                          "src": "1023:5:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_DetailedERC20_$6533",
                                            "typeString": "contract DetailedERC20"
                                          }
                                        },
                                        "id": 1955,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "name",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 6506,
                                        "src": "1023:10:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_view$__$returns$_t_string_memory_$",
                                          "typeString": "function () view external returns (string memory)"
                                        }
                                      },
                                      "id": 1956,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1023:12:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory",
                                        "typeString": "string memory"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "2028",
                                      "id": 1957,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1037:4:8",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_c128201f9c8a3f86d1708e60c71fc62d6fe8dd57c8053c22057ce79fa6a900f2",
                                        "typeString": "literal_string \" (\""
                                      },
                                      "value": " ("
                                    },
                                    {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1958,
                                          "name": "token",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1924,
                                          "src": "1043:5:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_DetailedERC20_$6533",
                                            "typeString": "contract DetailedERC20"
                                          }
                                        },
                                        "id": 1959,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "symbol",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 6508,
                                        "src": "1043:12:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_view$__$returns$_t_string_memory_$",
                                          "typeString": "function () view external returns (string memory)"
                                        }
                                      },
                                      "id": 1960,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1043:14:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory",
                                        "typeString": "string memory"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "29",
                                      "id": 1961,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1059:3:8",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed",
                                        "typeString": "literal_string \")\""
                                      },
                                      "value": ")"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_string_memory",
                                        "typeString": "string memory"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_c128201f9c8a3f86d1708e60c71fc62d6fe8dd57c8053c22057ce79fa6a900f2",
                                        "typeString": "literal_string \" (\""
                                      },
                                      {
                                        "typeIdentifier": "t_string_memory",
                                        "typeString": "string memory"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed",
                                        "typeString": "literal_string \")\""
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 1952,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6610,
                                      "src": "1006:3:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 1953,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "encodePacked",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "1006:16:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 1962,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1006:57:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 1951,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "999:6:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                  "typeString": "type(string storage pointer)"
                                },
                                "typeName": "string"
                              },
                              "id": 1963,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "999:65:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory",
                                "typeString": "string memory"
                              }
                            },
                            "id": 1964,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "quoted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3503,
                            "src": "999:72:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                              "typeString": "function (string memory) pure returns (string memory)"
                            }
                          },
                          "id": 1965,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "999:74:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1966,
                              "name": "Actions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5438,
                              "src": "1087:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Actions_$5438_$",
                                "typeString": "type(library Actions)"
                              }
                            },
                            "id": 1967,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "empty",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5326,
                            "src": "1087:13:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Action_$5310_memory_ptr_$",
                              "typeString": "function () pure returns (struct Actions.Action memory)"
                            }
                          },
                          "id": 1968,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1087:15:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Action_$5310_memory_ptr",
                            "typeString": "struct Actions.Action memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1969,
                              "name": "Tables",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6071,
                              "src": "1116:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Tables_$6071_$",
                                "typeString": "type(library Tables)"
                              }
                            },
                            "id": 1970,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "empty",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5787,
                            "src": "1116:12:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Table_$5767_memory_ptr_$",
                              "typeString": "function () pure returns (struct Tables.Table memory)"
                            }
                          },
                          "id": 1971,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1116:14:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Table_$5767_memory_ptr",
                            "typeString": "struct Tables.Table memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_string_memory",
                            "typeString": "string memory"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_9599d5e4e43121196cadfeaea326e46f58d9db74299decfd64bd3b700350ccd9",
                            "typeString": "literal_string \"text\""
                          },
                          {
                            "typeIdentifier": "t_stringliteral_8ae85d849167ff996c04040c44924fd364217285e4cad818292c7ac37c0a345b",
                            "typeString": "literal_string \"ERC20\""
                          },
                          {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_Action_$5310_memory_ptr",
                            "typeString": "struct Actions.Action memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_Table_$5767_memory_ptr",
                            "typeString": "struct Tables.Table memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1945,
                          "name": "Elements",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5667,
                          "src": "886:8:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Elements_$5667_$",
                            "typeString": "type(library Elements)"
                          }
                        },
                        "id": 1946,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "Element",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5466,
                        "src": "886:16:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Element_$5466_storage_ptr_$",
                          "typeString": "type(struct Elements.Element storage pointer)"
                        }
                      },
                      "id": 1972,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "886:254:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Element_$5466_memory",
                        "typeString": "struct Elements.Element memory"
                      }
                    },
                    "src": "872:268:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Element_$5466_memory",
                      "typeString": "struct Elements.Element memory"
                    }
                  },
                  "id": 1974,
                  "nodeType": "ExpressionStatement",
                  "src": "872:268:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 2004,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 1975,
                        "name": "elements",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1935,
                        "src": "1150:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Element_$5466_memory_$dyn_memory_ptr",
                          "typeString": "struct Elements.Element memory[] memory"
                        }
                      },
                      "id": 1977,
                      "indexExpression": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 1976,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1159:1:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1150:11:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Element_$5466_memory",
                        "typeString": "struct Elements.Element memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 1980,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1194:4:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        {
                          "argumentTypes": null,
                          "id": 1981,
                          "name": "TOKEN_ADDRESS",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1908,
                          "src": "1212:13:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "61646472657373",
                          "id": 1982,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1239:9:8",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_421683f821a0574472445355be6d2b769119e8515f8376a1d7878523dfdecf7b",
                            "typeString": "literal_string \"address\""
                          },
                          "value": "address"
                        },
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 1983,
                              "name": "resources",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5678,
                              "src": "1262:9:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_string_memory_$_t_mapping$_t_string_memory_$_t_string_storage_$_$",
                                "typeString": "mapping(string memory => mapping(string memory => string storage ref))"
                              }
                            },
                            "id": 1985,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 1984,
                              "name": "_locale",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1916,
                              "src": "1272:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1262:18:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_$_t_string_storage_$",
                              "typeString": "mapping(string memory => string storage ref)"
                            }
                          },
                          "id": 1987,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 1986,
                            "name": "TOKEN_ADDRESS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1908,
                            "src": "1281:13:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory",
                              "typeString": "string memory"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1262:33:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1989,
                                          "name": "_sale",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1918,
                                          "src": "1317:5:8",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_ERC20Sale_$444",
                                            "typeString": "contract ERC20Sale"
                                          }
                                        },
                                        "id": 1990,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "token",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 32,
                                        "src": "1317:11:8",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_ERC20_$6576_$",
                                          "typeString": "function () view external returns (contract ERC20)"
                                        }
                                      },
                                      "id": 1991,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1317:13:8",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ERC20_$6576",
                                        "typeString": "contract ERC20"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_ERC20_$6576",
                                        "typeString": "contract ERC20"
                                      }
                                    ],
                                    "id": 1988,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1309:7:8",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": "address"
                                  },
                                  "id": 1992,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1309:22:8",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 1993,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "toString",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3454,
                                "src": "1309:31:8",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_string_memory_ptr_$bound_to$_t_address_$",
                                  "typeString": "function (address) pure returns (string memory)"
                                }
                              },
                              "id": 1994,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1309:33:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "id": 1995,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "quoted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3503,
                            "src": "1309:40:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_string_memory_ptr_$",
                              "typeString": "function (string memory) pure returns (string memory)"
                            }
                          },
                          "id": 1996,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1309:42:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1997,
                              "name": "Actions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5438,
                              "src": "1365:7:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Actions_$5438_$",
                                "typeString": "type(library Actions)"
                              }
                            },
                            "id": 1998,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "empty",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5326,
                            "src": "1365:13:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Action_$5310_memory_ptr_$",
                              "typeString": "function () pure returns (struct Actions.Action memory)"
                            }
                          },
                          "id": 1999,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1365:15:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Action_$5310_memory_ptr",
                            "typeString": "struct Actions.Action memory"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2000,
                              "name": "Tables",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6071,
                              "src": "1394:6:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Tables_$6071_$",
                                "typeString": "type(library Tables)"
                              }
                            },
                            "id": 2001,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "empty",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5787,
                            "src": "1394:12:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Table_$5767_memory_ptr_$",
                              "typeString": "function () pure returns (struct Tables.Table memory)"
                            }
                          },
                          "id": 2002,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1394:14:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Table_$5767_memory_ptr",
                            "typeString": "struct Tables.Table memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          {
                            "typeIdentifier": "t_string_memory",
                            "typeString": "string memory"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_421683f821a0574472445355be6d2b769119e8515f8376a1d7878523dfdecf7b",
                            "typeString": "literal_string \"address\""
                          },
                          {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          },
                          {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_Action_$5310_memory_ptr",
                            "typeString": "struct Actions.Action memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_Table_$5767_memory_ptr",
                            "typeString": "struct Tables.Table memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1978,
                          "name": "Elements",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5667,
                          "src": "1164:8:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Elements_$5667_$",
                            "typeString": "type(library Elements)"
                          }
                        },
                        "id": 1979,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "Element",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5466,
                        "src": "1164:16:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Element_$5466_storage_ptr_$",
                          "typeString": "type(struct Elements.Element storage pointer)"
                        }
                      },
                      "id": 2003,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1164:254:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Element_$5466_memory",
                        "typeString": "struct Elements.Element memory"
                      }
                    },
                    "src": "1150:268:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Element_$5466_memory",
                      "typeString": "struct Elements.Element memory"
                    }
                  },
                  "id": 2005,
                  "nodeType": "ExpressionStatement",
                  "src": "1150:268:8"
                },
                {
                  "assignments": [
                    2009
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2009,
                      "name": "widget",
                      "nodeType": "VariableDeclaration",
                      "scope": 2036,
                      "src": "1428:28:8",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Widget_$6096_memory_ptr",
                        "typeString": "struct Widgets.Widget"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2008,
                        "name": "Widgets.Widget",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6096,
                        "src": "1428:14:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Widget_$6096_storage_ptr",
                          "typeString": "struct Widgets.Widget"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 2030,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2012,
                            "name": "resources",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5678,
                            "src": "1487:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_$_t_mapping$_t_string_memory_$_t_string_storage_$_$",
                              "typeString": "mapping(string memory => mapping(string memory => string storage ref))"
                            }
                          },
                          "id": 2014,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2013,
                            "name": "_locale",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1916,
                            "src": "1497:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1487:18:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_$_t_string_storage_$",
                            "typeString": "mapping(string memory => string storage ref)"
                          }
                        },
                        "id": 2016,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2015,
                          "name": "TOKEN_INFO",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1905,
                          "src": "1506:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory",
                            "typeString": "string memory"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1487:30:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2017,
                            "name": "resources",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5678,
                            "src": "1531:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_$_t_mapping$_t_string_memory_$_t_string_storage_$_$",
                              "typeString": "mapping(string memory => mapping(string memory => string storage ref))"
                            }
                          },
                          "id": 2019,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2018,
                            "name": "_locale",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1916,
                            "src": "1541:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1531:18:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_$_t_string_storage_$",
                            "typeString": "mapping(string memory => string storage ref)"
                          }
                        },
                        "id": 2021,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2020,
                          "name": "SHORT_DESC",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1911,
                          "src": "1550:10:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory",
                            "typeString": "string memory"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1531:30:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 2022,
                            "name": "resources",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5678,
                            "src": "1575:9:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_string_memory_$_t_mapping$_t_string_memory_$_t_string_storage_$_$",
                              "typeString": "mapping(string memory => mapping(string memory => string storage ref))"
                            }
                          },
                          "id": 2024,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 2023,
                            "name": "_locale",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1916,
                            "src": "1585:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1575:18:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_string_memory_$_t_string_storage_$",
                            "typeString": "mapping(string memory => string storage ref)"
                          }
                        },
                        "id": 2026,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 2025,
                          "name": "LONG_DESC",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1914,
                          "src": "1594:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory",
                            "typeString": "string memory"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "1575:29:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "34",
                        "id": 2027,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1618:1:8",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        },
                        "value": "4"
                      },
                      {
                        "argumentTypes": null,
                        "id": 2028,
                        "name": "elements",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1935,
                        "src": "1633:8:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Element_$5466_memory_$dyn_memory_ptr",
                          "typeString": "struct Elements.Element memory[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        },
                        {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        },
                        {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        },
                        {
                          "typeIdentifier": "t_rational_4_by_1",
                          "typeString": "int_const 4"
                        },
                        {
                          "typeIdentifier": "t_array$_t_struct$_Element_$5466_memory_$dyn_memory_ptr",
                          "typeString": "struct Elements.Element memory[] memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2010,
                        "name": "Widgets",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6258,
                        "src": "1459:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Widgets_$6258_$",
                          "typeString": "type(library Widgets)"
                        }
                      },
                      "id": 2011,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "Widget",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6096,
                      "src": "1459:14:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_Widget_$6096_storage_ptr_$",
                        "typeString": "type(struct Widgets.Widget storage pointer)"
                      }
                    },
                    "id": 2029,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1459:192:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Widget_$6096_memory",
                      "typeString": "struct Widgets.Widget memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1428:223:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 2031,
                        "name": "widget",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2009,
                        "src": "1668:6:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Widget_$6096_memory_ptr",
                          "typeString": "struct Widgets.Widget memory"
                        }
                      },
                      "id": 2032,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "toJson",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6257,
                      "src": "1668:13:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_Widget_$6096_memory_ptr_$returns$_t_string_memory_ptr_$bound_to$_t_struct$_Widget_$6096_memory_ptr_$",
                        "typeString": "function (struct Widgets.Widget memory) pure returns (string memory)"
                      }
                    },
                    "id": 2033,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1668:15:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 1922,
                  "id": 2034,
                  "nodeType": "Return",
                  "src": "1661:22:8"
                }
              ]
            },
            "documentation": null,
            "id": 2036,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "render",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1919,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1916,
                  "name": "_locale",
                  "nodeType": "VariableDeclaration",
                  "scope": 2036,
                  "src": "668:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1915,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "668:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1918,
                  "name": "_sale",
                  "nodeType": "VariableDeclaration",
                  "scope": 2036,
                  "src": "684:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ERC20Sale_$444",
                    "typeString": "contract ERC20Sale"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 1917,
                    "name": "ERC20Sale",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 444,
                    "src": "684:9:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20Sale_$444",
                      "typeString": "contract ERC20Sale"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "667:33:8"
            },
            "payable": false,
            "returnParameters": {
              "id": 1922,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1921,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2036,
                  "src": "722:6:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 1920,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "722:6:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "721:8:8"
            },
            "scope": 2037,
            "src": "652:1038:8",
            "stateMutability": "view",
            "superFunction": 1201,
            "visibility": "public"
          }
        ],
        "scope": 2038,
        "src": "256:1436:8"
      }
    ],
    "src": "0:1693:8"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {
    "1": {
      "events": {},
      "links": {},
      "address": "0xf9f4946873ebbb3d77f2ef41769888c82fcd111d",
      "transactionHash": "0xec9efc2c2c6610b111def014c8b22c353502f389288fb8f69183cad15b0e62ea"
    },
    "3": {
      "events": {},
      "links": {},
      "address": "0x3c0bc723b9032d28bba40a659669a7c6dd345543",
      "transactionHash": "0x5d75c92fae07c58bdb5488723932135c2e827af256923a8e443243006f901654"
    }
  },
  "schemaVersion": "2.0.1",
  "updatedAt": "2018-11-01T09:28:40.921Z"
}