blend-kit 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/antlr.readme +1 -0
  2. package/dist/ai-models/api-label/APILabelHelper.js +76 -0
  3. package/dist/ai-models/api-label/APILabelHelper.ts +34 -0
  4. package/dist/ai-models/api-label/labels.json +1 -0
  5. package/dist/ai-models/api-label/model.json +1 -0
  6. package/dist/ai-models/api-label/weights.bin +0 -0
  7. package/dist/ai-models/api-label/wordIndex.json +1 -0
  8. package/dist/ai-models/tokenizer.js +18 -0
  9. package/dist/ai-models/tokenizer.ts +16 -0
  10. package/dist/commands/ui.js +15 -0
  11. package/dist/helper/ExpressHelper.js +18 -12
  12. package/dist/helper/FrontEndApiHelper.js +12 -14
  13. package/dist/helper/FrontEndReactApiHelper.js +6 -6
  14. package/dist/helper/MongoHelper.js +9 -2
  15. package/dist/helper/RNHelper.js +7 -0
  16. package/dist/helper/ReactHelper.js +10 -2
  17. package/dist/helper/grammarHelper/BlendApiGrammarHelper.js +44 -5
  18. package/dist/helper/grammarHelper/BlendMongoGrammarHelper.js +2 -1
  19. package/dist/index.js +2 -2
  20. package/dist/parser/blendExpress/src/grammar/BlendExpressLexer.js +201 -0
  21. package/dist/parser/blendExpress/src/grammar/BlendExpressListener.js +3 -0
  22. package/dist/parser/blendExpress/src/grammar/BlendExpressParser.js +961 -0
  23. package/dist/parser/blendReact/src/grammar/BlendReactLexer.js +1 -1
  24. package/dist/server.js +31 -0
  25. package/dist/types/apiOperationTypes.js +8 -1
  26. package/package.json +6 -3
  27. package/src/ai-models/api-label/APILabelHelper.ts +34 -0
  28. package/src/ai-models/api-label/labels.json +1 -0
  29. package/src/ai-models/api-label/model.json +1 -0
  30. package/src/ai-models/api-label/weights.bin +0 -0
  31. package/src/ai-models/api-label/wordIndex.json +1 -0
  32. package/src/ai-models/tokenizer.ts +16 -0
  33. package/src/grammar/.antlr/BlendApiLexer.java +2 -2
  34. package/src/grammar/.antlr/BlendExpress.interp +70 -0
  35. package/src/grammar/.antlr/BlendExpress.tokens +44 -0
  36. package/src/grammar/.antlr/BlendExpressLexer.interp +89 -0
  37. package/src/grammar/.antlr/BlendExpressLexer.java +237 -0
  38. package/src/grammar/.antlr/BlendExpressLexer.tokens +44 -0
  39. package/src/grammar/.antlr/BlendExpressParser.java +767 -0
  40. package/src/grammar/.antlr/BlendMongo.interp +3 -1
  41. package/src/grammar/.antlr/BlendMongo.tokens +5 -3
  42. package/src/grammar/.antlr/BlendMongoLexer.interp +4 -1
  43. package/src/grammar/.antlr/BlendMongoLexer.java +99 -95
  44. package/src/grammar/.antlr/BlendMongoLexer.tokens +5 -3
  45. package/src/grammar/.antlr/BlendMongoParser.java +11 -11
  46. package/src/grammar/.antlr/BlendReactLexer.interp +1 -1
  47. package/src/grammar/.antlr/BlendReactLexer.java +1 -1
  48. package/src/grammar/BlendExpress.g4 +26 -0
  49. package/src/grammar/BlendMongo.g4 +1 -1
  50. package/src/grammar/BlendReact.g4 +1 -1
  51. package/src/helper/ExpressHelper.ts +153 -141
  52. package/src/helper/FrontEndApiHelper.ts +13 -14
  53. package/src/helper/FrontEndReactApiHelper.ts +6 -6
  54. package/src/helper/MongoHelper.ts +9 -2
  55. package/src/helper/RNHelper.ts +76 -70
  56. package/src/helper/ReactHelper.ts +10 -2
  57. package/src/helper/grammarHelper/BlendApiGrammarHelper.ts +46 -6
  58. package/src/helper/grammarHelper/BlendMongoGrammarHelper.ts +4 -3
  59. package/src/index.ts +3 -2
  60. package/src/parser/blendExpress/src/grammar/BlendExpress.interp +70 -0
  61. package/src/parser/blendExpress/src/grammar/BlendExpress.tokens +44 -0
  62. package/src/parser/blendExpress/src/grammar/BlendExpressLexer.interp +89 -0
  63. package/src/parser/blendExpress/src/grammar/BlendExpressLexer.tokens +44 -0
  64. package/src/parser/blendExpress/src/grammar/BlendExpressLexer.ts +193 -0
  65. package/src/parser/blendExpress/src/grammar/BlendExpressListener.ts +145 -0
  66. package/src/parser/blendExpress/src/grammar/BlendExpressParser.ts +968 -0
  67. package/src/parser/blendReact/src/grammar/BlendReactLexer.interp +1 -1
  68. package/src/parser/blendReact/src/grammar/BlendReactLexer.ts +1 -1
  69. package/src/types/apiOperationTypes.ts +12 -0
  70. package/tsconfig.json +1 -0
@@ -123,7 +123,7 @@ BlendReactLexer._serializedATN = "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B
123
123
  "r\v\x10\x03\x11\x06\x11u\n\x11\r\x11\x0E\x11v\x03\x11\x03\x11\x02\x02" +
124
124
  "\x02\x12\x03\x02\x03\x05\x02\x04\x07\x02\x05\t\x02\x06\v\x02\x07\r\x02" +
125
125
  "\b\x0F\x02\t\x11\x02\n\x13\x02\v\x15\x02\f\x17\x02\r\x19\x02\x0E\x1B\x02" +
126
- "\x0F\x1D\x02\x10\x1F\x02\x11!\x02\x12\x03\x02\x07\x06\x021;C\\aac|\x04" +
126
+ "\x0F\x1D\x02\x10\x1F\x02\x11!\x02\x12\x03\x02\x07\x06\x021<C\\aac|\x04" +
127
127
  "\x02aac|\x06\x022;C\\aac|\x03\x02C\\\x05\x02\v\f\x0F\x0F\"\"\x02}\x02" +
128
128
  "\x03\x03\x02\x02\x02\x02\x05\x03\x02\x02\x02\x02\x07\x03\x02\x02\x02\x02" +
129
129
  "\t\x03\x02\x02\x02\x02\v\x03\x02\x02\x02\x02\r\x03\x02\x02\x02\x02\x0F" +
package/dist/server.js ADDED
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const express_1 = __importDefault(require("express"));
7
+ const cors_1 = __importDefault(require("cors"));
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const path_1 = __importDefault(require("path"));
10
+ const app = (0, express_1.default)();
11
+ const PORT = 6000;
12
+ app.use((0, cors_1.default)());
13
+ app.get('/config', (req, res) => {
14
+ const currentDir = process.cwd();
15
+ const filePath = path_1.default.join(currentDir, '.basic', 'basicConfig.json'); // or any name
16
+ if (!fs_1.default.existsSync(filePath)) {
17
+ return res.status(404).json({ error: 'File not found in .basic folder' });
18
+ }
19
+ try {
20
+ const fileContent = fs_1.default.readFileSync(filePath, 'utf-8');
21
+ const json = JSON.parse(fileContent);
22
+ res.json(json);
23
+ }
24
+ catch (err) {
25
+ console.error(err);
26
+ res.status(500).json({ error: 'Invalid JSON or read error' });
27
+ }
28
+ });
29
+ app.listen(PORT, () => {
30
+ console.log(`🚀 Express server running at http://localhost:${PORT}`);
31
+ });
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ApiType = void 0;
3
+ exports.TemplateType = exports.ApiType = void 0;
4
4
  // export type IApiModule = {
5
5
  // name: string;
6
6
  // apiList: IApiSpec[];
@@ -11,3 +11,10 @@ var ApiType;
11
11
  ApiType["Post"] = "POST";
12
12
  ApiType["Put"] = "PUT";
13
13
  })(ApiType || (exports.ApiType = ApiType = {}));
14
+ var TemplateType;
15
+ (function (TemplateType) {
16
+ TemplateType["Add"] = "Add";
17
+ TemplateType["Update"] = "Update";
18
+ TemplateType["Delete"] = "Delete";
19
+ TemplateType["Get"] = "Get";
20
+ })(TemplateType || (exports.TemplateType = TemplateType = {}));
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "blend-kit",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "main": "index.js",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1",
7
- "build": "tsc && copyfiles -u 1 template/**/* dist/",
7
+ "build": "tsc && copyfiles -u 1 template/**/* dist/ && cp -r src/ai-models dist/ && npm link",
8
8
  "start": "node dist/index.js"
9
9
  },
10
10
  "keywords": [],
@@ -12,7 +12,10 @@
12
12
  "license": "ISC",
13
13
  "description": "",
14
14
  "dependencies": {
15
+ "@tensorflow/tfjs-node": "^4.22.0",
15
16
  "commander": "^12.1.0",
17
+ "cors": "^2.8.5",
18
+ "express": "^5.1.0",
16
19
  "fs-extra": "^11.2.0"
17
20
  },
18
21
  "devDependencies": {
@@ -26,4 +29,4 @@
26
29
  "bin": {
27
30
  "blend-cli": "./dist/index.js"
28
31
  }
29
- }
32
+ }
@@ -0,0 +1,34 @@
1
+
2
+ import { readFileSync } from "node:fs";
3
+ import { tokenize } from "../tokenizer";
4
+ import * as tf from '@tensorflow/tfjs-node';
5
+ import wordIndex from './wordIndex.json';
6
+ import labels from './labels.json';
7
+ import { join } from "node:path";
8
+
9
+ export default class APILabelAIHelper {
10
+ static async predict(apiName: string) {
11
+ // const wordIndex: Record<string, number> = JSON.parse(readFileSync('./wordIndex.json', 'utf-8'));
12
+ const vocabLength = Object.keys(wordIndex).length;
13
+ // const labels: string[] = JSON.parse(readFileSync('./models/labels.json', 'utf-8'));
14
+ const modelPath = `file://${join(__dirname, '/model.json')}`;
15
+ const model = await tf.loadLayersModel(modelPath);
16
+
17
+ const tokens = tokenize(apiName);
18
+ const indices = tokens.map(tok => wordIndex[tok] || 0);
19
+
20
+ const padded = new Array(vocabLength).fill(0);
21
+ // indices.forEach((val, idx) => { padded[idx] = val; });
22
+ for (let i = 0; i < Math.min(vocabLength, indices.length); i++) {
23
+ padded[i] = indices[i];
24
+ }
25
+
26
+ const input = tf.tensor2d([padded], [1, vocabLength], 'float32');
27
+
28
+ const prediction = model.predict(input) as tf.Tensor;
29
+ const probs = prediction.arraySync() as number[][];
30
+
31
+ const predictedLabel = labels[probs[0].indexOf(Math.max(...probs[0]))];
32
+ return predictedLabel;
33
+ }
34
+ }
@@ -0,0 +1 @@
1
+ ["Customer","Order","Product","User"]
@@ -0,0 +1 @@
1
+ {"modelTopology":{"class_name":"Sequential","config":{"name":"sequential_1","layers":[{"class_name":"Embedding","config":{"input_dim":67,"output_dim":16,"embeddings_initializer":{"class_name":"RandomUniform","config":{"minval":-0.05,"maxval":0.05,"seed":null}},"embeddings_regularizer":null,"activity_regularizer":null,"embeddings_constraint":null,"mask_zero":null,"input_length":66,"name":"embedding_Embedding1","trainable":true,"batch_input_shape":[null,66]}},{"class_name":"LSTM","config":{"name":"lstm_LSTM1","trainable":true,"units":32,"activation":"tanh","recurrent_activation":"hard_sigmoid","use_bias":true,"kernel_initializer":{"class_name":"VarianceScaling","config":{"scale":1,"mode":"fan_avg","distribution":"normal","seed":null}},"recurrent_initializer":{"class_name":"Orthogonal","config":{"gain":1,"seed":null}},"bias_initializer":{"class_name":"Zeros","config":{}},"unit_forget_bias":null,"kernel_regularizer":null,"recurrent_regularizer":null,"bias_regularizer":null,"activity_regularizer":null,"kernel_constraint":null,"recurrent_constraint":null,"bias_constraint":null,"dropout":0,"recurrent_dropout":0,"implementation":null,"return_sequences":false,"return_state":false,"go_backwards":false,"stateful":false,"unroll":false}},{"class_name":"Dense","config":{"units":4,"activation":"softmax","use_bias":true,"kernel_initializer":{"class_name":"VarianceScaling","config":{"scale":1,"mode":"fan_avg","distribution":"normal","seed":null}},"bias_initializer":{"class_name":"Zeros","config":{}},"kernel_regularizer":null,"bias_regularizer":null,"activity_regularizer":null,"kernel_constraint":null,"bias_constraint":null,"name":"dense_Dense1","trainable":true}}]},"keras_version":"tfjs-layers 4.22.0","backend":"tensor_flow.js"},"weightsManifest":[{"paths":["weights.bin"],"weights":[{"name":"embedding_Embedding1/embeddings","shape":[67,16],"dtype":"float32"},{"name":"lstm_LSTM1/kernel","shape":[16,128],"dtype":"float32"},{"name":"lstm_LSTM1/recurrent_kernel","shape":[32,128],"dtype":"float32"},{"name":"lstm_LSTM1/bias","shape":[128],"dtype":"float32"},{"name":"dense_Dense1/kernel","shape":[32,4],"dtype":"float32"},{"name":"dense_Dense1/bias","shape":[4],"dtype":"float32"}]}],"format":"layers-model","generatedBy":"TensorFlow.js tfjs-layers v4.22.0","convertedBy":null}
@@ -0,0 +1 @@
1
+ {"get":1,"customer":2,"details":3,"fetch":4,"user":5,"orders":6,"product":7,"stock":8,"create":9,"new":10,"add":11,"account":12,"item":13,"to":14,"cart":15,"update":16,"place":17,"order":18,"now":19,"profile":20,"modify":21,"settings":22,"status":23,"info":24,"available":25,"products":26,"history":27,"items":28,"listing":29,"password":30,"list":31,"availability":32,"address":33,"summary":34,"session":35,"quantity":36,"preferences":37,"reviews":38,"invoice":39,"tracking":40,"wishlist":41,"contact":42,"feedback":43,"image":44,"priority":45,"category":46,"categories":47,"preference":48,"reward":49,"specs":50,"data":51,"request":52,"transactions":53,"warranty":54,"comment":55,"notification":56,"bundle":57,"invoices":58,"sessions":59,"transaction":60,"gallery":61,"coupons":62,"shipment":63,"credentials":64,"review":65,"invitation":66}
@@ -0,0 +1,16 @@
1
+ export function tokenize(text: string): string[] {
2
+ return text
3
+ .replace(/([a-z])([A-Z])/g, '$1 $2') // Split camelCase
4
+ .toLowerCase()
5
+ .split(/[^a-z]+/) // Split on non-letters
6
+ .filter(Boolean);
7
+ }
8
+
9
+
10
+ export function buildVocab(data: { apiName: string }[]): string[] {
11
+ const vocabSet = new Set<string>();
12
+ data.forEach(({ apiName }) => {
13
+ tokenize(apiName).forEach(word => {vocabSet.add(word)});
14
+ });
15
+ return Array.from(vocabSet);
16
+ }
@@ -1,4 +1,4 @@
1
- // Generated from /Users/govindve/govi/Projects/NodeProjects/blend-cli/src/grammar/BlendApi.g4 by ANTLR 4.13.1
1
+ // Generated from /Users/govindve/govi/Projects/NodeProjects/blend-cli/src/grammar/BlendExpress.g4 by ANTLR 4.13.1
2
2
  import org.antlr.v4.runtime.Lexer;
3
3
  import org.antlr.v4.runtime.CharStream;
4
4
  import org.antlr.v4.runtime.Token;
@@ -94,7 +94,7 @@ public class BlendApiLexer extends Lexer {
94
94
  }
95
95
 
96
96
  @Override
97
- public String getGrammarFileName() { return "BlendApi.g4"; }
97
+ public String getGrammarFileName() { return "BlendExpress.g4"; }
98
98
 
99
99
  @Override
100
100
  public String[] getRuleNames() { return ruleNames; }
@@ -0,0 +1,70 @@
1
+ token literal names:
2
+ null
3
+ 'section'
4
+ '{'
5
+ '}'
6
+ 'module'
7
+ 'api'
8
+ '('
9
+ ')'
10
+ 'authenticated'
11
+ 'input('
12
+ ','
13
+ 'output('
14
+ ':'
15
+ '[]'
16
+ '?'
17
+ '->'
18
+ 'string'
19
+ 'number'
20
+ 'boolean'
21
+ 'any'
22
+ 'object'
23
+ null
24
+ null
25
+ null
26
+ null
27
+
28
+ token symbolic names:
29
+ null
30
+ null
31
+ null
32
+ null
33
+ null
34
+ null
35
+ null
36
+ null
37
+ null
38
+ null
39
+ null
40
+ null
41
+ null
42
+ null
43
+ null
44
+ null
45
+ null
46
+ null
47
+ null
48
+ null
49
+ null
50
+ HTTP_METHOD
51
+ IDENTIFIER
52
+ CAPITAL_IDENTIFIER
53
+ WS
54
+
55
+ rule names:
56
+ program
57
+ sectionDefinition
58
+ moduleDefinition
59
+ apiDefinition
60
+ authenticated
61
+ inputDefinition
62
+ outputDefinition
63
+ directOutputDefenition
64
+ field
65
+ type
66
+ primitiveType
67
+
68
+
69
+ atn:
70
+ [4, 1, 24, 119, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 1, 0, 1, 0, 5, 0, 25, 8, 0, 10, 0, 12, 0, 28, 9, 0, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 34, 8, 1, 10, 1, 12, 1, 37, 9, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 51, 8, 3, 1, 3, 3, 3, 54, 8, 3, 1, 3, 3, 3, 57, 8, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 67, 8, 5, 10, 5, 12, 5, 70, 9, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 5, 6, 78, 8, 6, 10, 6, 12, 6, 81, 9, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 89, 8, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 115, 8, 9, 1, 10, 1, 10, 1, 10, 0, 0, 11, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 0, 1, 1, 0, 16, 20, 120, 0, 22, 1, 0, 0, 0, 2, 29, 1, 0, 0, 0, 4, 40, 1, 0, 0, 0, 6, 43, 1, 0, 0, 0, 8, 60, 1, 0, 0, 0, 10, 62, 1, 0, 0, 0, 12, 88, 1, 0, 0, 0, 14, 90, 1, 0, 0, 0, 16, 92, 1, 0, 0, 0, 18, 114, 1, 0, 0, 0, 20, 116, 1, 0, 0, 0, 22, 26, 3, 4, 2, 0, 23, 25, 3, 2, 1, 0, 24, 23, 1, 0, 0, 0, 25, 28, 1, 0, 0, 0, 26, 24, 1, 0, 0, 0, 26, 27, 1, 0, 0, 0, 27, 1, 1, 0, 0, 0, 28, 26, 1, 0, 0, 0, 29, 30, 5, 1, 0, 0, 30, 31, 5, 23, 0, 0, 31, 35, 5, 2, 0, 0, 32, 34, 3, 6, 3, 0, 33, 32, 1, 0, 0, 0, 34, 37, 1, 0, 0, 0, 35, 33, 1, 0, 0, 0, 35, 36, 1, 0, 0, 0, 36, 38, 1, 0, 0, 0, 37, 35, 1, 0, 0, 0, 38, 39, 5, 3, 0, 0, 39, 3, 1, 0, 0, 0, 40, 41, 5, 4, 0, 0, 41, 42, 5, 23, 0, 0, 42, 5, 1, 0, 0, 0, 43, 44, 5, 5, 0, 0, 44, 45, 5, 22, 0, 0, 45, 46, 5, 6, 0, 0, 46, 47, 5, 21, 0, 0, 47, 48, 5, 7, 0, 0, 48, 50, 5, 2, 0, 0, 49, 51, 3, 8, 4, 0, 50, 49, 1, 0, 0, 0, 50, 51, 1, 0, 0, 0, 51, 53, 1, 0, 0, 0, 52, 54, 3, 10, 5, 0, 53, 52, 1, 0, 0, 0, 53, 54, 1, 0, 0, 0, 54, 56, 1, 0, 0, 0, 55, 57, 3, 12, 6, 0, 56, 55, 1, 0, 0, 0, 56, 57, 1, 0, 0, 0, 57, 58, 1, 0, 0, 0, 58, 59, 5, 3, 0, 0, 59, 7, 1, 0, 0, 0, 60, 61, 5, 8, 0, 0, 61, 9, 1, 0, 0, 0, 62, 63, 5, 9, 0, 0, 63, 68, 3, 16, 8, 0, 64, 65, 5, 10, 0, 0, 65, 67, 3, 16, 8, 0, 66, 64, 1, 0, 0, 0, 67, 70, 1, 0, 0, 0, 68, 66, 1, 0, 0, 0, 68, 69, 1, 0, 0, 0, 69, 71, 1, 0, 0, 0, 70, 68, 1, 0, 0, 0, 71, 72, 5, 7, 0, 0, 72, 11, 1, 0, 0, 0, 73, 74, 5, 11, 0, 0, 74, 79, 3, 16, 8, 0, 75, 76, 5, 10, 0, 0, 76, 78, 3, 16, 8, 0, 77, 75, 1, 0, 0, 0, 78, 81, 1, 0, 0, 0, 79, 77, 1, 0, 0, 0, 79, 80, 1, 0, 0, 0, 80, 82, 1, 0, 0, 0, 81, 79, 1, 0, 0, 0, 82, 83, 5, 7, 0, 0, 83, 89, 1, 0, 0, 0, 84, 85, 5, 11, 0, 0, 85, 86, 3, 14, 7, 0, 86, 87, 5, 7, 0, 0, 87, 89, 1, 0, 0, 0, 88, 73, 1, 0, 0, 0, 88, 84, 1, 0, 0, 0, 89, 13, 1, 0, 0, 0, 90, 91, 3, 18, 9, 0, 91, 15, 1, 0, 0, 0, 92, 93, 5, 22, 0, 0, 93, 94, 5, 12, 0, 0, 94, 95, 3, 18, 9, 0, 95, 17, 1, 0, 0, 0, 96, 115, 3, 20, 10, 0, 97, 98, 3, 20, 10, 0, 98, 99, 5, 13, 0, 0, 99, 115, 1, 0, 0, 0, 100, 101, 3, 20, 10, 0, 101, 102, 5, 14, 0, 0, 102, 115, 1, 0, 0, 0, 103, 104, 5, 23, 0, 0, 104, 105, 5, 15, 0, 0, 105, 115, 5, 23, 0, 0, 106, 107, 5, 23, 0, 0, 107, 108, 5, 15, 0, 0, 108, 109, 5, 23, 0, 0, 109, 115, 5, 14, 0, 0, 110, 111, 5, 23, 0, 0, 111, 112, 5, 15, 0, 0, 112, 113, 5, 23, 0, 0, 113, 115, 5, 13, 0, 0, 114, 96, 1, 0, 0, 0, 114, 97, 1, 0, 0, 0, 114, 100, 1, 0, 0, 0, 114, 103, 1, 0, 0, 0, 114, 106, 1, 0, 0, 0, 114, 110, 1, 0, 0, 0, 115, 19, 1, 0, 0, 0, 116, 117, 7, 0, 0, 0, 117, 21, 1, 0, 0, 0, 9, 26, 35, 50, 53, 56, 68, 79, 88, 114]
@@ -0,0 +1,44 @@
1
+ T__0=1
2
+ T__1=2
3
+ T__2=3
4
+ T__3=4
5
+ T__4=5
6
+ T__5=6
7
+ T__6=7
8
+ T__7=8
9
+ T__8=9
10
+ T__9=10
11
+ T__10=11
12
+ T__11=12
13
+ T__12=13
14
+ T__13=14
15
+ T__14=15
16
+ T__15=16
17
+ T__16=17
18
+ T__17=18
19
+ T__18=19
20
+ T__19=20
21
+ HTTP_METHOD=21
22
+ IDENTIFIER=22
23
+ CAPITAL_IDENTIFIER=23
24
+ WS=24
25
+ 'section'=1
26
+ '{'=2
27
+ '}'=3
28
+ 'module'=4
29
+ 'api'=5
30
+ '('=6
31
+ ')'=7
32
+ 'authenticated'=8
33
+ 'input('=9
34
+ ','=10
35
+ 'output('=11
36
+ ':'=12
37
+ '[]'=13
38
+ '?'=14
39
+ '->'=15
40
+ 'string'=16
41
+ 'number'=17
42
+ 'boolean'=18
43
+ 'any'=19
44
+ 'object'=20
@@ -0,0 +1,89 @@
1
+ token literal names:
2
+ null
3
+ 'section'
4
+ '{'
5
+ '}'
6
+ 'module'
7
+ 'api'
8
+ '('
9
+ ')'
10
+ 'authenticated'
11
+ 'input('
12
+ ','
13
+ 'output('
14
+ ':'
15
+ '[]'
16
+ '?'
17
+ '->'
18
+ 'string'
19
+ 'number'
20
+ 'boolean'
21
+ 'any'
22
+ 'object'
23
+ null
24
+ null
25
+ null
26
+ null
27
+
28
+ token symbolic names:
29
+ null
30
+ null
31
+ null
32
+ null
33
+ null
34
+ null
35
+ null
36
+ null
37
+ null
38
+ null
39
+ null
40
+ null
41
+ null
42
+ null
43
+ null
44
+ null
45
+ null
46
+ null
47
+ null
48
+ null
49
+ null
50
+ HTTP_METHOD
51
+ IDENTIFIER
52
+ CAPITAL_IDENTIFIER
53
+ WS
54
+
55
+ rule names:
56
+ T__0
57
+ T__1
58
+ T__2
59
+ T__3
60
+ T__4
61
+ T__5
62
+ T__6
63
+ T__7
64
+ T__8
65
+ T__9
66
+ T__10
67
+ T__11
68
+ T__12
69
+ T__13
70
+ T__14
71
+ T__15
72
+ T__16
73
+ T__17
74
+ T__18
75
+ T__19
76
+ HTTP_METHOD
77
+ IDENTIFIER
78
+ CAPITAL_IDENTIFIER
79
+ WS
80
+
81
+ channel names:
82
+ DEFAULT_TOKEN_CHANNEL
83
+ HIDDEN
84
+
85
+ mode names:
86
+ DEFAULT_MODE
87
+
88
+ atn:
89
+ [4, 0, 24, 189, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 167, 8, 20, 1, 21, 1, 21, 5, 21, 171, 8, 21, 10, 21, 12, 21, 174, 9, 21, 1, 22, 1, 22, 5, 22, 178, 8, 22, 10, 22, 12, 22, 181, 9, 22, 1, 23, 4, 23, 184, 8, 23, 11, 23, 12, 23, 185, 1, 23, 1, 23, 0, 0, 24, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 1, 0, 4, 2, 0, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 1, 0, 65, 90, 3, 0, 9, 10, 13, 13, 32, 32, 194, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 1, 49, 1, 0, 0, 0, 3, 57, 1, 0, 0, 0, 5, 59, 1, 0, 0, 0, 7, 61, 1, 0, 0, 0, 9, 68, 1, 0, 0, 0, 11, 72, 1, 0, 0, 0, 13, 74, 1, 0, 0, 0, 15, 76, 1, 0, 0, 0, 17, 90, 1, 0, 0, 0, 19, 97, 1, 0, 0, 0, 21, 99, 1, 0, 0, 0, 23, 107, 1, 0, 0, 0, 25, 109, 1, 0, 0, 0, 27, 112, 1, 0, 0, 0, 29, 114, 1, 0, 0, 0, 31, 117, 1, 0, 0, 0, 33, 124, 1, 0, 0, 0, 35, 131, 1, 0, 0, 0, 37, 139, 1, 0, 0, 0, 39, 143, 1, 0, 0, 0, 41, 166, 1, 0, 0, 0, 43, 168, 1, 0, 0, 0, 45, 175, 1, 0, 0, 0, 47, 183, 1, 0, 0, 0, 49, 50, 5, 115, 0, 0, 50, 51, 5, 101, 0, 0, 51, 52, 5, 99, 0, 0, 52, 53, 5, 116, 0, 0, 53, 54, 5, 105, 0, 0, 54, 55, 5, 111, 0, 0, 55, 56, 5, 110, 0, 0, 56, 2, 1, 0, 0, 0, 57, 58, 5, 123, 0, 0, 58, 4, 1, 0, 0, 0, 59, 60, 5, 125, 0, 0, 60, 6, 1, 0, 0, 0, 61, 62, 5, 109, 0, 0, 62, 63, 5, 111, 0, 0, 63, 64, 5, 100, 0, 0, 64, 65, 5, 117, 0, 0, 65, 66, 5, 108, 0, 0, 66, 67, 5, 101, 0, 0, 67, 8, 1, 0, 0, 0, 68, 69, 5, 97, 0, 0, 69, 70, 5, 112, 0, 0, 70, 71, 5, 105, 0, 0, 71, 10, 1, 0, 0, 0, 72, 73, 5, 40, 0, 0, 73, 12, 1, 0, 0, 0, 74, 75, 5, 41, 0, 0, 75, 14, 1, 0, 0, 0, 76, 77, 5, 97, 0, 0, 77, 78, 5, 117, 0, 0, 78, 79, 5, 116, 0, 0, 79, 80, 5, 104, 0, 0, 80, 81, 5, 101, 0, 0, 81, 82, 5, 110, 0, 0, 82, 83, 5, 116, 0, 0, 83, 84, 5, 105, 0, 0, 84, 85, 5, 99, 0, 0, 85, 86, 5, 97, 0, 0, 86, 87, 5, 116, 0, 0, 87, 88, 5, 101, 0, 0, 88, 89, 5, 100, 0, 0, 89, 16, 1, 0, 0, 0, 90, 91, 5, 105, 0, 0, 91, 92, 5, 110, 0, 0, 92, 93, 5, 112, 0, 0, 93, 94, 5, 117, 0, 0, 94, 95, 5, 116, 0, 0, 95, 96, 5, 40, 0, 0, 96, 18, 1, 0, 0, 0, 97, 98, 5, 44, 0, 0, 98, 20, 1, 0, 0, 0, 99, 100, 5, 111, 0, 0, 100, 101, 5, 117, 0, 0, 101, 102, 5, 116, 0, 0, 102, 103, 5, 112, 0, 0, 103, 104, 5, 117, 0, 0, 104, 105, 5, 116, 0, 0, 105, 106, 5, 40, 0, 0, 106, 22, 1, 0, 0, 0, 107, 108, 5, 58, 0, 0, 108, 24, 1, 0, 0, 0, 109, 110, 5, 91, 0, 0, 110, 111, 5, 93, 0, 0, 111, 26, 1, 0, 0, 0, 112, 113, 5, 63, 0, 0, 113, 28, 1, 0, 0, 0, 114, 115, 5, 45, 0, 0, 115, 116, 5, 62, 0, 0, 116, 30, 1, 0, 0, 0, 117, 118, 5, 115, 0, 0, 118, 119, 5, 116, 0, 0, 119, 120, 5, 114, 0, 0, 120, 121, 5, 105, 0, 0, 121, 122, 5, 110, 0, 0, 122, 123, 5, 103, 0, 0, 123, 32, 1, 0, 0, 0, 124, 125, 5, 110, 0, 0, 125, 126, 5, 117, 0, 0, 126, 127, 5, 109, 0, 0, 127, 128, 5, 98, 0, 0, 128, 129, 5, 101, 0, 0, 129, 130, 5, 114, 0, 0, 130, 34, 1, 0, 0, 0, 131, 132, 5, 98, 0, 0, 132, 133, 5, 111, 0, 0, 133, 134, 5, 111, 0, 0, 134, 135, 5, 108, 0, 0, 135, 136, 5, 101, 0, 0, 136, 137, 5, 97, 0, 0, 137, 138, 5, 110, 0, 0, 138, 36, 1, 0, 0, 0, 139, 140, 5, 97, 0, 0, 140, 141, 5, 110, 0, 0, 141, 142, 5, 121, 0, 0, 142, 38, 1, 0, 0, 0, 143, 144, 5, 111, 0, 0, 144, 145, 5, 98, 0, 0, 145, 146, 5, 106, 0, 0, 146, 147, 5, 101, 0, 0, 147, 148, 5, 99, 0, 0, 148, 149, 5, 116, 0, 0, 149, 40, 1, 0, 0, 0, 150, 151, 5, 71, 0, 0, 151, 152, 5, 69, 0, 0, 152, 167, 5, 84, 0, 0, 153, 154, 5, 80, 0, 0, 154, 155, 5, 79, 0, 0, 155, 156, 5, 83, 0, 0, 156, 167, 5, 84, 0, 0, 157, 158, 5, 68, 0, 0, 158, 159, 5, 69, 0, 0, 159, 160, 5, 76, 0, 0, 160, 161, 5, 69, 0, 0, 161, 162, 5, 84, 0, 0, 162, 167, 5, 69, 0, 0, 163, 164, 5, 80, 0, 0, 164, 165, 5, 85, 0, 0, 165, 167, 5, 84, 0, 0, 166, 150, 1, 0, 0, 0, 166, 153, 1, 0, 0, 0, 166, 157, 1, 0, 0, 0, 166, 163, 1, 0, 0, 0, 167, 42, 1, 0, 0, 0, 168, 172, 7, 0, 0, 0, 169, 171, 7, 1, 0, 0, 170, 169, 1, 0, 0, 0, 171, 174, 1, 0, 0, 0, 172, 170, 1, 0, 0, 0, 172, 173, 1, 0, 0, 0, 173, 44, 1, 0, 0, 0, 174, 172, 1, 0, 0, 0, 175, 179, 7, 2, 0, 0, 176, 178, 7, 1, 0, 0, 177, 176, 1, 0, 0, 0, 178, 181, 1, 0, 0, 0, 179, 177, 1, 0, 0, 0, 179, 180, 1, 0, 0, 0, 180, 46, 1, 0, 0, 0, 181, 179, 1, 0, 0, 0, 182, 184, 7, 3, 0, 0, 183, 182, 1, 0, 0, 0, 184, 185, 1, 0, 0, 0, 185, 183, 1, 0, 0, 0, 185, 186, 1, 0, 0, 0, 186, 187, 1, 0, 0, 0, 187, 188, 6, 23, 0, 0, 188, 48, 1, 0, 0, 0, 5, 0, 166, 172, 179, 185, 1, 6, 0, 0]
@@ -0,0 +1,237 @@
1
+ // Generated from /Users/govindve/govi/Projects/NodeProjects/blend-cli/src/grammar/BlendExpress.g4 by ANTLR 4.13.1
2
+ import org.antlr.v4.runtime.Lexer;
3
+ import org.antlr.v4.runtime.CharStream;
4
+ import org.antlr.v4.runtime.Token;
5
+ import org.antlr.v4.runtime.TokenStream;
6
+ import org.antlr.v4.runtime.*;
7
+ import org.antlr.v4.runtime.atn.*;
8
+ import org.antlr.v4.runtime.dfa.DFA;
9
+ import org.antlr.v4.runtime.misc.*;
10
+
11
+ @SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue", "this-escape"})
12
+ public class BlendExpressLexer extends Lexer {
13
+ static { RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION); }
14
+
15
+ protected static final DFA[] _decisionToDFA;
16
+ protected static final PredictionContextCache _sharedContextCache =
17
+ new PredictionContextCache();
18
+ public static final int
19
+ T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, T__6=7, T__7=8, T__8=9,
20
+ T__9=10, T__10=11, T__11=12, T__12=13, T__13=14, T__14=15, T__15=16, T__16=17,
21
+ T__17=18, T__18=19, T__19=20, HTTP_METHOD=21, IDENTIFIER=22, CAPITAL_IDENTIFIER=23,
22
+ WS=24;
23
+ public static String[] channelNames = {
24
+ "DEFAULT_TOKEN_CHANNEL", "HIDDEN"
25
+ };
26
+
27
+ public static String[] modeNames = {
28
+ "DEFAULT_MODE"
29
+ };
30
+
31
+ private static String[] makeRuleNames() {
32
+ return new String[] {
33
+ "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8",
34
+ "T__9", "T__10", "T__11", "T__12", "T__13", "T__14", "T__15", "T__16",
35
+ "T__17", "T__18", "T__19", "HTTP_METHOD", "IDENTIFIER", "CAPITAL_IDENTIFIER",
36
+ "WS"
37
+ };
38
+ }
39
+ public static final String[] ruleNames = makeRuleNames();
40
+
41
+ private static String[] makeLiteralNames() {
42
+ return new String[] {
43
+ null, "'section'", "'{'", "'}'", "'module'", "'api'", "'('", "')'", "'authenticated'",
44
+ "'input('", "','", "'output('", "':'", "'[]'", "'?'", "'->'", "'string'",
45
+ "'number'", "'boolean'", "'any'", "'object'"
46
+ };
47
+ }
48
+ private static final String[] _LITERAL_NAMES = makeLiteralNames();
49
+ private static String[] makeSymbolicNames() {
50
+ return new String[] {
51
+ null, null, null, null, null, null, null, null, null, null, null, null,
52
+ null, null, null, null, null, null, null, null, null, "HTTP_METHOD",
53
+ "IDENTIFIER", "CAPITAL_IDENTIFIER", "WS"
54
+ };
55
+ }
56
+ private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames();
57
+ public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES);
58
+
59
+ /**
60
+ * @deprecated Use {@link #VOCABULARY} instead.
61
+ */
62
+ @Deprecated
63
+ public static final String[] tokenNames;
64
+ static {
65
+ tokenNames = new String[_SYMBOLIC_NAMES.length];
66
+ for (int i = 0; i < tokenNames.length; i++) {
67
+ tokenNames[i] = VOCABULARY.getLiteralName(i);
68
+ if (tokenNames[i] == null) {
69
+ tokenNames[i] = VOCABULARY.getSymbolicName(i);
70
+ }
71
+
72
+ if (tokenNames[i] == null) {
73
+ tokenNames[i] = "<INVALID>";
74
+ }
75
+ }
76
+ }
77
+
78
+ @Override
79
+ @Deprecated
80
+ public String[] getTokenNames() {
81
+ return tokenNames;
82
+ }
83
+
84
+ @Override
85
+
86
+ public Vocabulary getVocabulary() {
87
+ return VOCABULARY;
88
+ }
89
+
90
+
91
+ public BlendExpressLexer(CharStream input) {
92
+ super(input);
93
+ _interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
94
+ }
95
+
96
+ @Override
97
+ public String getGrammarFileName() { return "BlendExpress.g4"; }
98
+
99
+ @Override
100
+ public String[] getRuleNames() { return ruleNames; }
101
+
102
+ @Override
103
+ public String getSerializedATN() { return _serializedATN; }
104
+
105
+ @Override
106
+ public String[] getChannelNames() { return channelNames; }
107
+
108
+ @Override
109
+ public String[] getModeNames() { return modeNames; }
110
+
111
+ @Override
112
+ public ATN getATN() { return _ATN; }
113
+
114
+ public static final String _serializedATN =
115
+ "\u0004\u0000\u0018\u00bd\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002"+
116
+ "\u0001\u0007\u0001\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002"+
117
+ "\u0004\u0007\u0004\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002"+
118
+ "\u0007\u0007\u0007\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002"+
119
+ "\u000b\u0007\u000b\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e"+
120
+ "\u0002\u000f\u0007\u000f\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011"+
121
+ "\u0002\u0012\u0007\u0012\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014"+
122
+ "\u0002\u0015\u0007\u0015\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017"+
123
+ "\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000"+
124
+ "\u0001\u0000\u0001\u0000\u0001\u0001\u0001\u0001\u0001\u0002\u0001\u0002"+
125
+ "\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003"+
126
+ "\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0005"+
127
+ "\u0001\u0005\u0001\u0006\u0001\u0006\u0001\u0007\u0001\u0007\u0001\u0007"+
128
+ "\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007"+
129
+ "\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\b\u0001"+
130
+ "\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\t\u0001\t\u0001\n\u0001"+
131
+ "\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\u000b\u0001\u000b"+
132
+ "\u0001\f\u0001\f\u0001\f\u0001\r\u0001\r\u0001\u000e\u0001\u000e\u0001"+
133
+ "\u000e\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001"+
134
+ "\u000f\u0001\u000f\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001"+
135
+ "\u0010\u0001\u0010\u0001\u0010\u0001\u0011\u0001\u0011\u0001\u0011\u0001"+
136
+ "\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0012\u0001"+
137
+ "\u0012\u0001\u0012\u0001\u0012\u0001\u0013\u0001\u0013\u0001\u0013\u0001"+
138
+ "\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0014\u0001\u0014\u0001"+
139
+ "\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001"+
140
+ "\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001"+
141
+ "\u0014\u0001\u0014\u0003\u0014\u00a7\b\u0014\u0001\u0015\u0001\u0015\u0005"+
142
+ "\u0015\u00ab\b\u0015\n\u0015\f\u0015\u00ae\t\u0015\u0001\u0016\u0001\u0016"+
143
+ "\u0005\u0016\u00b2\b\u0016\n\u0016\f\u0016\u00b5\t\u0016\u0001\u0017\u0004"+
144
+ "\u0017\u00b8\b\u0017\u000b\u0017\f\u0017\u00b9\u0001\u0017\u0001\u0017"+
145
+ "\u0000\u0000\u0018\u0001\u0001\u0003\u0002\u0005\u0003\u0007\u0004\t\u0005"+
146
+ "\u000b\u0006\r\u0007\u000f\b\u0011\t\u0013\n\u0015\u000b\u0017\f\u0019"+
147
+ "\r\u001b\u000e\u001d\u000f\u001f\u0010!\u0011#\u0012%\u0013\'\u0014)\u0015"+
148
+ "+\u0016-\u0017/\u0018\u0001\u0000\u0004\u0002\u0000__az\u0004\u000009"+
149
+ "AZ__az\u0001\u0000AZ\u0003\u0000\t\n\r\r \u00c2\u0000\u0001\u0001\u0000"+
150
+ "\u0000\u0000\u0000\u0003\u0001\u0000\u0000\u0000\u0000\u0005\u0001\u0000"+
151
+ "\u0000\u0000\u0000\u0007\u0001\u0000\u0000\u0000\u0000\t\u0001\u0000\u0000"+
152
+ "\u0000\u0000\u000b\u0001\u0000\u0000\u0000\u0000\r\u0001\u0000\u0000\u0000"+
153
+ "\u0000\u000f\u0001\u0000\u0000\u0000\u0000\u0011\u0001\u0000\u0000\u0000"+
154
+ "\u0000\u0013\u0001\u0000\u0000\u0000\u0000\u0015\u0001\u0000\u0000\u0000"+
155
+ "\u0000\u0017\u0001\u0000\u0000\u0000\u0000\u0019\u0001\u0000\u0000\u0000"+
156
+ "\u0000\u001b\u0001\u0000\u0000\u0000\u0000\u001d\u0001\u0000\u0000\u0000"+
157
+ "\u0000\u001f\u0001\u0000\u0000\u0000\u0000!\u0001\u0000\u0000\u0000\u0000"+
158
+ "#\u0001\u0000\u0000\u0000\u0000%\u0001\u0000\u0000\u0000\u0000\'\u0001"+
159
+ "\u0000\u0000\u0000\u0000)\u0001\u0000\u0000\u0000\u0000+\u0001\u0000\u0000"+
160
+ "\u0000\u0000-\u0001\u0000\u0000\u0000\u0000/\u0001\u0000\u0000\u0000\u0001"+
161
+ "1\u0001\u0000\u0000\u0000\u00039\u0001\u0000\u0000\u0000\u0005;\u0001"+
162
+ "\u0000\u0000\u0000\u0007=\u0001\u0000\u0000\u0000\tD\u0001\u0000\u0000"+
163
+ "\u0000\u000bH\u0001\u0000\u0000\u0000\rJ\u0001\u0000\u0000\u0000\u000f"+
164
+ "L\u0001\u0000\u0000\u0000\u0011Z\u0001\u0000\u0000\u0000\u0013a\u0001"+
165
+ "\u0000\u0000\u0000\u0015c\u0001\u0000\u0000\u0000\u0017k\u0001\u0000\u0000"+
166
+ "\u0000\u0019m\u0001\u0000\u0000\u0000\u001bp\u0001\u0000\u0000\u0000\u001d"+
167
+ "r\u0001\u0000\u0000\u0000\u001fu\u0001\u0000\u0000\u0000!|\u0001\u0000"+
168
+ "\u0000\u0000#\u0083\u0001\u0000\u0000\u0000%\u008b\u0001\u0000\u0000\u0000"+
169
+ "\'\u008f\u0001\u0000\u0000\u0000)\u00a6\u0001\u0000\u0000\u0000+\u00a8"+
170
+ "\u0001\u0000\u0000\u0000-\u00af\u0001\u0000\u0000\u0000/\u00b7\u0001\u0000"+
171
+ "\u0000\u000012\u0005s\u0000\u000023\u0005e\u0000\u000034\u0005c\u0000"+
172
+ "\u000045\u0005t\u0000\u000056\u0005i\u0000\u000067\u0005o\u0000\u0000"+
173
+ "78\u0005n\u0000\u00008\u0002\u0001\u0000\u0000\u00009:\u0005{\u0000\u0000"+
174
+ ":\u0004\u0001\u0000\u0000\u0000;<\u0005}\u0000\u0000<\u0006\u0001\u0000"+
175
+ "\u0000\u0000=>\u0005m\u0000\u0000>?\u0005o\u0000\u0000?@\u0005d\u0000"+
176
+ "\u0000@A\u0005u\u0000\u0000AB\u0005l\u0000\u0000BC\u0005e\u0000\u0000"+
177
+ "C\b\u0001\u0000\u0000\u0000DE\u0005a\u0000\u0000EF\u0005p\u0000\u0000"+
178
+ "FG\u0005i\u0000\u0000G\n\u0001\u0000\u0000\u0000HI\u0005(\u0000\u0000"+
179
+ "I\f\u0001\u0000\u0000\u0000JK\u0005)\u0000\u0000K\u000e\u0001\u0000\u0000"+
180
+ "\u0000LM\u0005a\u0000\u0000MN\u0005u\u0000\u0000NO\u0005t\u0000\u0000"+
181
+ "OP\u0005h\u0000\u0000PQ\u0005e\u0000\u0000QR\u0005n\u0000\u0000RS\u0005"+
182
+ "t\u0000\u0000ST\u0005i\u0000\u0000TU\u0005c\u0000\u0000UV\u0005a\u0000"+
183
+ "\u0000VW\u0005t\u0000\u0000WX\u0005e\u0000\u0000XY\u0005d\u0000\u0000"+
184
+ "Y\u0010\u0001\u0000\u0000\u0000Z[\u0005i\u0000\u0000[\\\u0005n\u0000\u0000"+
185
+ "\\]\u0005p\u0000\u0000]^\u0005u\u0000\u0000^_\u0005t\u0000\u0000_`\u0005"+
186
+ "(\u0000\u0000`\u0012\u0001\u0000\u0000\u0000ab\u0005,\u0000\u0000b\u0014"+
187
+ "\u0001\u0000\u0000\u0000cd\u0005o\u0000\u0000de\u0005u\u0000\u0000ef\u0005"+
188
+ "t\u0000\u0000fg\u0005p\u0000\u0000gh\u0005u\u0000\u0000hi\u0005t\u0000"+
189
+ "\u0000ij\u0005(\u0000\u0000j\u0016\u0001\u0000\u0000\u0000kl\u0005:\u0000"+
190
+ "\u0000l\u0018\u0001\u0000\u0000\u0000mn\u0005[\u0000\u0000no\u0005]\u0000"+
191
+ "\u0000o\u001a\u0001\u0000\u0000\u0000pq\u0005?\u0000\u0000q\u001c\u0001"+
192
+ "\u0000\u0000\u0000rs\u0005-\u0000\u0000st\u0005>\u0000\u0000t\u001e\u0001"+
193
+ "\u0000\u0000\u0000uv\u0005s\u0000\u0000vw\u0005t\u0000\u0000wx\u0005r"+
194
+ "\u0000\u0000xy\u0005i\u0000\u0000yz\u0005n\u0000\u0000z{\u0005g\u0000"+
195
+ "\u0000{ \u0001\u0000\u0000\u0000|}\u0005n\u0000\u0000}~\u0005u\u0000\u0000"+
196
+ "~\u007f\u0005m\u0000\u0000\u007f\u0080\u0005b\u0000\u0000\u0080\u0081"+
197
+ "\u0005e\u0000\u0000\u0081\u0082\u0005r\u0000\u0000\u0082\"\u0001\u0000"+
198
+ "\u0000\u0000\u0083\u0084\u0005b\u0000\u0000\u0084\u0085\u0005o\u0000\u0000"+
199
+ "\u0085\u0086\u0005o\u0000\u0000\u0086\u0087\u0005l\u0000\u0000\u0087\u0088"+
200
+ "\u0005e\u0000\u0000\u0088\u0089\u0005a\u0000\u0000\u0089\u008a\u0005n"+
201
+ "\u0000\u0000\u008a$\u0001\u0000\u0000\u0000\u008b\u008c\u0005a\u0000\u0000"+
202
+ "\u008c\u008d\u0005n\u0000\u0000\u008d\u008e\u0005y\u0000\u0000\u008e&"+
203
+ "\u0001\u0000\u0000\u0000\u008f\u0090\u0005o\u0000\u0000\u0090\u0091\u0005"+
204
+ "b\u0000\u0000\u0091\u0092\u0005j\u0000\u0000\u0092\u0093\u0005e\u0000"+
205
+ "\u0000\u0093\u0094\u0005c\u0000\u0000\u0094\u0095\u0005t\u0000\u0000\u0095"+
206
+ "(\u0001\u0000\u0000\u0000\u0096\u0097\u0005G\u0000\u0000\u0097\u0098\u0005"+
207
+ "E\u0000\u0000\u0098\u00a7\u0005T\u0000\u0000\u0099\u009a\u0005P\u0000"+
208
+ "\u0000\u009a\u009b\u0005O\u0000\u0000\u009b\u009c\u0005S\u0000\u0000\u009c"+
209
+ "\u00a7\u0005T\u0000\u0000\u009d\u009e\u0005D\u0000\u0000\u009e\u009f\u0005"+
210
+ "E\u0000\u0000\u009f\u00a0\u0005L\u0000\u0000\u00a0\u00a1\u0005E\u0000"+
211
+ "\u0000\u00a1\u00a2\u0005T\u0000\u0000\u00a2\u00a7\u0005E\u0000\u0000\u00a3"+
212
+ "\u00a4\u0005P\u0000\u0000\u00a4\u00a5\u0005U\u0000\u0000\u00a5\u00a7\u0005"+
213
+ "T\u0000\u0000\u00a6\u0096\u0001\u0000\u0000\u0000\u00a6\u0099\u0001\u0000"+
214
+ "\u0000\u0000\u00a6\u009d\u0001\u0000\u0000\u0000\u00a6\u00a3\u0001\u0000"+
215
+ "\u0000\u0000\u00a7*\u0001\u0000\u0000\u0000\u00a8\u00ac\u0007\u0000\u0000"+
216
+ "\u0000\u00a9\u00ab\u0007\u0001\u0000\u0000\u00aa\u00a9\u0001\u0000\u0000"+
217
+ "\u0000\u00ab\u00ae\u0001\u0000\u0000\u0000\u00ac\u00aa\u0001\u0000\u0000"+
218
+ "\u0000\u00ac\u00ad\u0001\u0000\u0000\u0000\u00ad,\u0001\u0000\u0000\u0000"+
219
+ "\u00ae\u00ac\u0001\u0000\u0000\u0000\u00af\u00b3\u0007\u0002\u0000\u0000"+
220
+ "\u00b0\u00b2\u0007\u0001\u0000\u0000\u00b1\u00b0\u0001\u0000\u0000\u0000"+
221
+ "\u00b2\u00b5\u0001\u0000\u0000\u0000\u00b3\u00b1\u0001\u0000\u0000\u0000"+
222
+ "\u00b3\u00b4\u0001\u0000\u0000\u0000\u00b4.\u0001\u0000\u0000\u0000\u00b5"+
223
+ "\u00b3\u0001\u0000\u0000\u0000\u00b6\u00b8\u0007\u0003\u0000\u0000\u00b7"+
224
+ "\u00b6\u0001\u0000\u0000\u0000\u00b8\u00b9\u0001\u0000\u0000\u0000\u00b9"+
225
+ "\u00b7\u0001\u0000\u0000\u0000\u00b9\u00ba\u0001\u0000\u0000\u0000\u00ba"+
226
+ "\u00bb\u0001\u0000\u0000\u0000\u00bb\u00bc\u0006\u0017\u0000\u0000\u00bc"+
227
+ "0\u0001\u0000\u0000\u0000\u0005\u0000\u00a6\u00ac\u00b3\u00b9\u0001\u0006"+
228
+ "\u0000\u0000";
229
+ public static final ATN _ATN =
230
+ new ATNDeserializer().deserialize(_serializedATN.toCharArray());
231
+ static {
232
+ _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
233
+ for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
234
+ _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
235
+ }
236
+ }
237
+ }