{"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://json.schemastore.org/accelerator.json","definitions":{"AcceleratorOption":{"type":"object","properties":{"choices":{"title":"choices","description":"A list of predefined choices","type":"array","items":{"type":"object","properties":{"text":{"type":"string","title":"text","description":"The displayed text"},"value":{"title":"value","description":"The value that the form returns for this choice"}},"title":"choices"}},"dataType":{"anyOf":[{"const":"string"},{"const":"number"},{"const":"boolean"},{"type":"string","pattern":"^$|^[A-Z][a-z0-9A-Z]*$"},{"type":"array","minItems":1,"maxItems":1,"items":{"const":"string"}},{"type":"array","minItems":1,"maxItems":1,"items":{"const":"number"}},{"type":"array","minItems":1,"maxItems":1,"items":{"const":"boolean"}},{"type":"array","minItems":1,"maxItems":1,"items":{"type":"string","pattern":"^$|^[A-Z][a-z0-9A-Z]*$"}},{"type":"null"}],"title":"dataType","description":"The option data type"},"defaultValue":{"title":"defaultValue","description":"The value used to pre-populate the option"},"dependsOn":{"title":"dependsOn","description":"The dependency that controls this options visibility","allOf":[{"$ref":"#/definitions/DependsOn"}]},"description":{"type":"string","title":"description","description":"A tooltip to accompany the input"},"inputType":{"enum":["text","textarea","checkbox","select","radio"],"title":"inputType","description":"The HTML input type used to display the option"},"label":{"type":"string","title":"label","description":"A human-readable version of the name identifying the option"},"name":{"type":"string","title":"name","description":"A unique, camelCase name","minLength":1,"pattern":"^$|^[a-z][a-z0-9A-Z]*$"},"required":{"type":"boolean","title":"required","description":"Whether the user is required to enter a value in the UI"},"validationRegex":{"title":"validationRegex","description":"A regex that validates the string representation of the option value when set","allOf":[{"$ref":"#/definitions/Pattern"}]}},"anyOf":[{"properties":{"dataType":{"const":"string"},"defaultValue":{"type":"string"}}},{"properties":{"dataType":{"type":"array","items":{"const":"string"}},"defaultValue":{"type":"array","items":{"type":"string"}}}},{"properties":{"dataType":{"const":"number"},"defaultValue":{"type":"number"}}},{"properties":{"dataType":{"type":"array","items":{"const":"number"}},"defaultValue":{"type":"array","items":{"type":"number"}}}},{"properties":{"dataType":{"const":"boolean"},"defaultValue":{"type":"boolean"}}},{"properties":{"dataType":{"type":"array","items":{"const":"boolean"}},"defaultValue":{"type":"array","items":{"type":"boolean"}}}},{"properties":{"dataType":{"type":"string","pattern":"^$|^[A-Z][a-z0-9A-Z]*$"},"defaultValue":{"type":"object"}}},{"properties":{"dataType":{"type":"array","items":{"type":"string","pattern":"^$|^[A-Z][a-z0-9A-Z]*$"}},"defaultValue":{"type":"array","items":{"type":"object"}}}}]},"Chain-1":{"type":"object","properties":{"applyTo":{"title":"applyTo","description":"The path patterns used to filter which files to apply the Transforms to","minItems":1,"type":"array","items":{"type":"string","title":"applyTo","minLength":1,"pattern":"^$|^[^/].*$"}},"condition":{"title":"condition","description":"The SpEL expression that determines if this Transform should execute","allOf":[{"$ref":"#/definitions/Expression"}]},"name":{"type":"string","title":"name","description":"The transform name"},"transformations":{"title":"transformations","description":"A list of child Transforms to apply sequentially","type":"array","items":{"anyOf":[{"$ref":"#/definitions/Chain-2"},{"$ref":"#/definitions/Combo-2"},{"$ref":"#/definitions/Exclude-2"},{"$ref":"#/definitions/Include-2"},{"$ref":"#/definitions/InvokeFragment-2"},{"$ref":"#/definitions/Let-2"},{"$ref":"#/definitions/Loop-2"},{"$ref":"#/definitions/Merge-2"},{"$ref":"#/definitions/OpenRewriteRecipe-2"},{"$ref":"#/definitions/Provenance-2"},{"$ref":"#/definitions/ReplaceText-2"},{"$ref":"#/definitions/RewritePath-2"},{"$ref":"#/definitions/UniquePath-2"},{"$ref":"#/definitions/UseEncoding-2"},{"$ref":"#/definitions/YTT-2"}]}}}},"Chain-2":{"type":"object","properties":{"type":{"const":"Chain"}},"required":["type"],"allOf":[{"$ref":"#/definitions/Chain-1"}]},"Combo-1":{"type":"object","properties":{"applyTo":{"title":"applyTo","description":"The path patterns used to filter which files to apply the Transforms to","minItems":1,"type":"array","items":{"type":"string","title":"applyTo","minLength":1,"pattern":"^$|^[^/].*$"}},"chain":{"title":"chain","description":"A list of child Transforms to apply sequentially","type":"array","items":{"anyOf":[{"$ref":"#/definitions/Chain-2"},{"$ref":"#/definitions/Combo-2"},{"$ref":"#/definitions/Exclude-2"},{"$ref":"#/definitions/Include-2"},{"$ref":"#/definitions/InvokeFragment-2"},{"$ref":"#/definitions/Let-2"},{"$ref":"#/definitions/Loop-2"},{"$ref":"#/definitions/Merge-2"},{"$ref":"#/definitions/OpenRewriteRecipe-2"},{"$ref":"#/definitions/Provenance-2"},{"$ref":"#/definitions/ReplaceText-2"},{"$ref":"#/definitions/RewritePath-2"},{"$ref":"#/definitions/UniquePath-2"},{"$ref":"#/definitions/UseEncoding-2"},{"$ref":"#/definitions/YTT-2"}]}},"condition":{"title":"condition","description":"The SpEL expression that determines if this Transform should execute","allOf":[{"$ref":"#/definitions/Expression"}]},"exclude":{"title":"exclude","description":"The path patterns used to filter which files to exclude","type":"array","items":{"type":"string","title":"exclude","minLength":1,"pattern":"^$|^[^/].*$"}},"include":{"title":"include","description":"The path patterns used to filter which files to include","type":"array","items":{"type":"string","title":"include","minLength":1,"pattern":"^$|^[^/].*$"}},"let":{"title":"let","description":"A list of additional variables and their values","type":"array","items":{"title":"let","allOf":[{"$ref":"#/definitions/DerivedSymbol"}]}},"merge":{"title":"merge","description":"A list of child Transforms to be executed in parallel","type":"array","items":{"anyOf":[{"$ref":"#/definitions/Chain-2"},{"$ref":"#/definitions/Combo-2"},{"$ref":"#/definitions/Exclude-2"},{"$ref":"#/definitions/Include-2"},{"$ref":"#/definitions/InvokeFragment-2"},{"$ref":"#/definitions/Let-2"},{"$ref":"#/definitions/Loop-2"},{"$ref":"#/definitions/Merge-2"},{"$ref":"#/definitions/OpenRewriteRecipe-2"},{"$ref":"#/definitions/Provenance-2"},{"$ref":"#/definitions/ReplaceText-2"},{"$ref":"#/definitions/RewritePath-2"},{"$ref":"#/definitions/UniquePath-2"},{"$ref":"#/definitions/UseEncoding-2"},{"$ref":"#/definitions/YTT-2"}]}},"name":{"type":"string","title":"name","description":"The transform name"},"onConflict":{"title":"onConflict","description":"How conflict is handled when an operation produces multiple files at the same path","allOf":[{"$ref":"#/definitions/ConflictResolution"}]}}},"Combo-2":{"type":"object","properties":{"type":{"const":"Combo"}},"allOf":[{"$ref":"#/definitions/Combo-1"}]},"ConflictResolution":{"enum":["Fail","UseFirst","UseLast","Append","FavorOwn","FavorForeign","NWayDiff"]},"DependsOn":{"type":"object","properties":{"name":{"type":"string","title":"name","description":"The options name","minLength":1,"pattern":"^$|^[a-z][a-z0-9A-Z]*$"},"value":{"title":"value","description":"The desired options value to compare against"}}},"DerivedSymbol":{"type":"object","properties":{"expression":{"title":"expression","description":"The SpEL expression to evaluate to compute the symbol value","allOf":[{"$ref":"#/definitions/Expression"}]},"name":{"type":"string","title":"name","description":"The name under which the new symbol will be added","minLength":1,"pattern":"^$|^[a-z][a-z0-9A-Z]*$"}}},"Exclude-1":{"type":"object","properties":{"condition":{"title":"condition","description":"The SpEL expression that determines if this Transform should execute","allOf":[{"$ref":"#/definitions/Expression"}]},"name":{"type":"string","title":"name","description":"The transform name"},"patterns":{"title":"patterns","description":"The path patterns used to filter which files to exclude","type":"array","items":{"type":"string","title":"patterns","minLength":1,"pattern":"^$|^[^/].*$"}}}},"Exclude-2":{"type":"object","properties":{"type":{"const":"Exclude"}},"required":["type"],"allOf":[{"$ref":"#/definitions/Exclude-1"}]},"Expression":{"type":"string"},"Include-1":{"type":"object","properties":{"condition":{"title":"condition","description":"The SpEL expression that determines if this Transform should execute","allOf":[{"$ref":"#/definitions/Expression"}]},"name":{"type":"string","title":"name","description":"The transform name"},"patterns":{"title":"patterns","description":"The path patterns used to filter which files to include","type":"array","items":{"type":"string","title":"patterns","minLength":1,"pattern":"^$|^[^/].*$"}}}},"Include-2":{"type":"object","properties":{"type":{"const":"Include"}},"required":["type"],"allOf":[{"$ref":"#/definitions/Include-1"}]},"InvokeFragment-1":{"type":"object","properties":{"anchor":{"type":"string","title":"anchor","pattern":"^$|^[^/]$|^[^/](.+)[^/]$"},"condition":{"title":"condition","description":"The SpEL expression that determines if this Transform should execute","allOf":[{"$ref":"#/definitions/Expression"}]},"let":{"title":"let","type":"array","items":{"title":"let","allOf":[{"$ref":"#/definitions/DerivedSymbol"}]}},"name":{"type":"string","title":"name","description":"The transform name"},"reference":{"type":"string","title":"reference","minLength":1,"pattern":"^[a-z0-9]([a-z0-9-]*[a-z0-9])?$"}}},"InvokeFragment-2":{"type":"object","properties":{"type":{"const":"InvokeFragment"}},"required":["type"],"allOf":[{"$ref":"#/definitions/InvokeFragment-1"}]},"Let-1":{"type":"object","properties":{"condition":{"title":"condition","description":"The SpEL expression that determines if this Transform should execute","allOf":[{"$ref":"#/definitions/Expression"}]},"in":{"anyOf":[{"$ref":"#/definitions/Chain-2"},{"$ref":"#/definitions/Combo-2"},{"$ref":"#/definitions/Exclude-2"},{"$ref":"#/definitions/Include-2"},{"$ref":"#/definitions/InvokeFragment-2"},{"$ref":"#/definitions/Let-2"},{"$ref":"#/definitions/Loop-2"},{"$ref":"#/definitions/Merge-2"},{"$ref":"#/definitions/OpenRewriteRecipe-2"},{"$ref":"#/definitions/Provenance-2"},{"$ref":"#/definitions/ReplaceText-2"},{"$ref":"#/definitions/RewritePath-2"},{"$ref":"#/definitions/UniquePath-2"},{"$ref":"#/definitions/UseEncoding-2"},{"$ref":"#/definitions/YTT-2"}]},"name":{"type":"string","title":"name","description":"The transform name"},"noShadow":{"type":"boolean","title":"noShadow","description":"Whether shadowing should be turned off"},"symbols":{"title":"symbols","description":"A list of additional variables and their values","type":"array","items":{"title":"symbols","allOf":[{"$ref":"#/definitions/DerivedSymbol"}]}}}},"Let-2":{"type":"object","properties":{"type":{"const":"Let"}},"required":["type"],"allOf":[{"$ref":"#/definitions/Let-1"}]},"Loop-1":{"type":"object","properties":{"condition":{"title":"condition","description":"The SpEL expression that determines if this Transform should execute","allOf":[{"$ref":"#/definitions/Expression"}]},"doAsChain":{"anyOf":[{"$ref":"#/definitions/Chain-2"},{"$ref":"#/definitions/Combo-2"},{"$ref":"#/definitions/Exclude-2"},{"$ref":"#/definitions/Include-2"},{"$ref":"#/definitions/InvokeFragment-2"},{"$ref":"#/definitions/Let-2"},{"$ref":"#/definitions/Loop-2"},{"$ref":"#/definitions/Merge-2"},{"$ref":"#/definitions/OpenRewriteRecipe-2"},{"$ref":"#/definitions/Provenance-2"},{"$ref":"#/definitions/ReplaceText-2"},{"$ref":"#/definitions/RewritePath-2"},{"$ref":"#/definitions/UniquePath-2"},{"$ref":"#/definitions/UseEncoding-2"},{"$ref":"#/definitions/YTT-2"}]},"doAsMerge":{"anyOf":[{"$ref":"#/definitions/Chain-2"},{"$ref":"#/definitions/Combo-2"},{"$ref":"#/definitions/Exclude-2"},{"$ref":"#/definitions/Include-2"},{"$ref":"#/definitions/InvokeFragment-2"},{"$ref":"#/definitions/Let-2"},{"$ref":"#/definitions/Loop-2"},{"$ref":"#/definitions/Merge-2"},{"$ref":"#/definitions/OpenRewriteRecipe-2"},{"$ref":"#/definitions/Provenance-2"},{"$ref":"#/definitions/ReplaceText-2"},{"$ref":"#/definitions/RewritePath-2"},{"$ref":"#/definitions/UniquePath-2"},{"$ref":"#/definitions/UseEncoding-2"},{"$ref":"#/definitions/YTT-2"}]},"index":{"type":"string","title":"index","description":"The variable's name to be assigned to the index of the current element on each iteration","pattern":"^$|^[a-z][a-z0-9A-Z]*$"},"name":{"type":"string","title":"name","description":"The transform name"},"on":{"title":"on","description":"A SpEL expression that evaluates a list that contains the elements to be iterated over","allOf":[{"$ref":"#/definitions/Expression"}]},"var":{"type":"string","title":"var","description":"The name of the variable to be assigned to the current element on each iteration","pattern":"^$|^[a-z][a-z0-9A-Z]*$"}}},"Loop-2":{"type":"object","properties":{"type":{"const":"Loop"}},"required":["type"],"allOf":[{"$ref":"#/definitions/Loop-1"}]},"Merge-1":{"type":"object","properties":{"condition":{"title":"condition","description":"The SpEL expression that determines if this Transform should execute","allOf":[{"$ref":"#/definitions/Expression"}]},"name":{"type":"string","title":"name","description":"The transform name"},"sources":{"title":"sources","description":"A list of child Transforms to be executed in parallel","type":"array","items":{"anyOf":[{"$ref":"#/definitions/Chain-2"},{"$ref":"#/definitions/Combo-2"},{"$ref":"#/definitions/Exclude-2"},{"$ref":"#/definitions/Include-2"},{"$ref":"#/definitions/InvokeFragment-2"},{"$ref":"#/definitions/Let-2"},{"$ref":"#/definitions/Loop-2"},{"$ref":"#/definitions/Merge-2"},{"$ref":"#/definitions/OpenRewriteRecipe-2"},{"$ref":"#/definitions/Provenance-2"},{"$ref":"#/definitions/ReplaceText-2"},{"$ref":"#/definitions/RewritePath-2"},{"$ref":"#/definitions/UniquePath-2"},{"$ref":"#/definitions/UseEncoding-2"},{"$ref":"#/definitions/YTT-2"}]}}}},"Merge-2":{"type":"object","properties":{"type":{"const":"Merge"}},"required":["type"],"allOf":[{"$ref":"#/definitions/Merge-1"}]},"OpenRewriteRecipe-1":{"type":"object","properties":{"condition":{"title":"condition","description":"The SpEL expression that determines if this Transform should execute","allOf":[{"$ref":"#/definitions/Expression"}]},"name":{"type":"string","title":"name","description":"The transform name"},"options":{"type":"object","title":"options","description":"Keys and values that depend on the class of the recipe"},"parseOrFail":{"type":"boolean","title":"parseOrFail"},"recipe":{"type":"string","pattern":"^[a-zA-Z_$][a-zA-Z\\d_$]*(?:\\.[a-zA-Z_$][a-zA-Z\\d_$]*)*$","title":"recipe","description":"Full qualified classname of the recipe"}}},"OpenRewriteRecipe-2":{"type":"object","properties":{"type":{"const":"OpenRewriteRecipe"}},"required":["type"],"allOf":[{"$ref":"#/definitions/OpenRewriteRecipe-1"}]},"Pattern":{"type":"string","format":"regex"},"Provenance-1":{"type":"object","properties":{"condition":{"title":"condition","description":"The SpEL expression that determines if this Transform should execute","allOf":[{"$ref":"#/definitions/Expression"}]},"name":{"type":"string","title":"name","description":"The transform name"}}},"Provenance-2":{"type":"object","properties":{"type":{"const":"Provenance"}},"required":["type"],"allOf":[{"$ref":"#/definitions/Provenance-1"}]},"ReplaceText-1":{"type":"object","properties":{"condition":{"title":"condition","description":"The SpEL expression that determines if this Transform should execute","allOf":[{"$ref":"#/definitions/Expression"}]},"name":{"type":"string","title":"name","description":"The transform name"},"regex":{"type":"object","properties":{"pattern":{"title":"pattern","description":"The regular expression that determines text that will be replaced","allOf":[{"$ref":"#/definitions/Pattern"}]},"with":{"title":"with","description":"The SpEL expression that evaluates to the text that will replace the previous string","allOf":[{"$ref":"#/definitions/Expression"}]}},"title":"regex","description":"The replacement rule using a single regular expression"},"substitutions":{"title":"substitutions","description":"The replacement rules using literal text tokens","type":"array","items":{"type":"object","properties":{"text":{"type":"string","title":"text","description":"The text that will be replaced","minLength":1},"with":{"title":"with","description":"The SpEL expression that evaluates to the text that will replace the previous string","allOf":[{"$ref":"#/definitions/Expression"}]}},"title":"substitutions"}}}},"ReplaceText-2":{"type":"object","properties":{"type":{"const":"ReplaceText"}},"required":["type"],"allOf":[{"$ref":"#/definitions/ReplaceText-1"}]},"RewritePath-1":{"type":"object","properties":{"condition":{"title":"condition","description":"The SpEL expression that determines if this Transform should execute","allOf":[{"$ref":"#/definitions/Expression"}]},"matchOrFail":{"type":"boolean","title":"matchOrFail","description":"Whether an error should occur if the regex doesn't match"},"name":{"type":"string","title":"name","description":"The transform name"},"regex":{"title":"regex","description":"The regular expression used to match each input files path","allOf":[{"$ref":"#/definitions/Pattern"}]},"rewriteTo":{"title":"rewriteTo","description":"The SpEL expression of the location that the file will be rewritten to","allOf":[{"$ref":"#/definitions/Expression"}]}}},"RewritePath-2":{"type":"object","properties":{"type":{"const":"RewritePath"}},"required":["type"],"allOf":[{"$ref":"#/definitions/RewritePath-1"}]},"UniquePath-1":{"type":"object","properties":{"condition":{"title":"condition","description":"The SpEL expression that determines if this Transform should execute","allOf":[{"$ref":"#/definitions/Expression"}]},"name":{"type":"string","title":"name","description":"The transform name"},"strategy":{"title":"strategy","description":"How conflict is handled when an operation produces multiple files at the same path","allOf":[{"$ref":"#/definitions/ConflictResolution"}]}}},"UniquePath-2":{"type":"object","properties":{"type":{"const":"UniquePath"}},"required":["type"],"allOf":[{"$ref":"#/definitions/UniquePath-1"}]},"UseEncoding-1":{"type":"object","properties":{"condition":{"title":"condition","description":"The SpEL expression that determines if this Transform should execute","allOf":[{"$ref":"#/definitions/Expression"}]},"encoding":{"type":"object","title":"encoding","description":"The encuding to use, as recognized by the java java.nio.charset.Charset class"},"name":{"type":"string","title":"name","description":"The transform name"}}},"UseEncoding-2":{"type":"object","properties":{"type":{"const":"UseEncoding"}},"required":["type"],"allOf":[{"$ref":"#/definitions/UseEncoding-1"}]},"YTT-1":{"type":"object","properties":{"allowList":{"title":"allowList","description":"A list of variable names that are allowed to be passed to YTT","type":"array","items":{"title":"allowList","allOf":[{"$ref":"#/definitions/Pattern"}]}},"condition":{"title":"condition","description":"The SpEL expression that determines if this Transform should execute","allOf":[{"$ref":"#/definitions/Expression"}]},"denyList":{"title":"denyList","description":"A list of variable names that are denied from being passed to YTT","type":"array","items":{"title":"denyList","allOf":[{"$ref":"#/definitions/Pattern"}]}},"extraArgs":{"title":"extraArgs","description":"A list of SpEL expressions whose results are additional command line arguments","type":"array","items":{"title":"extraArgs","allOf":[{"$ref":"#/definitions/Expression"}]}},"name":{"type":"string","title":"name","description":"The transform name"}}},"YTT-2":{"type":"object","properties":{"type":{"const":"YTT"}},"required":["type"],"allOf":[{"$ref":"#/definitions/YTT-1"}]}},"properties":{"accelerator":{"type":"object","properties":{"description":{"type":"string","title":"description","description":"A more detailed description"},"displayName":{"type":"string","title":"displayName","description":"A human-readable name"},"iconUrl":{"type":"string","title":"iconUrl","description":"A URL pointing to an icon image"},"imports":{"title":"imports","description":"The list of fragment to import","type":"array","items":{"type":"object","properties":{"expose":{"title":"expose","description":"The list of fragment options to make available as accelerator options","type":"array","items":{"type":"object","properties":{"as":{"type":"string","title":"as","description":"The alias to use as the name of the option","minLength":1,"pattern":"^$|^[a-z][a-z0-9A-Z]*$"},"dependsOn":{"title":"dependsOn","description":"The dependency that controls this options visibility","allOf":[{"$ref":"#/definitions/DependsOn"}]},"name":{"type":"string","title":"name","description":"The original name of the option","minLength":1,"pattern":"^\\*$|^$|^[a-z][a-z0-9A-Z]*$"}},"title":"expose"}},"exposeTypes":{"title":"exposeTypes","description":"The list of fragment types to make available as accelerator types","type":"array","items":{"type":"object","properties":{"as":{"type":"string","title":"as","description":"The alias to use as the name of the type","minLength":1,"pattern":"^$|^[A-Z][a-z0-9A-Z]*$"},"name":{"type":"string","title":"name","description":"The original name of the type","minLength":1,"pattern":"^\\*$|^$|^[A-Z][a-z0-9A-Z]*$"}},"title":"exposeTypes"}},"name":{"type":"string","title":"name","description":"The name of the fragment to import","minLength":1}},"title":"imports"}},"options":{"title":"options","description":"The list of options passed to the UI to create input text boxes","type":"array","items":{"title":"options","allOf":[{"$ref":"#/definitions/AcceleratorOption"}]}},"tags":{"title":"tags","description":"A list of tags used to filter accelerators","type":"array","items":{"type":"string","title":"tags"}},"types":{"title":"types","description":"The definitions of custom types","type":"array","items":{"type":"object","properties":{"name":{"type":"string","title":"name","description":"The capitalized name of this custom type","minLength":1,"pattern":"^$|^[A-Z][a-z0-9A-Z]*$"},"struct":{"title":"struct","description":"A sequence of option definitions","minItems":1,"type":"array","items":{"title":"struct","allOf":[{"$ref":"#/definitions/AcceleratorOption"}]}}},"title":"types"}}},"title":"accelerator","description":"The metadata (non-behavioral) part of an App Accelerator's accelerator.yaml file"},"engine":{"anyOf":[{"$ref":"#/definitions/Chain-2"},{"$ref":"#/definitions/Combo-2"},{"$ref":"#/definitions/Exclude-2"},{"$ref":"#/definitions/Include-2"},{"$ref":"#/definitions/InvokeFragment-2"},{"$ref":"#/definitions/Let-2"},{"$ref":"#/definitions/Loop-2"},{"$ref":"#/definitions/Merge-2"},{"$ref":"#/definitions/OpenRewriteRecipe-2"},{"$ref":"#/definitions/Provenance-2"},{"$ref":"#/definitions/ReplaceText-2"},{"$ref":"#/definitions/RewritePath-2"},{"$ref":"#/definitions/UniquePath-2"},{"$ref":"#/definitions/UseEncoding-2"},{"$ref":"#/definitions/YTT-2"}]}},"type":"object"}