diff --git a/frontend/docs/QuerySearch.md b/frontend/docs/QuerySearch.md index 5e1fbd116d7f..a36c4de9bfd2 100644 --- a/frontend/docs/QuerySearch.md +++ b/frontend/docs/QuerySearch.md @@ -32,7 +32,7 @@ import { getQueryContextAtCursor } from 'utils/queryContextUtils'; 2. Context-aware autocompletion 3. Support for various query operators (=, !=, IN, LIKE, etc.) 4. Support for complex conditions with AND/OR operators -5. Support for functions (HAS, HASANY, HASALL, HASNONE) +5. Support for functions (HAS, HASANY, HASALL) 6. Support for parentheses and nested conditions 7. Query examples for common use cases diff --git a/frontend/src/parser/FilterQuery.interp b/frontend/src/parser/FilterQuery.interp index 59028e95f718..83105ce119b2 100644 --- a/frontend/src/parser/FilterQuery.interp +++ b/frontend/src/parser/FilterQuery.interp @@ -31,13 +31,6 @@ null null null null -null -null -null -null -null -null -null token symbolic names: null @@ -54,31 +47,24 @@ LE GT GE LIKE -NOT_LIKE ILIKE -NOT_ILIKE BETWEEN -NOT_BETWEEN EXISTS -NOT_EXISTS REGEXP -NOT_REGEXP CONTAINS -NOT_CONTAINS IN -NOT_IN NOT AND OR HAS HASANY HASALL -HASNONE BOOL NUMBER QUOTED_TEXT KEY WS +FREETEXT rule names: query @@ -101,4 +87,4 @@ key atn: -[4, 1, 38, 213, 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, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 39, 8, 0, 10, 0, 12, 0, 42, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 5, 2, 51, 8, 2, 10, 2, 12, 2, 54, 9, 2, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 60, 8, 3, 10, 3, 12, 3, 63, 9, 3, 1, 4, 3, 4, 66, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 77, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 151, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 163, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 175, 8, 8, 1, 9, 1, 9, 1, 9, 5, 9, 180, 8, 9, 10, 9, 12, 9, 183, 9, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 5, 12, 195, 8, 12, 10, 12, 12, 12, 198, 9, 12, 1, 13, 1, 13, 1, 13, 3, 13, 203, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 0, 0, 17, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 0, 6, 1, 0, 28, 29, 1, 0, 7, 8, 2, 0, 13, 13, 15, 15, 2, 0, 14, 14, 16, 16, 1, 0, 30, 33, 1, 0, 34, 37, 227, 0, 34, 1, 0, 0, 0, 2, 45, 1, 0, 0, 0, 4, 47, 1, 0, 0, 0, 6, 55, 1, 0, 0, 0, 8, 65, 1, 0, 0, 0, 10, 76, 1, 0, 0, 0, 12, 150, 1, 0, 0, 0, 14, 162, 1, 0, 0, 0, 16, 174, 1, 0, 0, 0, 18, 176, 1, 0, 0, 0, 20, 184, 1, 0, 0, 0, 22, 186, 1, 0, 0, 0, 24, 191, 1, 0, 0, 0, 26, 202, 1, 0, 0, 0, 28, 204, 1, 0, 0, 0, 30, 208, 1, 0, 0, 0, 32, 210, 1, 0, 0, 0, 34, 40, 3, 2, 1, 0, 35, 36, 7, 0, 0, 0, 36, 39, 3, 2, 1, 0, 37, 39, 3, 2, 1, 0, 38, 35, 1, 0, 0, 0, 38, 37, 1, 0, 0, 0, 39, 42, 1, 0, 0, 0, 40, 38, 1, 0, 0, 0, 40, 41, 1, 0, 0, 0, 41, 43, 1, 0, 0, 0, 42, 40, 1, 0, 0, 0, 43, 44, 5, 0, 0, 1, 44, 1, 1, 0, 0, 0, 45, 46, 3, 4, 2, 0, 46, 3, 1, 0, 0, 0, 47, 52, 3, 6, 3, 0, 48, 49, 5, 29, 0, 0, 49, 51, 3, 6, 3, 0, 50, 48, 1, 0, 0, 0, 51, 54, 1, 0, 0, 0, 52, 50, 1, 0, 0, 0, 52, 53, 1, 0, 0, 0, 53, 5, 1, 0, 0, 0, 54, 52, 1, 0, 0, 0, 55, 61, 3, 8, 4, 0, 56, 57, 5, 28, 0, 0, 57, 60, 3, 8, 4, 0, 58, 60, 3, 8, 4, 0, 59, 56, 1, 0, 0, 0, 59, 58, 1, 0, 0, 0, 60, 63, 1, 0, 0, 0, 61, 59, 1, 0, 0, 0, 61, 62, 1, 0, 0, 0, 62, 7, 1, 0, 0, 0, 63, 61, 1, 0, 0, 0, 64, 66, 5, 27, 0, 0, 65, 64, 1, 0, 0, 0, 65, 66, 1, 0, 0, 0, 66, 67, 1, 0, 0, 0, 67, 68, 3, 10, 5, 0, 68, 9, 1, 0, 0, 0, 69, 70, 5, 1, 0, 0, 70, 71, 3, 4, 2, 0, 71, 72, 5, 2, 0, 0, 72, 77, 1, 0, 0, 0, 73, 77, 3, 12, 6, 0, 74, 77, 3, 22, 11, 0, 75, 77, 3, 20, 10, 0, 76, 69, 1, 0, 0, 0, 76, 73, 1, 0, 0, 0, 76, 74, 1, 0, 0, 0, 76, 75, 1, 0, 0, 0, 77, 11, 1, 0, 0, 0, 78, 79, 3, 32, 16, 0, 79, 80, 5, 6, 0, 0, 80, 81, 3, 30, 15, 0, 81, 151, 1, 0, 0, 0, 82, 83, 3, 32, 16, 0, 83, 84, 7, 1, 0, 0, 84, 85, 3, 30, 15, 0, 85, 151, 1, 0, 0, 0, 86, 87, 3, 32, 16, 0, 87, 88, 5, 9, 0, 0, 88, 89, 3, 30, 15, 0, 89, 151, 1, 0, 0, 0, 90, 91, 3, 32, 16, 0, 91, 92, 5, 10, 0, 0, 92, 93, 3, 30, 15, 0, 93, 151, 1, 0, 0, 0, 94, 95, 3, 32, 16, 0, 95, 96, 5, 11, 0, 0, 96, 97, 3, 30, 15, 0, 97, 151, 1, 0, 0, 0, 98, 99, 3, 32, 16, 0, 99, 100, 5, 12, 0, 0, 100, 101, 3, 30, 15, 0, 101, 151, 1, 0, 0, 0, 102, 103, 3, 32, 16, 0, 103, 104, 7, 2, 0, 0, 104, 105, 3, 30, 15, 0, 105, 151, 1, 0, 0, 0, 106, 107, 3, 32, 16, 0, 107, 108, 7, 3, 0, 0, 108, 109, 3, 30, 15, 0, 109, 151, 1, 0, 0, 0, 110, 111, 3, 32, 16, 0, 111, 112, 5, 17, 0, 0, 112, 113, 3, 30, 15, 0, 113, 114, 5, 28, 0, 0, 114, 115, 3, 30, 15, 0, 115, 151, 1, 0, 0, 0, 116, 117, 3, 32, 16, 0, 117, 118, 5, 18, 0, 0, 118, 119, 3, 30, 15, 0, 119, 120, 5, 28, 0, 0, 120, 121, 3, 30, 15, 0, 121, 151, 1, 0, 0, 0, 122, 123, 3, 32, 16, 0, 123, 124, 3, 14, 7, 0, 124, 151, 1, 0, 0, 0, 125, 126, 3, 32, 16, 0, 126, 127, 3, 16, 8, 0, 127, 151, 1, 0, 0, 0, 128, 129, 3, 32, 16, 0, 129, 130, 5, 19, 0, 0, 130, 151, 1, 0, 0, 0, 131, 132, 3, 32, 16, 0, 132, 133, 5, 20, 0, 0, 133, 151, 1, 0, 0, 0, 134, 135, 3, 32, 16, 0, 135, 136, 5, 21, 0, 0, 136, 137, 3, 30, 15, 0, 137, 151, 1, 0, 0, 0, 138, 139, 3, 32, 16, 0, 139, 140, 5, 22, 0, 0, 140, 141, 3, 30, 15, 0, 141, 151, 1, 0, 0, 0, 142, 143, 3, 32, 16, 0, 143, 144, 5, 23, 0, 0, 144, 145, 3, 30, 15, 0, 145, 151, 1, 0, 0, 0, 146, 147, 3, 32, 16, 0, 147, 148, 5, 24, 0, 0, 148, 149, 3, 30, 15, 0, 149, 151, 1, 0, 0, 0, 150, 78, 1, 0, 0, 0, 150, 82, 1, 0, 0, 0, 150, 86, 1, 0, 0, 0, 150, 90, 1, 0, 0, 0, 150, 94, 1, 0, 0, 0, 150, 98, 1, 0, 0, 0, 150, 102, 1, 0, 0, 0, 150, 106, 1, 0, 0, 0, 150, 110, 1, 0, 0, 0, 150, 116, 1, 0, 0, 0, 150, 122, 1, 0, 0, 0, 150, 125, 1, 0, 0, 0, 150, 128, 1, 0, 0, 0, 150, 131, 1, 0, 0, 0, 150, 134, 1, 0, 0, 0, 150, 138, 1, 0, 0, 0, 150, 142, 1, 0, 0, 0, 150, 146, 1, 0, 0, 0, 151, 13, 1, 0, 0, 0, 152, 153, 5, 25, 0, 0, 153, 154, 5, 1, 0, 0, 154, 155, 3, 18, 9, 0, 155, 156, 5, 2, 0, 0, 156, 163, 1, 0, 0, 0, 157, 158, 5, 25, 0, 0, 158, 159, 5, 3, 0, 0, 159, 160, 3, 18, 9, 0, 160, 161, 5, 4, 0, 0, 161, 163, 1, 0, 0, 0, 162, 152, 1, 0, 0, 0, 162, 157, 1, 0, 0, 0, 163, 15, 1, 0, 0, 0, 164, 165, 5, 26, 0, 0, 165, 166, 5, 1, 0, 0, 166, 167, 3, 18, 9, 0, 167, 168, 5, 2, 0, 0, 168, 175, 1, 0, 0, 0, 169, 170, 5, 26, 0, 0, 170, 171, 5, 3, 0, 0, 171, 172, 3, 18, 9, 0, 172, 173, 5, 4, 0, 0, 173, 175, 1, 0, 0, 0, 174, 164, 1, 0, 0, 0, 174, 169, 1, 0, 0, 0, 175, 17, 1, 0, 0, 0, 176, 181, 3, 30, 15, 0, 177, 178, 5, 5, 0, 0, 178, 180, 3, 30, 15, 0, 179, 177, 1, 0, 0, 0, 180, 183, 1, 0, 0, 0, 181, 179, 1, 0, 0, 0, 181, 182, 1, 0, 0, 0, 182, 19, 1, 0, 0, 0, 183, 181, 1, 0, 0, 0, 184, 185, 5, 36, 0, 0, 185, 21, 1, 0, 0, 0, 186, 187, 7, 4, 0, 0, 187, 188, 5, 1, 0, 0, 188, 189, 3, 24, 12, 0, 189, 190, 5, 2, 0, 0, 190, 23, 1, 0, 0, 0, 191, 196, 3, 26, 13, 0, 192, 193, 5, 5, 0, 0, 193, 195, 3, 26, 13, 0, 194, 192, 1, 0, 0, 0, 195, 198, 1, 0, 0, 0, 196, 194, 1, 0, 0, 0, 196, 197, 1, 0, 0, 0, 197, 25, 1, 0, 0, 0, 198, 196, 1, 0, 0, 0, 199, 203, 3, 32, 16, 0, 200, 203, 3, 30, 15, 0, 201, 203, 3, 28, 14, 0, 202, 199, 1, 0, 0, 0, 202, 200, 1, 0, 0, 0, 202, 201, 1, 0, 0, 0, 203, 27, 1, 0, 0, 0, 204, 205, 5, 3, 0, 0, 205, 206, 3, 18, 9, 0, 206, 207, 5, 4, 0, 0, 207, 29, 1, 0, 0, 0, 208, 209, 7, 5, 0, 0, 209, 31, 1, 0, 0, 0, 210, 211, 5, 37, 0, 0, 211, 33, 1, 0, 0, 0, 13, 38, 40, 52, 59, 61, 65, 76, 150, 162, 174, 181, 196, 202] \ No newline at end of file +[4, 1, 31, 219, 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, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 5, 2, 43, 8, 2, 10, 2, 12, 2, 46, 9, 2, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 52, 8, 3, 10, 3, 12, 3, 55, 9, 3, 1, 4, 3, 4, 58, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 71, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 150, 8, 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, 3, 7, 164, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 181, 8, 8, 1, 9, 1, 9, 1, 9, 5, 9, 186, 8, 9, 10, 9, 12, 9, 189, 9, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 5, 12, 201, 8, 12, 10, 12, 12, 12, 204, 9, 12, 1, 13, 1, 13, 1, 13, 3, 13, 209, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 0, 0, 17, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 0, 5, 1, 0, 7, 8, 1, 0, 13, 14, 2, 0, 28, 28, 31, 31, 1, 0, 23, 25, 1, 0, 26, 29, 235, 0, 34, 1, 0, 0, 0, 2, 37, 1, 0, 0, 0, 4, 39, 1, 0, 0, 0, 6, 47, 1, 0, 0, 0, 8, 57, 1, 0, 0, 0, 10, 70, 1, 0, 0, 0, 12, 149, 1, 0, 0, 0, 14, 163, 1, 0, 0, 0, 16, 180, 1, 0, 0, 0, 18, 182, 1, 0, 0, 0, 20, 190, 1, 0, 0, 0, 22, 192, 1, 0, 0, 0, 24, 197, 1, 0, 0, 0, 26, 208, 1, 0, 0, 0, 28, 210, 1, 0, 0, 0, 30, 214, 1, 0, 0, 0, 32, 216, 1, 0, 0, 0, 34, 35, 3, 2, 1, 0, 35, 36, 5, 0, 0, 1, 36, 1, 1, 0, 0, 0, 37, 38, 3, 4, 2, 0, 38, 3, 1, 0, 0, 0, 39, 44, 3, 6, 3, 0, 40, 41, 5, 22, 0, 0, 41, 43, 3, 6, 3, 0, 42, 40, 1, 0, 0, 0, 43, 46, 1, 0, 0, 0, 44, 42, 1, 0, 0, 0, 44, 45, 1, 0, 0, 0, 45, 5, 1, 0, 0, 0, 46, 44, 1, 0, 0, 0, 47, 53, 3, 8, 4, 0, 48, 49, 5, 21, 0, 0, 49, 52, 3, 8, 4, 0, 50, 52, 3, 8, 4, 0, 51, 48, 1, 0, 0, 0, 51, 50, 1, 0, 0, 0, 52, 55, 1, 0, 0, 0, 53, 51, 1, 0, 0, 0, 53, 54, 1, 0, 0, 0, 54, 7, 1, 0, 0, 0, 55, 53, 1, 0, 0, 0, 56, 58, 5, 20, 0, 0, 57, 56, 1, 0, 0, 0, 57, 58, 1, 0, 0, 0, 58, 59, 1, 0, 0, 0, 59, 60, 3, 10, 5, 0, 60, 9, 1, 0, 0, 0, 61, 62, 5, 1, 0, 0, 62, 63, 3, 4, 2, 0, 63, 64, 5, 2, 0, 0, 64, 71, 1, 0, 0, 0, 65, 71, 3, 12, 6, 0, 66, 71, 3, 22, 11, 0, 67, 71, 3, 20, 10, 0, 68, 71, 3, 32, 16, 0, 69, 71, 3, 30, 15, 0, 70, 61, 1, 0, 0, 0, 70, 65, 1, 0, 0, 0, 70, 66, 1, 0, 0, 0, 70, 67, 1, 0, 0, 0, 70, 68, 1, 0, 0, 0, 70, 69, 1, 0, 0, 0, 71, 11, 1, 0, 0, 0, 72, 73, 3, 32, 16, 0, 73, 74, 5, 6, 0, 0, 74, 75, 3, 30, 15, 0, 75, 150, 1, 0, 0, 0, 76, 77, 3, 32, 16, 0, 77, 78, 7, 0, 0, 0, 78, 79, 3, 30, 15, 0, 79, 150, 1, 0, 0, 0, 80, 81, 3, 32, 16, 0, 81, 82, 5, 9, 0, 0, 82, 83, 3, 30, 15, 0, 83, 150, 1, 0, 0, 0, 84, 85, 3, 32, 16, 0, 85, 86, 5, 10, 0, 0, 86, 87, 3, 30, 15, 0, 87, 150, 1, 0, 0, 0, 88, 89, 3, 32, 16, 0, 89, 90, 5, 11, 0, 0, 90, 91, 3, 30, 15, 0, 91, 150, 1, 0, 0, 0, 92, 93, 3, 32, 16, 0, 93, 94, 5, 12, 0, 0, 94, 95, 3, 30, 15, 0, 95, 150, 1, 0, 0, 0, 96, 97, 3, 32, 16, 0, 97, 98, 7, 1, 0, 0, 98, 99, 3, 30, 15, 0, 99, 150, 1, 0, 0, 0, 100, 101, 3, 32, 16, 0, 101, 102, 5, 20, 0, 0, 102, 103, 7, 1, 0, 0, 103, 104, 3, 30, 15, 0, 104, 150, 1, 0, 0, 0, 105, 106, 3, 32, 16, 0, 106, 107, 5, 15, 0, 0, 107, 108, 3, 30, 15, 0, 108, 109, 5, 21, 0, 0, 109, 110, 3, 30, 15, 0, 110, 150, 1, 0, 0, 0, 111, 112, 3, 32, 16, 0, 112, 113, 5, 20, 0, 0, 113, 114, 5, 15, 0, 0, 114, 115, 3, 30, 15, 0, 115, 116, 5, 21, 0, 0, 116, 117, 3, 30, 15, 0, 117, 150, 1, 0, 0, 0, 118, 119, 3, 32, 16, 0, 119, 120, 3, 14, 7, 0, 120, 150, 1, 0, 0, 0, 121, 122, 3, 32, 16, 0, 122, 123, 3, 16, 8, 0, 123, 150, 1, 0, 0, 0, 124, 125, 3, 32, 16, 0, 125, 126, 5, 16, 0, 0, 126, 150, 1, 0, 0, 0, 127, 128, 3, 32, 16, 0, 128, 129, 5, 20, 0, 0, 129, 130, 5, 16, 0, 0, 130, 150, 1, 0, 0, 0, 131, 132, 3, 32, 16, 0, 132, 133, 5, 17, 0, 0, 133, 134, 3, 30, 15, 0, 134, 150, 1, 0, 0, 0, 135, 136, 3, 32, 16, 0, 136, 137, 5, 20, 0, 0, 137, 138, 5, 17, 0, 0, 138, 139, 3, 30, 15, 0, 139, 150, 1, 0, 0, 0, 140, 141, 3, 32, 16, 0, 141, 142, 5, 18, 0, 0, 142, 143, 3, 30, 15, 0, 143, 150, 1, 0, 0, 0, 144, 145, 3, 32, 16, 0, 145, 146, 5, 20, 0, 0, 146, 147, 5, 18, 0, 0, 147, 148, 3, 30, 15, 0, 148, 150, 1, 0, 0, 0, 149, 72, 1, 0, 0, 0, 149, 76, 1, 0, 0, 0, 149, 80, 1, 0, 0, 0, 149, 84, 1, 0, 0, 0, 149, 88, 1, 0, 0, 0, 149, 92, 1, 0, 0, 0, 149, 96, 1, 0, 0, 0, 149, 100, 1, 0, 0, 0, 149, 105, 1, 0, 0, 0, 149, 111, 1, 0, 0, 0, 149, 118, 1, 0, 0, 0, 149, 121, 1, 0, 0, 0, 149, 124, 1, 0, 0, 0, 149, 127, 1, 0, 0, 0, 149, 131, 1, 0, 0, 0, 149, 135, 1, 0, 0, 0, 149, 140, 1, 0, 0, 0, 149, 144, 1, 0, 0, 0, 150, 13, 1, 0, 0, 0, 151, 152, 5, 19, 0, 0, 152, 153, 5, 1, 0, 0, 153, 154, 3, 18, 9, 0, 154, 155, 5, 2, 0, 0, 155, 164, 1, 0, 0, 0, 156, 157, 5, 19, 0, 0, 157, 158, 5, 3, 0, 0, 158, 159, 3, 18, 9, 0, 159, 160, 5, 4, 0, 0, 160, 164, 1, 0, 0, 0, 161, 162, 5, 19, 0, 0, 162, 164, 3, 30, 15, 0, 163, 151, 1, 0, 0, 0, 163, 156, 1, 0, 0, 0, 163, 161, 1, 0, 0, 0, 164, 15, 1, 0, 0, 0, 165, 166, 5, 20, 0, 0, 166, 167, 5, 19, 0, 0, 167, 168, 5, 1, 0, 0, 168, 169, 3, 18, 9, 0, 169, 170, 5, 2, 0, 0, 170, 181, 1, 0, 0, 0, 171, 172, 5, 20, 0, 0, 172, 173, 5, 19, 0, 0, 173, 174, 5, 3, 0, 0, 174, 175, 3, 18, 9, 0, 175, 176, 5, 4, 0, 0, 176, 181, 1, 0, 0, 0, 177, 178, 5, 20, 0, 0, 178, 179, 5, 19, 0, 0, 179, 181, 3, 30, 15, 0, 180, 165, 1, 0, 0, 0, 180, 171, 1, 0, 0, 0, 180, 177, 1, 0, 0, 0, 181, 17, 1, 0, 0, 0, 182, 187, 3, 30, 15, 0, 183, 184, 5, 5, 0, 0, 184, 186, 3, 30, 15, 0, 185, 183, 1, 0, 0, 0, 186, 189, 1, 0, 0, 0, 187, 185, 1, 0, 0, 0, 187, 188, 1, 0, 0, 0, 188, 19, 1, 0, 0, 0, 189, 187, 1, 0, 0, 0, 190, 191, 7, 2, 0, 0, 191, 21, 1, 0, 0, 0, 192, 193, 7, 3, 0, 0, 193, 194, 5, 1, 0, 0, 194, 195, 3, 24, 12, 0, 195, 196, 5, 2, 0, 0, 196, 23, 1, 0, 0, 0, 197, 202, 3, 26, 13, 0, 198, 199, 5, 5, 0, 0, 199, 201, 3, 26, 13, 0, 200, 198, 1, 0, 0, 0, 201, 204, 1, 0, 0, 0, 202, 200, 1, 0, 0, 0, 202, 203, 1, 0, 0, 0, 203, 25, 1, 0, 0, 0, 204, 202, 1, 0, 0, 0, 205, 209, 3, 32, 16, 0, 206, 209, 3, 30, 15, 0, 207, 209, 3, 28, 14, 0, 208, 205, 1, 0, 0, 0, 208, 206, 1, 0, 0, 0, 208, 207, 1, 0, 0, 0, 209, 27, 1, 0, 0, 0, 210, 211, 5, 3, 0, 0, 211, 212, 3, 18, 9, 0, 212, 213, 5, 4, 0, 0, 213, 29, 1, 0, 0, 0, 214, 215, 7, 4, 0, 0, 215, 31, 1, 0, 0, 0, 216, 217, 5, 29, 0, 0, 217, 33, 1, 0, 0, 0, 11, 44, 51, 53, 57, 70, 149, 163, 180, 187, 202, 208] \ No newline at end of file diff --git a/frontend/src/parser/FilterQuery.tokens b/frontend/src/parser/FilterQuery.tokens index 58b4f992a113..4df881075f0a 100644 --- a/frontend/src/parser/FilterQuery.tokens +++ b/frontend/src/parser/FilterQuery.tokens @@ -11,31 +11,24 @@ LE=10 GT=11 GE=12 LIKE=13 -NOT_LIKE=14 -ILIKE=15 -NOT_ILIKE=16 -BETWEEN=17 -NOT_BETWEEN=18 -EXISTS=19 -NOT_EXISTS=20 -REGEXP=21 -NOT_REGEXP=22 -CONTAINS=23 -NOT_CONTAINS=24 -IN=25 -NOT_IN=26 -NOT=27 -AND=28 -OR=29 -HAS=30 -HASANY=31 -HASALL=32 -HASNONE=33 -BOOL=34 -NUMBER=35 -QUOTED_TEXT=36 -KEY=37 -WS=38 +ILIKE=14 +BETWEEN=15 +EXISTS=16 +REGEXP=17 +CONTAINS=18 +IN=19 +NOT=20 +AND=21 +OR=22 +HAS=23 +HASANY=24 +HASALL=25 +BOOL=26 +NUMBER=27 +QUOTED_TEXT=28 +KEY=29 +WS=30 +FREETEXT=31 '('=1 ')'=2 '['=3 diff --git a/frontend/src/parser/FilterQueryLexer.interp b/frontend/src/parser/FilterQueryLexer.interp index 487550a8103b..08b40144d2c8 100644 --- a/frontend/src/parser/FilterQueryLexer.interp +++ b/frontend/src/parser/FilterQueryLexer.interp @@ -31,13 +31,6 @@ null null null null -null -null -null -null -null -null -null token symbolic names: null @@ -54,31 +47,24 @@ LE GT GE LIKE -NOT_LIKE ILIKE -NOT_ILIKE BETWEEN -NOT_BETWEEN EXISTS -NOT_EXISTS REGEXP -NOT_REGEXP CONTAINS -NOT_CONTAINS IN -NOT_IN NOT AND OR HAS HASANY HASALL -HASNONE BOOL NUMBER QUOTED_TEXT KEY WS +FREETEXT rule names: LPAREN @@ -94,32 +80,29 @@ LE GT GE LIKE -NOT_LIKE ILIKE -NOT_ILIKE BETWEEN -NOT_BETWEEN EXISTS -NOT_EXISTS REGEXP -NOT_REGEXP CONTAINS -NOT_CONTAINS IN -NOT_IN NOT AND OR HAS HASANY HASALL -HASNONE BOOL +SIGN NUMBER QUOTED_TEXT +SEGMENT +EMPTY_BRACKS +OLD_JSON_BRACKS KEY WS DIGIT +FREETEXT channel names: DEFAULT_TOKEN_CHANNEL @@ -129,4 +112,4 @@ mode names: DEFAULT_MODE atn: -[4, 0, 38, 331, 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, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 3, 5, 93, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 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, 16, 1, 17, 1, 17, 1, 17, 1, 17, 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, 18, 1, 18, 3, 18, 167, 8, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 179, 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 207, 8, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 221, 8, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 279, 8, 33, 1, 34, 4, 34, 282, 8, 34, 11, 34, 12, 34, 283, 1, 34, 1, 34, 4, 34, 288, 8, 34, 11, 34, 12, 34, 289, 3, 34, 292, 8, 34, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 298, 8, 35, 10, 35, 12, 35, 301, 9, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 308, 8, 35, 10, 35, 12, 35, 311, 9, 35, 1, 35, 3, 35, 314, 8, 35, 1, 36, 1, 36, 5, 36, 318, 8, 36, 10, 36, 12, 36, 321, 9, 36, 1, 37, 4, 37, 324, 8, 37, 11, 37, 12, 37, 325, 1, 37, 1, 37, 1, 38, 1, 38, 0, 0, 39, 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, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 0, 1, 0, 27, 2, 0, 76, 76, 108, 108, 2, 0, 73, 73, 105, 105, 2, 0, 75, 75, 107, 107, 2, 0, 69, 69, 101, 101, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 84, 84, 116, 116, 2, 0, 66, 66, 98, 98, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 83, 83, 115, 115, 2, 0, 82, 82, 114, 114, 2, 0, 71, 71, 103, 103, 2, 0, 80, 80, 112, 112, 2, 0, 67, 67, 99, 99, 2, 0, 65, 65, 97, 97, 2, 0, 68, 68, 100, 100, 2, 0, 72, 72, 104, 104, 2, 0, 89, 89, 121, 121, 2, 0, 85, 85, 117, 117, 2, 0, 70, 70, 102, 102, 2, 0, 34, 34, 92, 92, 2, 0, 39, 39, 92, 92, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 6, 0, 46, 46, 48, 57, 65, 91, 93, 93, 95, 95, 97, 122, 3, 0, 9, 10, 13, 13, 32, 32, 1, 0, 48, 57, 345, 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, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 1, 79, 1, 0, 0, 0, 3, 81, 1, 0, 0, 0, 5, 83, 1, 0, 0, 0, 7, 85, 1, 0, 0, 0, 9, 87, 1, 0, 0, 0, 11, 92, 1, 0, 0, 0, 13, 94, 1, 0, 0, 0, 15, 97, 1, 0, 0, 0, 17, 100, 1, 0, 0, 0, 19, 102, 1, 0, 0, 0, 21, 105, 1, 0, 0, 0, 23, 107, 1, 0, 0, 0, 25, 110, 1, 0, 0, 0, 27, 115, 1, 0, 0, 0, 29, 124, 1, 0, 0, 0, 31, 130, 1, 0, 0, 0, 33, 140, 1, 0, 0, 0, 35, 148, 1, 0, 0, 0, 37, 160, 1, 0, 0, 0, 39, 168, 1, 0, 0, 0, 41, 180, 1, 0, 0, 0, 43, 187, 1, 0, 0, 0, 45, 198, 1, 0, 0, 0, 47, 208, 1, 0, 0, 0, 49, 222, 1, 0, 0, 0, 51, 225, 1, 0, 0, 0, 53, 232, 1, 0, 0, 0, 55, 236, 1, 0, 0, 0, 57, 240, 1, 0, 0, 0, 59, 243, 1, 0, 0, 0, 61, 247, 1, 0, 0, 0, 63, 254, 1, 0, 0, 0, 65, 261, 1, 0, 0, 0, 67, 278, 1, 0, 0, 0, 69, 281, 1, 0, 0, 0, 71, 313, 1, 0, 0, 0, 73, 315, 1, 0, 0, 0, 75, 323, 1, 0, 0, 0, 77, 329, 1, 0, 0, 0, 79, 80, 5, 40, 0, 0, 80, 2, 1, 0, 0, 0, 81, 82, 5, 41, 0, 0, 82, 4, 1, 0, 0, 0, 83, 84, 5, 91, 0, 0, 84, 6, 1, 0, 0, 0, 85, 86, 5, 93, 0, 0, 86, 8, 1, 0, 0, 0, 87, 88, 5, 44, 0, 0, 88, 10, 1, 0, 0, 0, 89, 93, 5, 61, 0, 0, 90, 91, 5, 61, 0, 0, 91, 93, 5, 61, 0, 0, 92, 89, 1, 0, 0, 0, 92, 90, 1, 0, 0, 0, 93, 12, 1, 0, 0, 0, 94, 95, 5, 33, 0, 0, 95, 96, 5, 61, 0, 0, 96, 14, 1, 0, 0, 0, 97, 98, 5, 60, 0, 0, 98, 99, 5, 62, 0, 0, 99, 16, 1, 0, 0, 0, 100, 101, 5, 60, 0, 0, 101, 18, 1, 0, 0, 0, 102, 103, 5, 60, 0, 0, 103, 104, 5, 61, 0, 0, 104, 20, 1, 0, 0, 0, 105, 106, 5, 62, 0, 0, 106, 22, 1, 0, 0, 0, 107, 108, 5, 62, 0, 0, 108, 109, 5, 61, 0, 0, 109, 24, 1, 0, 0, 0, 110, 111, 7, 0, 0, 0, 111, 112, 7, 1, 0, 0, 112, 113, 7, 2, 0, 0, 113, 114, 7, 3, 0, 0, 114, 26, 1, 0, 0, 0, 115, 116, 7, 4, 0, 0, 116, 117, 7, 5, 0, 0, 117, 118, 7, 6, 0, 0, 118, 119, 5, 95, 0, 0, 119, 120, 7, 0, 0, 0, 120, 121, 7, 1, 0, 0, 121, 122, 7, 2, 0, 0, 122, 123, 7, 3, 0, 0, 123, 28, 1, 0, 0, 0, 124, 125, 7, 1, 0, 0, 125, 126, 7, 0, 0, 0, 126, 127, 7, 1, 0, 0, 127, 128, 7, 2, 0, 0, 128, 129, 7, 3, 0, 0, 129, 30, 1, 0, 0, 0, 130, 131, 7, 4, 0, 0, 131, 132, 7, 5, 0, 0, 132, 133, 7, 6, 0, 0, 133, 134, 5, 95, 0, 0, 134, 135, 7, 1, 0, 0, 135, 136, 7, 0, 0, 0, 136, 137, 7, 1, 0, 0, 137, 138, 7, 2, 0, 0, 138, 139, 7, 3, 0, 0, 139, 32, 1, 0, 0, 0, 140, 141, 7, 7, 0, 0, 141, 142, 7, 3, 0, 0, 142, 143, 7, 6, 0, 0, 143, 144, 7, 8, 0, 0, 144, 145, 7, 3, 0, 0, 145, 146, 7, 3, 0, 0, 146, 147, 7, 4, 0, 0, 147, 34, 1, 0, 0, 0, 148, 149, 7, 4, 0, 0, 149, 150, 7, 5, 0, 0, 150, 151, 7, 6, 0, 0, 151, 152, 5, 95, 0, 0, 152, 153, 7, 7, 0, 0, 153, 154, 7, 3, 0, 0, 154, 155, 7, 6, 0, 0, 155, 156, 7, 8, 0, 0, 156, 157, 7, 3, 0, 0, 157, 158, 7, 3, 0, 0, 158, 159, 7, 4, 0, 0, 159, 36, 1, 0, 0, 0, 160, 161, 7, 3, 0, 0, 161, 162, 7, 9, 0, 0, 162, 163, 7, 1, 0, 0, 163, 164, 7, 10, 0, 0, 164, 166, 7, 6, 0, 0, 165, 167, 7, 10, 0, 0, 166, 165, 1, 0, 0, 0, 166, 167, 1, 0, 0, 0, 167, 38, 1, 0, 0, 0, 168, 169, 7, 4, 0, 0, 169, 170, 7, 5, 0, 0, 170, 171, 7, 6, 0, 0, 171, 172, 5, 45, 0, 0, 172, 173, 7, 3, 0, 0, 173, 174, 7, 9, 0, 0, 174, 175, 7, 1, 0, 0, 175, 176, 7, 10, 0, 0, 176, 178, 7, 6, 0, 0, 177, 179, 7, 10, 0, 0, 178, 177, 1, 0, 0, 0, 178, 179, 1, 0, 0, 0, 179, 40, 1, 0, 0, 0, 180, 181, 7, 11, 0, 0, 181, 182, 7, 3, 0, 0, 182, 183, 7, 12, 0, 0, 183, 184, 7, 3, 0, 0, 184, 185, 7, 9, 0, 0, 185, 186, 7, 13, 0, 0, 186, 42, 1, 0, 0, 0, 187, 188, 7, 4, 0, 0, 188, 189, 7, 5, 0, 0, 189, 190, 7, 6, 0, 0, 190, 191, 5, 95, 0, 0, 191, 192, 7, 11, 0, 0, 192, 193, 7, 3, 0, 0, 193, 194, 7, 12, 0, 0, 194, 195, 7, 3, 0, 0, 195, 196, 7, 9, 0, 0, 196, 197, 7, 13, 0, 0, 197, 44, 1, 0, 0, 0, 198, 199, 7, 14, 0, 0, 199, 200, 7, 5, 0, 0, 200, 201, 7, 4, 0, 0, 201, 202, 7, 6, 0, 0, 202, 203, 7, 15, 0, 0, 203, 204, 7, 1, 0, 0, 204, 206, 7, 4, 0, 0, 205, 207, 7, 10, 0, 0, 206, 205, 1, 0, 0, 0, 206, 207, 1, 0, 0, 0, 207, 46, 1, 0, 0, 0, 208, 209, 7, 4, 0, 0, 209, 210, 7, 5, 0, 0, 210, 211, 7, 6, 0, 0, 211, 212, 5, 95, 0, 0, 212, 213, 7, 14, 0, 0, 213, 214, 7, 5, 0, 0, 214, 215, 7, 4, 0, 0, 215, 216, 7, 6, 0, 0, 216, 217, 7, 15, 0, 0, 217, 218, 7, 1, 0, 0, 218, 220, 7, 4, 0, 0, 219, 221, 7, 10, 0, 0, 220, 219, 1, 0, 0, 0, 220, 221, 1, 0, 0, 0, 221, 48, 1, 0, 0, 0, 222, 223, 7, 1, 0, 0, 223, 224, 7, 4, 0, 0, 224, 50, 1, 0, 0, 0, 225, 226, 7, 4, 0, 0, 226, 227, 7, 5, 0, 0, 227, 228, 7, 6, 0, 0, 228, 229, 5, 95, 0, 0, 229, 230, 7, 1, 0, 0, 230, 231, 7, 4, 0, 0, 231, 52, 1, 0, 0, 0, 232, 233, 7, 4, 0, 0, 233, 234, 7, 5, 0, 0, 234, 235, 7, 6, 0, 0, 235, 54, 1, 0, 0, 0, 236, 237, 7, 15, 0, 0, 237, 238, 7, 4, 0, 0, 238, 239, 7, 16, 0, 0, 239, 56, 1, 0, 0, 0, 240, 241, 7, 5, 0, 0, 241, 242, 7, 11, 0, 0, 242, 58, 1, 0, 0, 0, 243, 244, 7, 17, 0, 0, 244, 245, 7, 15, 0, 0, 245, 246, 7, 10, 0, 0, 246, 60, 1, 0, 0, 0, 247, 248, 7, 17, 0, 0, 248, 249, 7, 15, 0, 0, 249, 250, 7, 10, 0, 0, 250, 251, 7, 15, 0, 0, 251, 252, 7, 4, 0, 0, 252, 253, 7, 18, 0, 0, 253, 62, 1, 0, 0, 0, 254, 255, 7, 17, 0, 0, 255, 256, 7, 15, 0, 0, 256, 257, 7, 10, 0, 0, 257, 258, 7, 15, 0, 0, 258, 259, 7, 0, 0, 0, 259, 260, 7, 0, 0, 0, 260, 64, 1, 0, 0, 0, 261, 262, 7, 17, 0, 0, 262, 263, 7, 15, 0, 0, 263, 264, 7, 10, 0, 0, 264, 265, 7, 4, 0, 0, 265, 266, 7, 5, 0, 0, 266, 267, 7, 4, 0, 0, 267, 268, 7, 3, 0, 0, 268, 66, 1, 0, 0, 0, 269, 270, 7, 6, 0, 0, 270, 271, 7, 11, 0, 0, 271, 272, 7, 19, 0, 0, 272, 279, 7, 3, 0, 0, 273, 274, 7, 20, 0, 0, 274, 275, 7, 15, 0, 0, 275, 276, 7, 0, 0, 0, 276, 277, 7, 10, 0, 0, 277, 279, 7, 3, 0, 0, 278, 269, 1, 0, 0, 0, 278, 273, 1, 0, 0, 0, 279, 68, 1, 0, 0, 0, 280, 282, 3, 77, 38, 0, 281, 280, 1, 0, 0, 0, 282, 283, 1, 0, 0, 0, 283, 281, 1, 0, 0, 0, 283, 284, 1, 0, 0, 0, 284, 291, 1, 0, 0, 0, 285, 287, 5, 46, 0, 0, 286, 288, 3, 77, 38, 0, 287, 286, 1, 0, 0, 0, 288, 289, 1, 0, 0, 0, 289, 287, 1, 0, 0, 0, 289, 290, 1, 0, 0, 0, 290, 292, 1, 0, 0, 0, 291, 285, 1, 0, 0, 0, 291, 292, 1, 0, 0, 0, 292, 70, 1, 0, 0, 0, 293, 299, 5, 34, 0, 0, 294, 298, 8, 21, 0, 0, 295, 296, 5, 92, 0, 0, 296, 298, 9, 0, 0, 0, 297, 294, 1, 0, 0, 0, 297, 295, 1, 0, 0, 0, 298, 301, 1, 0, 0, 0, 299, 297, 1, 0, 0, 0, 299, 300, 1, 0, 0, 0, 300, 302, 1, 0, 0, 0, 301, 299, 1, 0, 0, 0, 302, 314, 5, 34, 0, 0, 303, 309, 5, 39, 0, 0, 304, 308, 8, 22, 0, 0, 305, 306, 5, 92, 0, 0, 306, 308, 9, 0, 0, 0, 307, 304, 1, 0, 0, 0, 307, 305, 1, 0, 0, 0, 308, 311, 1, 0, 0, 0, 309, 307, 1, 0, 0, 0, 309, 310, 1, 0, 0, 0, 310, 312, 1, 0, 0, 0, 311, 309, 1, 0, 0, 0, 312, 314, 5, 39, 0, 0, 313, 293, 1, 0, 0, 0, 313, 303, 1, 0, 0, 0, 314, 72, 1, 0, 0, 0, 315, 319, 7, 23, 0, 0, 316, 318, 7, 24, 0, 0, 317, 316, 1, 0, 0, 0, 318, 321, 1, 0, 0, 0, 319, 317, 1, 0, 0, 0, 319, 320, 1, 0, 0, 0, 320, 74, 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 322, 324, 7, 25, 0, 0, 323, 322, 1, 0, 0, 0, 324, 325, 1, 0, 0, 0, 325, 323, 1, 0, 0, 0, 325, 326, 1, 0, 0, 0, 326, 327, 1, 0, 0, 0, 327, 328, 6, 37, 0, 0, 328, 76, 1, 0, 0, 0, 329, 330, 7, 26, 0, 0, 330, 78, 1, 0, 0, 0, 17, 0, 92, 166, 178, 206, 220, 278, 283, 289, 291, 297, 299, 307, 309, 313, 319, 325, 1, 6, 0, 0] \ No newline at end of file +[4, 0, 31, 303, 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, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 3, 5, 87, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 130, 8, 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, 3, 17, 147, 8, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 190, 8, 25, 1, 26, 1, 26, 1, 27, 3, 27, 195, 8, 27, 1, 27, 4, 27, 198, 8, 27, 11, 27, 12, 27, 199, 1, 27, 1, 27, 5, 27, 204, 8, 27, 10, 27, 12, 27, 207, 9, 27, 3, 27, 209, 8, 27, 1, 27, 1, 27, 3, 27, 213, 8, 27, 1, 27, 4, 27, 216, 8, 27, 11, 27, 12, 27, 217, 3, 27, 220, 8, 27, 1, 27, 3, 27, 223, 8, 27, 1, 27, 1, 27, 4, 27, 227, 8, 27, 11, 27, 12, 27, 228, 1, 27, 1, 27, 3, 27, 233, 8, 27, 1, 27, 4, 27, 236, 8, 27, 11, 27, 12, 27, 237, 3, 27, 240, 8, 27, 3, 27, 242, 8, 27, 1, 28, 1, 28, 1, 28, 1, 28, 5, 28, 248, 8, 28, 10, 28, 12, 28, 251, 9, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 5, 28, 258, 8, 28, 10, 28, 12, 28, 261, 9, 28, 1, 28, 3, 28, 264, 8, 28, 1, 29, 1, 29, 5, 29, 268, 8, 29, 10, 29, 12, 29, 271, 9, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 285, 8, 32, 10, 32, 12, 32, 288, 9, 32, 1, 33, 4, 33, 291, 8, 33, 11, 33, 12, 33, 292, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 4, 35, 300, 8, 35, 11, 35, 12, 35, 301, 0, 0, 36, 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, 49, 25, 51, 26, 53, 0, 55, 27, 57, 28, 59, 0, 61, 0, 63, 0, 65, 29, 67, 30, 69, 0, 71, 31, 1, 0, 29, 2, 0, 76, 76, 108, 108, 2, 0, 73, 73, 105, 105, 2, 0, 75, 75, 107, 107, 2, 0, 69, 69, 101, 101, 2, 0, 66, 66, 98, 98, 2, 0, 84, 84, 116, 116, 2, 0, 87, 87, 119, 119, 2, 0, 78, 78, 110, 110, 2, 0, 88, 88, 120, 120, 2, 0, 83, 83, 115, 115, 2, 0, 82, 82, 114, 114, 2, 0, 71, 71, 103, 103, 2, 0, 80, 80, 112, 112, 2, 0, 67, 67, 99, 99, 2, 0, 79, 79, 111, 111, 2, 0, 65, 65, 97, 97, 2, 0, 68, 68, 100, 100, 2, 0, 72, 72, 104, 104, 2, 0, 89, 89, 121, 121, 2, 0, 85, 85, 117, 117, 2, 0, 70, 70, 102, 102, 2, 0, 43, 43, 45, 45, 2, 0, 34, 34, 92, 92, 2, 0, 39, 39, 92, 92, 3, 0, 36, 36, 65, 90, 97, 122, 6, 0, 36, 36, 45, 45, 48, 58, 65, 90, 95, 95, 97, 122, 3, 0, 9, 10, 13, 13, 32, 32, 1, 0, 48, 57, 8, 0, 9, 10, 13, 13, 32, 34, 39, 41, 44, 44, 60, 62, 91, 91, 93, 93, 325, 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, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 1, 73, 1, 0, 0, 0, 3, 75, 1, 0, 0, 0, 5, 77, 1, 0, 0, 0, 7, 79, 1, 0, 0, 0, 9, 81, 1, 0, 0, 0, 11, 86, 1, 0, 0, 0, 13, 88, 1, 0, 0, 0, 15, 91, 1, 0, 0, 0, 17, 94, 1, 0, 0, 0, 19, 96, 1, 0, 0, 0, 21, 99, 1, 0, 0, 0, 23, 101, 1, 0, 0, 0, 25, 104, 1, 0, 0, 0, 27, 109, 1, 0, 0, 0, 29, 115, 1, 0, 0, 0, 31, 123, 1, 0, 0, 0, 33, 131, 1, 0, 0, 0, 35, 138, 1, 0, 0, 0, 37, 148, 1, 0, 0, 0, 39, 151, 1, 0, 0, 0, 41, 155, 1, 0, 0, 0, 43, 159, 1, 0, 0, 0, 45, 162, 1, 0, 0, 0, 47, 166, 1, 0, 0, 0, 49, 173, 1, 0, 0, 0, 51, 189, 1, 0, 0, 0, 53, 191, 1, 0, 0, 0, 55, 241, 1, 0, 0, 0, 57, 263, 1, 0, 0, 0, 59, 265, 1, 0, 0, 0, 61, 272, 1, 0, 0, 0, 63, 275, 1, 0, 0, 0, 65, 279, 1, 0, 0, 0, 67, 290, 1, 0, 0, 0, 69, 296, 1, 0, 0, 0, 71, 299, 1, 0, 0, 0, 73, 74, 5, 40, 0, 0, 74, 2, 1, 0, 0, 0, 75, 76, 5, 41, 0, 0, 76, 4, 1, 0, 0, 0, 77, 78, 5, 91, 0, 0, 78, 6, 1, 0, 0, 0, 79, 80, 5, 93, 0, 0, 80, 8, 1, 0, 0, 0, 81, 82, 5, 44, 0, 0, 82, 10, 1, 0, 0, 0, 83, 87, 5, 61, 0, 0, 84, 85, 5, 61, 0, 0, 85, 87, 5, 61, 0, 0, 86, 83, 1, 0, 0, 0, 86, 84, 1, 0, 0, 0, 87, 12, 1, 0, 0, 0, 88, 89, 5, 33, 0, 0, 89, 90, 5, 61, 0, 0, 90, 14, 1, 0, 0, 0, 91, 92, 5, 60, 0, 0, 92, 93, 5, 62, 0, 0, 93, 16, 1, 0, 0, 0, 94, 95, 5, 60, 0, 0, 95, 18, 1, 0, 0, 0, 96, 97, 5, 60, 0, 0, 97, 98, 5, 61, 0, 0, 98, 20, 1, 0, 0, 0, 99, 100, 5, 62, 0, 0, 100, 22, 1, 0, 0, 0, 101, 102, 5, 62, 0, 0, 102, 103, 5, 61, 0, 0, 103, 24, 1, 0, 0, 0, 104, 105, 7, 0, 0, 0, 105, 106, 7, 1, 0, 0, 106, 107, 7, 2, 0, 0, 107, 108, 7, 3, 0, 0, 108, 26, 1, 0, 0, 0, 109, 110, 7, 1, 0, 0, 110, 111, 7, 0, 0, 0, 111, 112, 7, 1, 0, 0, 112, 113, 7, 2, 0, 0, 113, 114, 7, 3, 0, 0, 114, 28, 1, 0, 0, 0, 115, 116, 7, 4, 0, 0, 116, 117, 7, 3, 0, 0, 117, 118, 7, 5, 0, 0, 118, 119, 7, 6, 0, 0, 119, 120, 7, 3, 0, 0, 120, 121, 7, 3, 0, 0, 121, 122, 7, 7, 0, 0, 122, 30, 1, 0, 0, 0, 123, 124, 7, 3, 0, 0, 124, 125, 7, 8, 0, 0, 125, 126, 7, 1, 0, 0, 126, 127, 7, 9, 0, 0, 127, 129, 7, 5, 0, 0, 128, 130, 7, 9, 0, 0, 129, 128, 1, 0, 0, 0, 129, 130, 1, 0, 0, 0, 130, 32, 1, 0, 0, 0, 131, 132, 7, 10, 0, 0, 132, 133, 7, 3, 0, 0, 133, 134, 7, 11, 0, 0, 134, 135, 7, 3, 0, 0, 135, 136, 7, 8, 0, 0, 136, 137, 7, 12, 0, 0, 137, 34, 1, 0, 0, 0, 138, 139, 7, 13, 0, 0, 139, 140, 7, 14, 0, 0, 140, 141, 7, 7, 0, 0, 141, 142, 7, 5, 0, 0, 142, 143, 7, 15, 0, 0, 143, 144, 7, 1, 0, 0, 144, 146, 7, 7, 0, 0, 145, 147, 7, 9, 0, 0, 146, 145, 1, 0, 0, 0, 146, 147, 1, 0, 0, 0, 147, 36, 1, 0, 0, 0, 148, 149, 7, 1, 0, 0, 149, 150, 7, 7, 0, 0, 150, 38, 1, 0, 0, 0, 151, 152, 7, 7, 0, 0, 152, 153, 7, 14, 0, 0, 153, 154, 7, 5, 0, 0, 154, 40, 1, 0, 0, 0, 155, 156, 7, 15, 0, 0, 156, 157, 7, 7, 0, 0, 157, 158, 7, 16, 0, 0, 158, 42, 1, 0, 0, 0, 159, 160, 7, 14, 0, 0, 160, 161, 7, 10, 0, 0, 161, 44, 1, 0, 0, 0, 162, 163, 7, 17, 0, 0, 163, 164, 7, 15, 0, 0, 164, 165, 7, 9, 0, 0, 165, 46, 1, 0, 0, 0, 166, 167, 7, 17, 0, 0, 167, 168, 7, 15, 0, 0, 168, 169, 7, 9, 0, 0, 169, 170, 7, 15, 0, 0, 170, 171, 7, 7, 0, 0, 171, 172, 7, 18, 0, 0, 172, 48, 1, 0, 0, 0, 173, 174, 7, 17, 0, 0, 174, 175, 7, 15, 0, 0, 175, 176, 7, 9, 0, 0, 176, 177, 7, 15, 0, 0, 177, 178, 7, 0, 0, 0, 178, 179, 7, 0, 0, 0, 179, 50, 1, 0, 0, 0, 180, 181, 7, 5, 0, 0, 181, 182, 7, 10, 0, 0, 182, 183, 7, 19, 0, 0, 183, 190, 7, 3, 0, 0, 184, 185, 7, 20, 0, 0, 185, 186, 7, 15, 0, 0, 186, 187, 7, 0, 0, 0, 187, 188, 7, 9, 0, 0, 188, 190, 7, 3, 0, 0, 189, 180, 1, 0, 0, 0, 189, 184, 1, 0, 0, 0, 190, 52, 1, 0, 0, 0, 191, 192, 7, 21, 0, 0, 192, 54, 1, 0, 0, 0, 193, 195, 3, 53, 26, 0, 194, 193, 1, 0, 0, 0, 194, 195, 1, 0, 0, 0, 195, 197, 1, 0, 0, 0, 196, 198, 3, 69, 34, 0, 197, 196, 1, 0, 0, 0, 198, 199, 1, 0, 0, 0, 199, 197, 1, 0, 0, 0, 199, 200, 1, 0, 0, 0, 200, 208, 1, 0, 0, 0, 201, 205, 5, 46, 0, 0, 202, 204, 3, 69, 34, 0, 203, 202, 1, 0, 0, 0, 204, 207, 1, 0, 0, 0, 205, 203, 1, 0, 0, 0, 205, 206, 1, 0, 0, 0, 206, 209, 1, 0, 0, 0, 207, 205, 1, 0, 0, 0, 208, 201, 1, 0, 0, 0, 208, 209, 1, 0, 0, 0, 209, 219, 1, 0, 0, 0, 210, 212, 7, 3, 0, 0, 211, 213, 3, 53, 26, 0, 212, 211, 1, 0, 0, 0, 212, 213, 1, 0, 0, 0, 213, 215, 1, 0, 0, 0, 214, 216, 3, 69, 34, 0, 215, 214, 1, 0, 0, 0, 216, 217, 1, 0, 0, 0, 217, 215, 1, 0, 0, 0, 217, 218, 1, 0, 0, 0, 218, 220, 1, 0, 0, 0, 219, 210, 1, 0, 0, 0, 219, 220, 1, 0, 0, 0, 220, 242, 1, 0, 0, 0, 221, 223, 3, 53, 26, 0, 222, 221, 1, 0, 0, 0, 222, 223, 1, 0, 0, 0, 223, 224, 1, 0, 0, 0, 224, 226, 5, 46, 0, 0, 225, 227, 3, 69, 34, 0, 226, 225, 1, 0, 0, 0, 227, 228, 1, 0, 0, 0, 228, 226, 1, 0, 0, 0, 228, 229, 1, 0, 0, 0, 229, 239, 1, 0, 0, 0, 230, 232, 7, 3, 0, 0, 231, 233, 3, 53, 26, 0, 232, 231, 1, 0, 0, 0, 232, 233, 1, 0, 0, 0, 233, 235, 1, 0, 0, 0, 234, 236, 3, 69, 34, 0, 235, 234, 1, 0, 0, 0, 236, 237, 1, 0, 0, 0, 237, 235, 1, 0, 0, 0, 237, 238, 1, 0, 0, 0, 238, 240, 1, 0, 0, 0, 239, 230, 1, 0, 0, 0, 239, 240, 1, 0, 0, 0, 240, 242, 1, 0, 0, 0, 241, 194, 1, 0, 0, 0, 241, 222, 1, 0, 0, 0, 242, 56, 1, 0, 0, 0, 243, 249, 5, 34, 0, 0, 244, 248, 8, 22, 0, 0, 245, 246, 5, 92, 0, 0, 246, 248, 9, 0, 0, 0, 247, 244, 1, 0, 0, 0, 247, 245, 1, 0, 0, 0, 248, 251, 1, 0, 0, 0, 249, 247, 1, 0, 0, 0, 249, 250, 1, 0, 0, 0, 250, 252, 1, 0, 0, 0, 251, 249, 1, 0, 0, 0, 252, 264, 5, 34, 0, 0, 253, 259, 5, 39, 0, 0, 254, 258, 8, 23, 0, 0, 255, 256, 5, 92, 0, 0, 256, 258, 9, 0, 0, 0, 257, 254, 1, 0, 0, 0, 257, 255, 1, 0, 0, 0, 258, 261, 1, 0, 0, 0, 259, 257, 1, 0, 0, 0, 259, 260, 1, 0, 0, 0, 260, 262, 1, 0, 0, 0, 261, 259, 1, 0, 0, 0, 262, 264, 5, 39, 0, 0, 263, 243, 1, 0, 0, 0, 263, 253, 1, 0, 0, 0, 264, 58, 1, 0, 0, 0, 265, 269, 7, 24, 0, 0, 266, 268, 7, 25, 0, 0, 267, 266, 1, 0, 0, 0, 268, 271, 1, 0, 0, 0, 269, 267, 1, 0, 0, 0, 269, 270, 1, 0, 0, 0, 270, 60, 1, 0, 0, 0, 271, 269, 1, 0, 0, 0, 272, 273, 5, 91, 0, 0, 273, 274, 5, 93, 0, 0, 274, 62, 1, 0, 0, 0, 275, 276, 5, 91, 0, 0, 276, 277, 5, 42, 0, 0, 277, 278, 5, 93, 0, 0, 278, 64, 1, 0, 0, 0, 279, 286, 3, 59, 29, 0, 280, 281, 5, 46, 0, 0, 281, 285, 3, 59, 29, 0, 282, 285, 3, 61, 30, 0, 283, 285, 3, 63, 31, 0, 284, 280, 1, 0, 0, 0, 284, 282, 1, 0, 0, 0, 284, 283, 1, 0, 0, 0, 285, 288, 1, 0, 0, 0, 286, 284, 1, 0, 0, 0, 286, 287, 1, 0, 0, 0, 287, 66, 1, 0, 0, 0, 288, 286, 1, 0, 0, 0, 289, 291, 7, 26, 0, 0, 290, 289, 1, 0, 0, 0, 291, 292, 1, 0, 0, 0, 292, 290, 1, 0, 0, 0, 292, 293, 1, 0, 0, 0, 293, 294, 1, 0, 0, 0, 294, 295, 6, 33, 0, 0, 295, 68, 1, 0, 0, 0, 296, 297, 7, 27, 0, 0, 297, 70, 1, 0, 0, 0, 298, 300, 8, 28, 0, 0, 299, 298, 1, 0, 0, 0, 300, 301, 1, 0, 0, 0, 301, 299, 1, 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 72, 1, 0, 0, 0, 28, 0, 86, 129, 146, 189, 194, 199, 205, 208, 212, 217, 219, 222, 228, 232, 237, 239, 241, 247, 249, 257, 259, 263, 269, 284, 286, 292, 301, 1, 6, 0, 0] \ No newline at end of file diff --git a/frontend/src/parser/FilterQueryLexer.tokens b/frontend/src/parser/FilterQueryLexer.tokens index 58b4f992a113..4df881075f0a 100644 --- a/frontend/src/parser/FilterQueryLexer.tokens +++ b/frontend/src/parser/FilterQueryLexer.tokens @@ -11,31 +11,24 @@ LE=10 GT=11 GE=12 LIKE=13 -NOT_LIKE=14 -ILIKE=15 -NOT_ILIKE=16 -BETWEEN=17 -NOT_BETWEEN=18 -EXISTS=19 -NOT_EXISTS=20 -REGEXP=21 -NOT_REGEXP=22 -CONTAINS=23 -NOT_CONTAINS=24 -IN=25 -NOT_IN=26 -NOT=27 -AND=28 -OR=29 -HAS=30 -HASANY=31 -HASALL=32 -HASNONE=33 -BOOL=34 -NUMBER=35 -QUOTED_TEXT=36 -KEY=37 -WS=38 +ILIKE=14 +BETWEEN=15 +EXISTS=16 +REGEXP=17 +CONTAINS=18 +IN=19 +NOT=20 +AND=21 +OR=22 +HAS=23 +HASANY=24 +HASALL=25 +BOOL=26 +NUMBER=27 +QUOTED_TEXT=28 +KEY=29 +WS=30 +FREETEXT=31 '('=1 ')'=2 '['=3 diff --git a/frontend/src/parser/FilterQueryLexer.ts b/frontend/src/parser/FilterQueryLexer.ts index 5b9486b87ad5..6e5fa047424f 100644 --- a/frontend/src/parser/FilterQueryLexer.ts +++ b/frontend/src/parser/FilterQueryLexer.ts @@ -25,31 +25,24 @@ export default class FilterQueryLexer extends Lexer { public static readonly GT = 11; public static readonly GE = 12; public static readonly LIKE = 13; - public static readonly NOT_LIKE = 14; - public static readonly ILIKE = 15; - public static readonly NOT_ILIKE = 16; - public static readonly BETWEEN = 17; - public static readonly NOT_BETWEEN = 18; - public static readonly EXISTS = 19; - public static readonly NOT_EXISTS = 20; - public static readonly REGEXP = 21; - public static readonly NOT_REGEXP = 22; - public static readonly CONTAINS = 23; - public static readonly NOT_CONTAINS = 24; - public static readonly IN = 25; - public static readonly NOT_IN = 26; - public static readonly NOT = 27; - public static readonly AND = 28; - public static readonly OR = 29; - public static readonly HAS = 30; - public static readonly HASANY = 31; - public static readonly HASALL = 32; - public static readonly HASNONE = 33; - public static readonly BOOL = 34; - public static readonly NUMBER = 35; - public static readonly QUOTED_TEXT = 36; - public static readonly KEY = 37; - public static readonly WS = 38; + public static readonly ILIKE = 14; + public static readonly BETWEEN = 15; + public static readonly EXISTS = 16; + public static readonly REGEXP = 17; + public static readonly CONTAINS = 18; + public static readonly IN = 19; + public static readonly NOT = 20; + public static readonly AND = 21; + public static readonly OR = 22; + public static readonly HAS = 23; + public static readonly HASANY = 24; + public static readonly HASALL = 25; + public static readonly BOOL = 26; + public static readonly NUMBER = 27; + public static readonly QUOTED_TEXT = 28; + public static readonly KEY = 29; + public static readonly WS = 30; + public static readonly FREETEXT = 31; public static readonly EOF = Token.EOF; public static readonly channelNames: string[] = [ "DEFAULT_TOKEN_CHANNEL", "HIDDEN" ]; @@ -67,31 +60,24 @@ export default class FilterQueryLexer extends Lexer { "NEQ", "LT", "LE", "GT", "GE", "LIKE", - "NOT_LIKE", - "ILIKE", "NOT_ILIKE", - "BETWEEN", - "NOT_BETWEEN", - "EXISTS", "NOT_EXISTS", - "REGEXP", "NOT_REGEXP", + "ILIKE", "BETWEEN", + "EXISTS", "REGEXP", "CONTAINS", - "NOT_CONTAINS", - "IN", "NOT_IN", - "NOT", "AND", - "OR", "HAS", - "HASANY", "HASALL", - "HASNONE", - "BOOL", "NUMBER", - "QUOTED_TEXT", - "KEY", "WS" ]; + "IN", "NOT", + "AND", "OR", + "HAS", "HASANY", + "HASALL", "BOOL", + "NUMBER", "QUOTED_TEXT", + "KEY", "WS", + "FREETEXT" ]; public static readonly modeNames: string[] = [ "DEFAULT_MODE", ]; public static readonly ruleNames: string[] = [ "LPAREN", "RPAREN", "LBRACK", "RBRACK", "COMMA", "EQUALS", "NOT_EQUALS", - "NEQ", "LT", "LE", "GT", "GE", "LIKE", "NOT_LIKE", "ILIKE", "NOT_ILIKE", - "BETWEEN", "NOT_BETWEEN", "EXISTS", "NOT_EXISTS", "REGEXP", "NOT_REGEXP", - "CONTAINS", "NOT_CONTAINS", "IN", "NOT_IN", "NOT", "AND", "OR", "HAS", - "HASANY", "HASALL", "HASNONE", "BOOL", "NUMBER", "QUOTED_TEXT", "KEY", - "WS", "DIGIT", + "NEQ", "LT", "LE", "GT", "GE", "LIKE", "ILIKE", "BETWEEN", "EXISTS", "REGEXP", + "CONTAINS", "IN", "NOT", "AND", "OR", "HAS", "HASANY", "HASALL", "BOOL", + "SIGN", "NUMBER", "QUOTED_TEXT", "SEGMENT", "EMPTY_BRACKS", "OLD_JSON_BRACKS", + "KEY", "WS", "DIGIT", "FREETEXT", ]; @@ -112,117 +98,113 @@ export default class FilterQueryLexer extends Lexer { public get modeNames(): string[] { return FilterQueryLexer.modeNames; } - public static readonly _serializedATN: number[] = [4,0,38,331,6,-1,2,0, + public static readonly _serializedATN: number[] = [4,0,31,303,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, 2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2, - 31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38, - 7,38,1,0,1,0,1,1,1,1,1,2,1,2,1,3,1,3,1,4,1,4,1,5,1,5,1,5,3,5,93,8,5,1,6, - 1,6,1,6,1,7,1,7,1,7,1,8,1,8,1,9,1,9,1,9,1,10,1,10,1,11,1,11,1,11,1,12,1, - 12,1,12,1,12,1,12,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,14,1,14, - 1,14,1,14,1,14,1,14,1,15,1,15,1,15,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,16,1,17,1,17,1,17,1,17,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,18,1,18,3,18,167,8,18,1, - 19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,3,19,179,8,19,1,20,1,20, - 1,20,1,20,1,20,1,20,1,20,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1, - 21,1,21,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,3,22,207,8,22,1,23,1,23, - 1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,3,23,221,8,23,1,24,1, - 24,1,24,1,25,1,25,1,25,1,25,1,25,1,25,1,25,1,26,1,26,1,26,1,26,1,27,1,27, - 1,27,1,27,1,28,1,28,1,28,1,29,1,29,1,29,1,29,1,30,1,30,1,30,1,30,1,30,1, - 30,1,30,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,32,1,32,1,32,1,32,1,32,1,32, - 1,32,1,32,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,3,33,279,8,33,1, - 34,4,34,282,8,34,11,34,12,34,283,1,34,1,34,4,34,288,8,34,11,34,12,34,289, - 3,34,292,8,34,1,35,1,35,1,35,1,35,5,35,298,8,35,10,35,12,35,301,9,35,1, - 35,1,35,1,35,1,35,1,35,5,35,308,8,35,10,35,12,35,311,9,35,1,35,3,35,314, - 8,35,1,36,1,36,5,36,318,8,36,10,36,12,36,321,9,36,1,37,4,37,324,8,37,11, - 37,12,37,325,1,37,1,37,1,38,1,38,0,0,39,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,49,25,51,26,53,27,55,28,57,29,59,30,61,31,63,32, - 65,33,67,34,69,35,71,36,73,37,75,38,77,0,1,0,27,2,0,76,76,108,108,2,0,73, - 73,105,105,2,0,75,75,107,107,2,0,69,69,101,101,2,0,78,78,110,110,2,0,79, - 79,111,111,2,0,84,84,116,116,2,0,66,66,98,98,2,0,87,87,119,119,2,0,88,88, - 120,120,2,0,83,83,115,115,2,0,82,82,114,114,2,0,71,71,103,103,2,0,80,80, - 112,112,2,0,67,67,99,99,2,0,65,65,97,97,2,0,68,68,100,100,2,0,72,72,104, - 104,2,0,89,89,121,121,2,0,85,85,117,117,2,0,70,70,102,102,2,0,34,34,92, - 92,2,0,39,39,92,92,4,0,48,57,65,90,95,95,97,122,6,0,46,46,48,57,65,91,93, - 93,95,95,97,122,3,0,9,10,13,13,32,32,1,0,48,57,345,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,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59, - 1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,65,1,0,0,0,0,67,1,0,0,0,0,69,1,0,0, - 0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,1,0,0,0,1,79,1,0,0,0,3,81,1,0,0,0,5,83, - 1,0,0,0,7,85,1,0,0,0,9,87,1,0,0,0,11,92,1,0,0,0,13,94,1,0,0,0,15,97,1,0, - 0,0,17,100,1,0,0,0,19,102,1,0,0,0,21,105,1,0,0,0,23,107,1,0,0,0,25,110, - 1,0,0,0,27,115,1,0,0,0,29,124,1,0,0,0,31,130,1,0,0,0,33,140,1,0,0,0,35, - 148,1,0,0,0,37,160,1,0,0,0,39,168,1,0,0,0,41,180,1,0,0,0,43,187,1,0,0,0, - 45,198,1,0,0,0,47,208,1,0,0,0,49,222,1,0,0,0,51,225,1,0,0,0,53,232,1,0, - 0,0,55,236,1,0,0,0,57,240,1,0,0,0,59,243,1,0,0,0,61,247,1,0,0,0,63,254, - 1,0,0,0,65,261,1,0,0,0,67,278,1,0,0,0,69,281,1,0,0,0,71,313,1,0,0,0,73, - 315,1,0,0,0,75,323,1,0,0,0,77,329,1,0,0,0,79,80,5,40,0,0,80,2,1,0,0,0,81, - 82,5,41,0,0,82,4,1,0,0,0,83,84,5,91,0,0,84,6,1,0,0,0,85,86,5,93,0,0,86, - 8,1,0,0,0,87,88,5,44,0,0,88,10,1,0,0,0,89,93,5,61,0,0,90,91,5,61,0,0,91, - 93,5,61,0,0,92,89,1,0,0,0,92,90,1,0,0,0,93,12,1,0,0,0,94,95,5,33,0,0,95, - 96,5,61,0,0,96,14,1,0,0,0,97,98,5,60,0,0,98,99,5,62,0,0,99,16,1,0,0,0,100, - 101,5,60,0,0,101,18,1,0,0,0,102,103,5,60,0,0,103,104,5,61,0,0,104,20,1, - 0,0,0,105,106,5,62,0,0,106,22,1,0,0,0,107,108,5,62,0,0,108,109,5,61,0,0, - 109,24,1,0,0,0,110,111,7,0,0,0,111,112,7,1,0,0,112,113,7,2,0,0,113,114, - 7,3,0,0,114,26,1,0,0,0,115,116,7,4,0,0,116,117,7,5,0,0,117,118,7,6,0,0, - 118,119,5,95,0,0,119,120,7,0,0,0,120,121,7,1,0,0,121,122,7,2,0,0,122,123, - 7,3,0,0,123,28,1,0,0,0,124,125,7,1,0,0,125,126,7,0,0,0,126,127,7,1,0,0, - 127,128,7,2,0,0,128,129,7,3,0,0,129,30,1,0,0,0,130,131,7,4,0,0,131,132, - 7,5,0,0,132,133,7,6,0,0,133,134,5,95,0,0,134,135,7,1,0,0,135,136,7,0,0, - 0,136,137,7,1,0,0,137,138,7,2,0,0,138,139,7,3,0,0,139,32,1,0,0,0,140,141, - 7,7,0,0,141,142,7,3,0,0,142,143,7,6,0,0,143,144,7,8,0,0,144,145,7,3,0,0, - 145,146,7,3,0,0,146,147,7,4,0,0,147,34,1,0,0,0,148,149,7,4,0,0,149,150, - 7,5,0,0,150,151,7,6,0,0,151,152,5,95,0,0,152,153,7,7,0,0,153,154,7,3,0, - 0,154,155,7,6,0,0,155,156,7,8,0,0,156,157,7,3,0,0,157,158,7,3,0,0,158,159, - 7,4,0,0,159,36,1,0,0,0,160,161,7,3,0,0,161,162,7,9,0,0,162,163,7,1,0,0, - 163,164,7,10,0,0,164,166,7,6,0,0,165,167,7,10,0,0,166,165,1,0,0,0,166,167, - 1,0,0,0,167,38,1,0,0,0,168,169,7,4,0,0,169,170,7,5,0,0,170,171,7,6,0,0, - 171,172,5,45,0,0,172,173,7,3,0,0,173,174,7,9,0,0,174,175,7,1,0,0,175,176, - 7,10,0,0,176,178,7,6,0,0,177,179,7,10,0,0,178,177,1,0,0,0,178,179,1,0,0, - 0,179,40,1,0,0,0,180,181,7,11,0,0,181,182,7,3,0,0,182,183,7,12,0,0,183, - 184,7,3,0,0,184,185,7,9,0,0,185,186,7,13,0,0,186,42,1,0,0,0,187,188,7,4, - 0,0,188,189,7,5,0,0,189,190,7,6,0,0,190,191,5,95,0,0,191,192,7,11,0,0,192, - 193,7,3,0,0,193,194,7,12,0,0,194,195,7,3,0,0,195,196,7,9,0,0,196,197,7, - 13,0,0,197,44,1,0,0,0,198,199,7,14,0,0,199,200,7,5,0,0,200,201,7,4,0,0, - 201,202,7,6,0,0,202,203,7,15,0,0,203,204,7,1,0,0,204,206,7,4,0,0,205,207, - 7,10,0,0,206,205,1,0,0,0,206,207,1,0,0,0,207,46,1,0,0,0,208,209,7,4,0,0, - 209,210,7,5,0,0,210,211,7,6,0,0,211,212,5,95,0,0,212,213,7,14,0,0,213,214, - 7,5,0,0,214,215,7,4,0,0,215,216,7,6,0,0,216,217,7,15,0,0,217,218,7,1,0, - 0,218,220,7,4,0,0,219,221,7,10,0,0,220,219,1,0,0,0,220,221,1,0,0,0,221, - 48,1,0,0,0,222,223,7,1,0,0,223,224,7,4,0,0,224,50,1,0,0,0,225,226,7,4,0, - 0,226,227,7,5,0,0,227,228,7,6,0,0,228,229,5,95,0,0,229,230,7,1,0,0,230, - 231,7,4,0,0,231,52,1,0,0,0,232,233,7,4,0,0,233,234,7,5,0,0,234,235,7,6, - 0,0,235,54,1,0,0,0,236,237,7,15,0,0,237,238,7,4,0,0,238,239,7,16,0,0,239, - 56,1,0,0,0,240,241,7,5,0,0,241,242,7,11,0,0,242,58,1,0,0,0,243,244,7,17, - 0,0,244,245,7,15,0,0,245,246,7,10,0,0,246,60,1,0,0,0,247,248,7,17,0,0,248, - 249,7,15,0,0,249,250,7,10,0,0,250,251,7,15,0,0,251,252,7,4,0,0,252,253, - 7,18,0,0,253,62,1,0,0,0,254,255,7,17,0,0,255,256,7,15,0,0,256,257,7,10, - 0,0,257,258,7,15,0,0,258,259,7,0,0,0,259,260,7,0,0,0,260,64,1,0,0,0,261, - 262,7,17,0,0,262,263,7,15,0,0,263,264,7,10,0,0,264,265,7,4,0,0,265,266, - 7,5,0,0,266,267,7,4,0,0,267,268,7,3,0,0,268,66,1,0,0,0,269,270,7,6,0,0, - 270,271,7,11,0,0,271,272,7,19,0,0,272,279,7,3,0,0,273,274,7,20,0,0,274, - 275,7,15,0,0,275,276,7,0,0,0,276,277,7,10,0,0,277,279,7,3,0,0,278,269,1, - 0,0,0,278,273,1,0,0,0,279,68,1,0,0,0,280,282,3,77,38,0,281,280,1,0,0,0, - 282,283,1,0,0,0,283,281,1,0,0,0,283,284,1,0,0,0,284,291,1,0,0,0,285,287, - 5,46,0,0,286,288,3,77,38,0,287,286,1,0,0,0,288,289,1,0,0,0,289,287,1,0, - 0,0,289,290,1,0,0,0,290,292,1,0,0,0,291,285,1,0,0,0,291,292,1,0,0,0,292, - 70,1,0,0,0,293,299,5,34,0,0,294,298,8,21,0,0,295,296,5,92,0,0,296,298,9, - 0,0,0,297,294,1,0,0,0,297,295,1,0,0,0,298,301,1,0,0,0,299,297,1,0,0,0,299, - 300,1,0,0,0,300,302,1,0,0,0,301,299,1,0,0,0,302,314,5,34,0,0,303,309,5, - 39,0,0,304,308,8,22,0,0,305,306,5,92,0,0,306,308,9,0,0,0,307,304,1,0,0, - 0,307,305,1,0,0,0,308,311,1,0,0,0,309,307,1,0,0,0,309,310,1,0,0,0,310,312, - 1,0,0,0,311,309,1,0,0,0,312,314,5,39,0,0,313,293,1,0,0,0,313,303,1,0,0, - 0,314,72,1,0,0,0,315,319,7,23,0,0,316,318,7,24,0,0,317,316,1,0,0,0,318, - 321,1,0,0,0,319,317,1,0,0,0,319,320,1,0,0,0,320,74,1,0,0,0,321,319,1,0, - 0,0,322,324,7,25,0,0,323,322,1,0,0,0,324,325,1,0,0,0,325,323,1,0,0,0,325, - 326,1,0,0,0,326,327,1,0,0,0,327,328,6,37,0,0,328,76,1,0,0,0,329,330,7,26, - 0,0,330,78,1,0,0,0,17,0,92,166,178,206,220,278,283,289,291,297,299,307, - 309,313,319,325,1,6,0,0]; + 31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,35,1,0,1,0,1,1,1,1,1,2,1,2, + 1,3,1,3,1,4,1,4,1,5,1,5,1,5,3,5,87,8,5,1,6,1,6,1,6,1,7,1,7,1,7,1,8,1,8, + 1,9,1,9,1,9,1,10,1,10,1,11,1,11,1,11,1,12,1,12,1,12,1,12,1,12,1,13,1,13, + 1,13,1,13,1,13,1,13,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,15,1,15,1, + 15,1,15,1,15,1,15,3,15,130,8,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,3,17,147,8,17,1,18,1,18,1,18,1,19,1, + 19,1,19,1,19,1,20,1,20,1,20,1,20,1,21,1,21,1,21,1,22,1,22,1,22,1,22,1,23, + 1,23,1,23,1,23,1,23,1,23,1,23,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,25,1, + 25,1,25,1,25,1,25,1,25,1,25,1,25,1,25,3,25,190,8,25,1,26,1,26,1,27,3,27, + 195,8,27,1,27,4,27,198,8,27,11,27,12,27,199,1,27,1,27,5,27,204,8,27,10, + 27,12,27,207,9,27,3,27,209,8,27,1,27,1,27,3,27,213,8,27,1,27,4,27,216,8, + 27,11,27,12,27,217,3,27,220,8,27,1,27,3,27,223,8,27,1,27,1,27,4,27,227, + 8,27,11,27,12,27,228,1,27,1,27,3,27,233,8,27,1,27,4,27,236,8,27,11,27,12, + 27,237,3,27,240,8,27,3,27,242,8,27,1,28,1,28,1,28,1,28,5,28,248,8,28,10, + 28,12,28,251,9,28,1,28,1,28,1,28,1,28,1,28,5,28,258,8,28,10,28,12,28,261, + 9,28,1,28,3,28,264,8,28,1,29,1,29,5,29,268,8,29,10,29,12,29,271,9,29,1, + 30,1,30,1,30,1,31,1,31,1,31,1,31,1,32,1,32,1,32,1,32,1,32,5,32,285,8,32, + 10,32,12,32,288,9,32,1,33,4,33,291,8,33,11,33,12,33,292,1,33,1,33,1,34, + 1,34,1,35,4,35,300,8,35,11,35,12,35,301,0,0,36,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,49,25,51,26,53,0,55,27,57,28,59,0,61,0, + 63,0,65,29,67,30,69,0,71,31,1,0,29,2,0,76,76,108,108,2,0,73,73,105,105, + 2,0,75,75,107,107,2,0,69,69,101,101,2,0,66,66,98,98,2,0,84,84,116,116,2, + 0,87,87,119,119,2,0,78,78,110,110,2,0,88,88,120,120,2,0,83,83,115,115,2, + 0,82,82,114,114,2,0,71,71,103,103,2,0,80,80,112,112,2,0,67,67,99,99,2,0, + 79,79,111,111,2,0,65,65,97,97,2,0,68,68,100,100,2,0,72,72,104,104,2,0,89, + 89,121,121,2,0,85,85,117,117,2,0,70,70,102,102,2,0,43,43,45,45,2,0,34,34, + 92,92,2,0,39,39,92,92,3,0,36,36,65,90,97,122,6,0,36,36,45,45,48,58,65,90, + 95,95,97,122,3,0,9,10,13,13,32,32,1,0,48,57,8,0,9,10,13,13,32,34,39,41, + 44,44,60,62,91,91,93,93,325,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,0,49,1,0,0,0,0,51,1,0,0, + 0,0,55,1,0,0,0,0,57,1,0,0,0,0,65,1,0,0,0,0,67,1,0,0,0,0,71,1,0,0,0,1,73, + 1,0,0,0,3,75,1,0,0,0,5,77,1,0,0,0,7,79,1,0,0,0,9,81,1,0,0,0,11,86,1,0,0, + 0,13,88,1,0,0,0,15,91,1,0,0,0,17,94,1,0,0,0,19,96,1,0,0,0,21,99,1,0,0,0, + 23,101,1,0,0,0,25,104,1,0,0,0,27,109,1,0,0,0,29,115,1,0,0,0,31,123,1,0, + 0,0,33,131,1,0,0,0,35,138,1,0,0,0,37,148,1,0,0,0,39,151,1,0,0,0,41,155, + 1,0,0,0,43,159,1,0,0,0,45,162,1,0,0,0,47,166,1,0,0,0,49,173,1,0,0,0,51, + 189,1,0,0,0,53,191,1,0,0,0,55,241,1,0,0,0,57,263,1,0,0,0,59,265,1,0,0,0, + 61,272,1,0,0,0,63,275,1,0,0,0,65,279,1,0,0,0,67,290,1,0,0,0,69,296,1,0, + 0,0,71,299,1,0,0,0,73,74,5,40,0,0,74,2,1,0,0,0,75,76,5,41,0,0,76,4,1,0, + 0,0,77,78,5,91,0,0,78,6,1,0,0,0,79,80,5,93,0,0,80,8,1,0,0,0,81,82,5,44, + 0,0,82,10,1,0,0,0,83,87,5,61,0,0,84,85,5,61,0,0,85,87,5,61,0,0,86,83,1, + 0,0,0,86,84,1,0,0,0,87,12,1,0,0,0,88,89,5,33,0,0,89,90,5,61,0,0,90,14,1, + 0,0,0,91,92,5,60,0,0,92,93,5,62,0,0,93,16,1,0,0,0,94,95,5,60,0,0,95,18, + 1,0,0,0,96,97,5,60,0,0,97,98,5,61,0,0,98,20,1,0,0,0,99,100,5,62,0,0,100, + 22,1,0,0,0,101,102,5,62,0,0,102,103,5,61,0,0,103,24,1,0,0,0,104,105,7,0, + 0,0,105,106,7,1,0,0,106,107,7,2,0,0,107,108,7,3,0,0,108,26,1,0,0,0,109, + 110,7,1,0,0,110,111,7,0,0,0,111,112,7,1,0,0,112,113,7,2,0,0,113,114,7,3, + 0,0,114,28,1,0,0,0,115,116,7,4,0,0,116,117,7,3,0,0,117,118,7,5,0,0,118, + 119,7,6,0,0,119,120,7,3,0,0,120,121,7,3,0,0,121,122,7,7,0,0,122,30,1,0, + 0,0,123,124,7,3,0,0,124,125,7,8,0,0,125,126,7,1,0,0,126,127,7,9,0,0,127, + 129,7,5,0,0,128,130,7,9,0,0,129,128,1,0,0,0,129,130,1,0,0,0,130,32,1,0, + 0,0,131,132,7,10,0,0,132,133,7,3,0,0,133,134,7,11,0,0,134,135,7,3,0,0,135, + 136,7,8,0,0,136,137,7,12,0,0,137,34,1,0,0,0,138,139,7,13,0,0,139,140,7, + 14,0,0,140,141,7,7,0,0,141,142,7,5,0,0,142,143,7,15,0,0,143,144,7,1,0,0, + 144,146,7,7,0,0,145,147,7,9,0,0,146,145,1,0,0,0,146,147,1,0,0,0,147,36, + 1,0,0,0,148,149,7,1,0,0,149,150,7,7,0,0,150,38,1,0,0,0,151,152,7,7,0,0, + 152,153,7,14,0,0,153,154,7,5,0,0,154,40,1,0,0,0,155,156,7,15,0,0,156,157, + 7,7,0,0,157,158,7,16,0,0,158,42,1,0,0,0,159,160,7,14,0,0,160,161,7,10,0, + 0,161,44,1,0,0,0,162,163,7,17,0,0,163,164,7,15,0,0,164,165,7,9,0,0,165, + 46,1,0,0,0,166,167,7,17,0,0,167,168,7,15,0,0,168,169,7,9,0,0,169,170,7, + 15,0,0,170,171,7,7,0,0,171,172,7,18,0,0,172,48,1,0,0,0,173,174,7,17,0,0, + 174,175,7,15,0,0,175,176,7,9,0,0,176,177,7,15,0,0,177,178,7,0,0,0,178,179, + 7,0,0,0,179,50,1,0,0,0,180,181,7,5,0,0,181,182,7,10,0,0,182,183,7,19,0, + 0,183,190,7,3,0,0,184,185,7,20,0,0,185,186,7,15,0,0,186,187,7,0,0,0,187, + 188,7,9,0,0,188,190,7,3,0,0,189,180,1,0,0,0,189,184,1,0,0,0,190,52,1,0, + 0,0,191,192,7,21,0,0,192,54,1,0,0,0,193,195,3,53,26,0,194,193,1,0,0,0,194, + 195,1,0,0,0,195,197,1,0,0,0,196,198,3,69,34,0,197,196,1,0,0,0,198,199,1, + 0,0,0,199,197,1,0,0,0,199,200,1,0,0,0,200,208,1,0,0,0,201,205,5,46,0,0, + 202,204,3,69,34,0,203,202,1,0,0,0,204,207,1,0,0,0,205,203,1,0,0,0,205,206, + 1,0,0,0,206,209,1,0,0,0,207,205,1,0,0,0,208,201,1,0,0,0,208,209,1,0,0,0, + 209,219,1,0,0,0,210,212,7,3,0,0,211,213,3,53,26,0,212,211,1,0,0,0,212,213, + 1,0,0,0,213,215,1,0,0,0,214,216,3,69,34,0,215,214,1,0,0,0,216,217,1,0,0, + 0,217,215,1,0,0,0,217,218,1,0,0,0,218,220,1,0,0,0,219,210,1,0,0,0,219,220, + 1,0,0,0,220,242,1,0,0,0,221,223,3,53,26,0,222,221,1,0,0,0,222,223,1,0,0, + 0,223,224,1,0,0,0,224,226,5,46,0,0,225,227,3,69,34,0,226,225,1,0,0,0,227, + 228,1,0,0,0,228,226,1,0,0,0,228,229,1,0,0,0,229,239,1,0,0,0,230,232,7,3, + 0,0,231,233,3,53,26,0,232,231,1,0,0,0,232,233,1,0,0,0,233,235,1,0,0,0,234, + 236,3,69,34,0,235,234,1,0,0,0,236,237,1,0,0,0,237,235,1,0,0,0,237,238,1, + 0,0,0,238,240,1,0,0,0,239,230,1,0,0,0,239,240,1,0,0,0,240,242,1,0,0,0,241, + 194,1,0,0,0,241,222,1,0,0,0,242,56,1,0,0,0,243,249,5,34,0,0,244,248,8,22, + 0,0,245,246,5,92,0,0,246,248,9,0,0,0,247,244,1,0,0,0,247,245,1,0,0,0,248, + 251,1,0,0,0,249,247,1,0,0,0,249,250,1,0,0,0,250,252,1,0,0,0,251,249,1,0, + 0,0,252,264,5,34,0,0,253,259,5,39,0,0,254,258,8,23,0,0,255,256,5,92,0,0, + 256,258,9,0,0,0,257,254,1,0,0,0,257,255,1,0,0,0,258,261,1,0,0,0,259,257, + 1,0,0,0,259,260,1,0,0,0,260,262,1,0,0,0,261,259,1,0,0,0,262,264,5,39,0, + 0,263,243,1,0,0,0,263,253,1,0,0,0,264,58,1,0,0,0,265,269,7,24,0,0,266,268, + 7,25,0,0,267,266,1,0,0,0,268,271,1,0,0,0,269,267,1,0,0,0,269,270,1,0,0, + 0,270,60,1,0,0,0,271,269,1,0,0,0,272,273,5,91,0,0,273,274,5,93,0,0,274, + 62,1,0,0,0,275,276,5,91,0,0,276,277,5,42,0,0,277,278,5,93,0,0,278,64,1, + 0,0,0,279,286,3,59,29,0,280,281,5,46,0,0,281,285,3,59,29,0,282,285,3,61, + 30,0,283,285,3,63,31,0,284,280,1,0,0,0,284,282,1,0,0,0,284,283,1,0,0,0, + 285,288,1,0,0,0,286,284,1,0,0,0,286,287,1,0,0,0,287,66,1,0,0,0,288,286, + 1,0,0,0,289,291,7,26,0,0,290,289,1,0,0,0,291,292,1,0,0,0,292,290,1,0,0, + 0,292,293,1,0,0,0,293,294,1,0,0,0,294,295,6,33,0,0,295,68,1,0,0,0,296,297, + 7,27,0,0,297,70,1,0,0,0,298,300,8,28,0,0,299,298,1,0,0,0,300,301,1,0,0, + 0,301,299,1,0,0,0,301,302,1,0,0,0,302,72,1,0,0,0,28,0,86,129,146,189,194, + 199,205,208,212,217,219,222,228,232,237,239,241,247,249,257,259,263,269, + 284,286,292,301,1,6,0,0]; private static __ATN: ATN; public static get _ATN(): ATN { diff --git a/frontend/src/parser/FilterQueryParser.ts b/frontend/src/parser/FilterQueryParser.ts index 642a5075211c..70d9142bb768 100644 --- a/frontend/src/parser/FilterQueryParser.ts +++ b/frontend/src/parser/FilterQueryParser.ts @@ -32,31 +32,24 @@ export default class FilterQueryParser extends Parser { public static readonly GT = 11; public static readonly GE = 12; public static readonly LIKE = 13; - public static readonly NOT_LIKE = 14; - public static readonly ILIKE = 15; - public static readonly NOT_ILIKE = 16; - public static readonly BETWEEN = 17; - public static readonly NOT_BETWEEN = 18; - public static readonly EXISTS = 19; - public static readonly NOT_EXISTS = 20; - public static readonly REGEXP = 21; - public static readonly NOT_REGEXP = 22; - public static readonly CONTAINS = 23; - public static readonly NOT_CONTAINS = 24; - public static readonly IN = 25; - public static readonly NOT_IN = 26; - public static readonly NOT = 27; - public static readonly AND = 28; - public static readonly OR = 29; - public static readonly HAS = 30; - public static readonly HASANY = 31; - public static readonly HASALL = 32; - public static readonly HASNONE = 33; - public static readonly BOOL = 34; - public static readonly NUMBER = 35; - public static readonly QUOTED_TEXT = 36; - public static readonly KEY = 37; - public static readonly WS = 38; + public static readonly ILIKE = 14; + public static readonly BETWEEN = 15; + public static readonly EXISTS = 16; + public static readonly REGEXP = 17; + public static readonly CONTAINS = 18; + public static readonly IN = 19; + public static readonly NOT = 20; + public static readonly AND = 21; + public static readonly OR = 22; + public static readonly HAS = 23; + public static readonly HASANY = 24; + public static readonly HASALL = 25; + public static readonly BOOL = 26; + public static readonly NUMBER = 27; + public static readonly QUOTED_TEXT = 28; + public static readonly KEY = 29; + public static readonly WS = 30; + public static readonly FREETEXT = 31; public static readonly EOF = Token.EOF; public static readonly RULE_query = 0; public static readonly RULE_expression = 1; @@ -89,22 +82,16 @@ export default class FilterQueryParser extends Parser { "NEQ", "LT", "LE", "GT", "GE", "LIKE", - "NOT_LIKE", - "ILIKE", "NOT_ILIKE", - "BETWEEN", - "NOT_BETWEEN", - "EXISTS", "NOT_EXISTS", - "REGEXP", "NOT_REGEXP", + "ILIKE", "BETWEEN", + "EXISTS", "REGEXP", "CONTAINS", - "NOT_CONTAINS", - "IN", "NOT_IN", - "NOT", "AND", - "OR", "HAS", - "HASANY", "HASALL", - "HASNONE", - "BOOL", "NUMBER", - "QUOTED_TEXT", - "KEY", "WS" ]; + "IN", "NOT", + "AND", "OR", + "HAS", "HASANY", + "HASALL", "BOOL", + "NUMBER", "QUOTED_TEXT", + "KEY", "WS", + "FREETEXT" ]; // tslint:disable:no-trailing-whitespace public static readonly ruleNames: string[] = [ "query", "expression", "orExpression", "andExpression", "unaryExpression", @@ -130,58 +117,12 @@ export default class FilterQueryParser extends Parser { public query(): QueryContext { let localctx: QueryContext = new QueryContext(this, this._ctx, this.state); this.enterRule(localctx, 0, FilterQueryParser.RULE_query); - let _la: number; try { this.enterOuterAlt(localctx, 1); { this.state = 34; this.expression(); - this.state = 40; - this._errHandler.sync(this); - _la = this._input.LA(1); - while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 4160749570) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 51) !== 0)) { - { - this.state = 38; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 28: - case 29: - { - this.state = 35; - _la = this._input.LA(1); - if(!(_la===28 || _la===29)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 36; - this.expression(); - } - break; - case 1: - case 27: - case 30: - case 31: - case 32: - case 33: - case 36: - case 37: - { - this.state = 37; - this.expression(); - } - break; - default: - throw new NoViableAltException(this); - } - } - this.state = 42; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - this.state = 43; + this.state = 35; this.match(FilterQueryParser.EOF); } } @@ -206,7 +147,7 @@ export default class FilterQueryParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 45; + this.state = 37; this.orExpression(); } } @@ -228,29 +169,27 @@ export default class FilterQueryParser extends Parser { public orExpression(): OrExpressionContext { let localctx: OrExpressionContext = new OrExpressionContext(this, this._ctx, this.state); this.enterRule(localctx, 4, FilterQueryParser.RULE_orExpression); + let _la: number; try { - let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 47; + this.state = 39; this.andExpression(); - this.state = 52; + this.state = 44; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 2, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - { - this.state = 48; - this.match(FilterQueryParser.OR); - this.state = 49; - this.andExpression(); - } - } + _la = this._input.LA(1); + while (_la===22) { + { + { + this.state = 40; + this.match(FilterQueryParser.OR); + this.state = 41; + this.andExpression(); } - this.state = 54; + } + this.state = 46; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 2, this._ctx); + _la = this._input.LA(1); } } } @@ -272,50 +211,50 @@ export default class FilterQueryParser extends Parser { public andExpression(): AndExpressionContext { let localctx: AndExpressionContext = new AndExpressionContext(this, this._ctx, this.state); this.enterRule(localctx, 6, FilterQueryParser.RULE_andExpression); + let _la: number; try { - let _alt: number; this.enterOuterAlt(localctx, 1); { - this.state = 55; + this.state = 47; this.unaryExpression(); - this.state = 61; + this.state = 53; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 4, this._ctx); - while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { - if (_alt === 1) { - { - this.state = 59; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 28: - { - this.state = 56; - this.match(FilterQueryParser.AND); - this.state = 57; - this.unaryExpression(); - } - break; - case 1: - case 27: - case 30: - case 31: - case 32: - case 33: - case 36: - case 37: - { - this.state = 58; - this.unaryExpression(); - } - break; - default: - throw new NoViableAltException(this); - } - } - } - this.state = 63; + _la = this._input.LA(1); + while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3215982594) !== 0)) { + { + this.state = 51; this._errHandler.sync(this); - _alt = this._interp.adaptivePredict(this._input, 4, this._ctx); + switch (this._input.LA(1)) { + case 21: + { + this.state = 48; + this.match(FilterQueryParser.AND); + this.state = 49; + this.unaryExpression(); + } + break; + case 1: + case 20: + case 23: + case 24: + case 25: + case 26: + case 27: + case 28: + case 29: + case 31: + { + this.state = 50; + this.unaryExpression(); + } + break; + default: + throw new NoViableAltException(this); + } + } + this.state = 55; + this._errHandler.sync(this); + _la = this._input.LA(1); } } } @@ -341,17 +280,17 @@ export default class FilterQueryParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 65; + this.state = 57; this._errHandler.sync(this); _la = this._input.LA(1); - if (_la===27) { + if (_la===20) { { - this.state = 64; + this.state = 56; this.match(FilterQueryParser.NOT); } } - this.state = 67; + this.state = 59; this.primary(); } } @@ -374,46 +313,55 @@ export default class FilterQueryParser extends Parser { let localctx: PrimaryContext = new PrimaryContext(this, this._ctx, this.state); this.enterRule(localctx, 10, FilterQueryParser.RULE_primary); try { - this.state = 76; + this.state = 70; this._errHandler.sync(this); - switch (this._input.LA(1)) { + switch ( this._interp.adaptivePredict(this._input, 4, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 69; + this.state = 61; this.match(FilterQueryParser.LPAREN); - this.state = 70; + this.state = 62; this.orExpression(); - this.state = 71; + this.state = 63; this.match(FilterQueryParser.RPAREN); } break; - case 37: + case 2: this.enterOuterAlt(localctx, 2); { - this.state = 73; + this.state = 65; this.comparison(); } break; - case 30: - case 31: - case 32: - case 33: + case 3: this.enterOuterAlt(localctx, 3); { - this.state = 74; + this.state = 66; this.functionCall(); } break; - case 36: + case 4: this.enterOuterAlt(localctx, 4); { - this.state = 75; + this.state = 67; this.fullText(); } break; - default: - throw new NoViableAltException(this); + case 5: + this.enterOuterAlt(localctx, 5); + { + this.state = 68; + this.key(); + } + break; + case 6: + this.enterOuterAlt(localctx, 6); + { + this.state = 69; + this.value(); + } + break; } } catch (re) { @@ -436,26 +384,26 @@ export default class FilterQueryParser extends Parser { this.enterRule(localctx, 12, FilterQueryParser.RULE_comparison); let _la: number; try { - this.state = 150; + this.state = 149; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 7, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 5, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 78; + this.state = 72; this.key(); - this.state = 79; + this.state = 73; this.match(FilterQueryParser.EQUALS); - this.state = 80; + this.state = 74; this.value(); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 82; + this.state = 76; this.key(); - this.state = 83; + this.state = 77; _la = this._input.LA(1); if(!(_la===7 || _la===8)) { this._errHandler.recoverInline(this); @@ -464,197 +412,207 @@ export default class FilterQueryParser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 84; + this.state = 78; this.value(); } break; case 3: this.enterOuterAlt(localctx, 3); { - this.state = 86; + this.state = 80; this.key(); - this.state = 87; + this.state = 81; this.match(FilterQueryParser.LT); - this.state = 88; + this.state = 82; this.value(); } break; case 4: this.enterOuterAlt(localctx, 4); { - this.state = 90; + this.state = 84; this.key(); - this.state = 91; + this.state = 85; this.match(FilterQueryParser.LE); - this.state = 92; + this.state = 86; this.value(); } break; case 5: this.enterOuterAlt(localctx, 5); { - this.state = 94; + this.state = 88; this.key(); - this.state = 95; + this.state = 89; this.match(FilterQueryParser.GT); - this.state = 96; + this.state = 90; this.value(); } break; case 6: this.enterOuterAlt(localctx, 6); { - this.state = 98; + this.state = 92; this.key(); - this.state = 99; + this.state = 93; this.match(FilterQueryParser.GE); - this.state = 100; + this.state = 94; this.value(); } break; case 7: this.enterOuterAlt(localctx, 7); { - this.state = 102; + this.state = 96; this.key(); - this.state = 103; + this.state = 97; _la = this._input.LA(1); - if(!(_la===13 || _la===15)) { + if(!(_la===13 || _la===14)) { this._errHandler.recoverInline(this); } else { this._errHandler.reportMatch(this); this.consume(); } - this.state = 104; + this.state = 98; this.value(); } break; case 8: this.enterOuterAlt(localctx, 8); { - this.state = 106; + this.state = 100; this.key(); - this.state = 107; + this.state = 101; + this.match(FilterQueryParser.NOT); + this.state = 102; _la = this._input.LA(1); - if(!(_la===14 || _la===16)) { + if(!(_la===13 || _la===14)) { this._errHandler.recoverInline(this); } else { this._errHandler.reportMatch(this); this.consume(); } - this.state = 108; + this.state = 103; this.value(); } break; case 9: this.enterOuterAlt(localctx, 9); { - this.state = 110; + this.state = 105; this.key(); - this.state = 111; + this.state = 106; this.match(FilterQueryParser.BETWEEN); - this.state = 112; + this.state = 107; this.value(); - this.state = 113; + this.state = 108; this.match(FilterQueryParser.AND); - this.state = 114; + this.state = 109; this.value(); } break; case 10: this.enterOuterAlt(localctx, 10); { - this.state = 116; + this.state = 111; this.key(); - this.state = 117; - this.match(FilterQueryParser.NOT_BETWEEN); - this.state = 118; + this.state = 112; + this.match(FilterQueryParser.NOT); + this.state = 113; + this.match(FilterQueryParser.BETWEEN); + this.state = 114; this.value(); - this.state = 119; + this.state = 115; this.match(FilterQueryParser.AND); - this.state = 120; + this.state = 116; this.value(); } break; case 11: this.enterOuterAlt(localctx, 11); { - this.state = 122; + this.state = 118; this.key(); - this.state = 123; + this.state = 119; this.inClause(); } break; case 12: this.enterOuterAlt(localctx, 12); { - this.state = 125; + this.state = 121; this.key(); - this.state = 126; + this.state = 122; this.notInClause(); } break; case 13: this.enterOuterAlt(localctx, 13); { - this.state = 128; + this.state = 124; this.key(); - this.state = 129; + this.state = 125; this.match(FilterQueryParser.EXISTS); } break; case 14: this.enterOuterAlt(localctx, 14); { - this.state = 131; + this.state = 127; this.key(); - this.state = 132; - this.match(FilterQueryParser.NOT_EXISTS); + this.state = 128; + this.match(FilterQueryParser.NOT); + this.state = 129; + this.match(FilterQueryParser.EXISTS); } break; case 15: this.enterOuterAlt(localctx, 15); { - this.state = 134; + this.state = 131; this.key(); - this.state = 135; + this.state = 132; this.match(FilterQueryParser.REGEXP); - this.state = 136; + this.state = 133; this.value(); } break; case 16: this.enterOuterAlt(localctx, 16); { - this.state = 138; + this.state = 135; this.key(); - this.state = 139; - this.match(FilterQueryParser.NOT_REGEXP); - this.state = 140; + this.state = 136; + this.match(FilterQueryParser.NOT); + this.state = 137; + this.match(FilterQueryParser.REGEXP); + this.state = 138; this.value(); } break; case 17: this.enterOuterAlt(localctx, 17); { - this.state = 142; + this.state = 140; this.key(); - this.state = 143; + this.state = 141; this.match(FilterQueryParser.CONTAINS); - this.state = 144; + this.state = 142; this.value(); } break; case 18: this.enterOuterAlt(localctx, 18); { - this.state = 146; + this.state = 144; this.key(); + this.state = 145; + this.match(FilterQueryParser.NOT); + this.state = 146; + this.match(FilterQueryParser.CONTAINS); this.state = 147; - this.match(FilterQueryParser.NOT_CONTAINS); - this.state = 148; this.value(); } break; @@ -679,35 +637,44 @@ export default class FilterQueryParser extends Parser { let localctx: InClauseContext = new InClauseContext(this, this._ctx, this.state); this.enterRule(localctx, 14, FilterQueryParser.RULE_inClause); try { - this.state = 162; + this.state = 163; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 8, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 6, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 152; + this.state = 151; this.match(FilterQueryParser.IN); - this.state = 153; + this.state = 152; this.match(FilterQueryParser.LPAREN); - this.state = 154; + this.state = 153; this.valueList(); - this.state = 155; + this.state = 154; this.match(FilterQueryParser.RPAREN); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 157; + this.state = 156; this.match(FilterQueryParser.IN); - this.state = 158; + this.state = 157; this.match(FilterQueryParser.LBRACK); - this.state = 159; + this.state = 158; this.valueList(); - this.state = 160; + this.state = 159; this.match(FilterQueryParser.RBRACK); } break; + case 3: + this.enterOuterAlt(localctx, 3); + { + this.state = 161; + this.match(FilterQueryParser.IN); + this.state = 162; + this.value(); + } + break; } } catch (re) { @@ -729,35 +696,50 @@ export default class FilterQueryParser extends Parser { let localctx: NotInClauseContext = new NotInClauseContext(this, this._ctx, this.state); this.enterRule(localctx, 16, FilterQueryParser.RULE_notInClause); try { - this.state = 174; + this.state = 180; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 9, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 7, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 164; - this.match(FilterQueryParser.NOT_IN); this.state = 165; - this.match(FilterQueryParser.LPAREN); + this.match(FilterQueryParser.NOT); this.state = 166; - this.valueList(); + this.match(FilterQueryParser.IN); this.state = 167; + this.match(FilterQueryParser.LPAREN); + this.state = 168; + this.valueList(); + this.state = 169; this.match(FilterQueryParser.RPAREN); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 169; - this.match(FilterQueryParser.NOT_IN); - this.state = 170; - this.match(FilterQueryParser.LBRACK); this.state = 171; - this.valueList(); + this.match(FilterQueryParser.NOT); this.state = 172; + this.match(FilterQueryParser.IN); + this.state = 173; + this.match(FilterQueryParser.LBRACK); + this.state = 174; + this.valueList(); + this.state = 175; this.match(FilterQueryParser.RBRACK); } break; + case 3: + this.enterOuterAlt(localctx, 3); + { + this.state = 177; + this.match(FilterQueryParser.NOT); + this.state = 178; + this.match(FilterQueryParser.IN); + this.state = 179; + this.value(); + } + break; } } catch (re) { @@ -782,21 +764,21 @@ export default class FilterQueryParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 176; + this.state = 182; this.value(); - this.state = 181; + this.state = 187; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===5) { { { - this.state = 177; + this.state = 183; this.match(FilterQueryParser.COMMA); - this.state = 178; + this.state = 184; this.value(); } } - this.state = 183; + this.state = 189; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -820,11 +802,19 @@ export default class FilterQueryParser extends Parser { public fullText(): FullTextContext { let localctx: FullTextContext = new FullTextContext(this, this._ctx, this.state); this.enterRule(localctx, 20, FilterQueryParser.RULE_fullText); + let _la: number; try { this.enterOuterAlt(localctx, 1); { - this.state = 184; - this.match(FilterQueryParser.QUOTED_TEXT); + this.state = 190; + _la = this._input.LA(1); + if(!(_la===28 || _la===31)) { + this._errHandler.recoverInline(this); + } + else { + this._errHandler.reportMatch(this); + this.consume(); + } } } catch (re) { @@ -849,20 +839,20 @@ export default class FilterQueryParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 186; + this.state = 192; _la = this._input.LA(1); - if(!(((((_la - 30)) & ~0x1F) === 0 && ((1 << (_la - 30)) & 15) !== 0))) { + if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 58720256) !== 0))) { this._errHandler.recoverInline(this); } else { this._errHandler.reportMatch(this); this.consume(); } - this.state = 187; + this.state = 193; this.match(FilterQueryParser.LPAREN); - this.state = 188; + this.state = 194; this.functionParamList(); - this.state = 189; + this.state = 195; this.match(FilterQueryParser.RPAREN); } } @@ -888,21 +878,21 @@ export default class FilterQueryParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 191; + this.state = 197; this.functionParam(); - this.state = 196; + this.state = 202; this._errHandler.sync(this); _la = this._input.LA(1); while (_la===5) { { { - this.state = 192; + this.state = 198; this.match(FilterQueryParser.COMMA); - this.state = 193; + this.state = 199; this.functionParam(); } } - this.state = 198; + this.state = 204; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -927,27 +917,27 @@ export default class FilterQueryParser extends Parser { let localctx: FunctionParamContext = new FunctionParamContext(this, this._ctx, this.state); this.enterRule(localctx, 26, FilterQueryParser.RULE_functionParam); try { - this.state = 202; + this.state = 208; this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 12, this._ctx) ) { + switch ( this._interp.adaptivePredict(this._input, 10, this._ctx) ) { case 1: this.enterOuterAlt(localctx, 1); { - this.state = 199; + this.state = 205; this.key(); } break; case 2: this.enterOuterAlt(localctx, 2); { - this.state = 200; + this.state = 206; this.value(); } break; case 3: this.enterOuterAlt(localctx, 3); { - this.state = 201; + this.state = 207; this.array(); } break; @@ -974,11 +964,11 @@ export default class FilterQueryParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 204; + this.state = 210; this.match(FilterQueryParser.LBRACK); - this.state = 205; + this.state = 211; this.valueList(); - this.state = 206; + this.state = 212; this.match(FilterQueryParser.RBRACK); } } @@ -1004,9 +994,9 @@ export default class FilterQueryParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 208; + this.state = 214; _la = this._input.LA(1); - if(!(((((_la - 34)) & ~0x1F) === 0 && ((1 << (_la - 34)) & 15) !== 0))) { + if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 1006632960) !== 0))) { this._errHandler.recoverInline(this); } else { @@ -1036,7 +1026,7 @@ export default class FilterQueryParser extends Parser { try { this.enterOuterAlt(localctx, 1); { - this.state = 210; + this.state = 216; this.match(FilterQueryParser.KEY); } } @@ -1055,73 +1045,74 @@ export default class FilterQueryParser extends Parser { return localctx; } - public static readonly _serializedATN: number[] = [4,1,38,213,2,0,7,0,2, + public static readonly _serializedATN: number[] = [4,1,31,219,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,1,0, - 1,0,1,0,1,0,5,0,39,8,0,10,0,12,0,42,9,0,1,0,1,0,1,1,1,1,1,2,1,2,1,2,5,2, - 51,8,2,10,2,12,2,54,9,2,1,3,1,3,1,3,1,3,5,3,60,8,3,10,3,12,3,63,9,3,1,4, - 3,4,66,8,4,1,4,1,4,1,5,1,5,1,5,1,5,1,5,1,5,1,5,3,5,77,8,5,1,6,1,6,1,6,1, - 6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1, - 6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1, - 6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1, - 6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,3,6,151,8,6,1, - 7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,3,7,163,8,7,1,8,1,8,1,8,1,8,1,8,1, - 8,1,8,1,8,1,8,1,8,3,8,175,8,8,1,9,1,9,1,9,5,9,180,8,9,10,9,12,9,183,9,9, - 1,10,1,10,1,11,1,11,1,11,1,11,1,11,1,12,1,12,1,12,5,12,195,8,12,10,12,12, - 12,198,9,12,1,13,1,13,1,13,3,13,203,8,13,1,14,1,14,1,14,1,14,1,15,1,15, - 1,16,1,16,1,16,0,0,17,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,0,6, - 1,0,28,29,1,0,7,8,2,0,13,13,15,15,2,0,14,14,16,16,1,0,30,33,1,0,34,37,227, - 0,34,1,0,0,0,2,45,1,0,0,0,4,47,1,0,0,0,6,55,1,0,0,0,8,65,1,0,0,0,10,76, - 1,0,0,0,12,150,1,0,0,0,14,162,1,0,0,0,16,174,1,0,0,0,18,176,1,0,0,0,20, - 184,1,0,0,0,22,186,1,0,0,0,24,191,1,0,0,0,26,202,1,0,0,0,28,204,1,0,0,0, - 30,208,1,0,0,0,32,210,1,0,0,0,34,40,3,2,1,0,35,36,7,0,0,0,36,39,3,2,1,0, - 37,39,3,2,1,0,38,35,1,0,0,0,38,37,1,0,0,0,39,42,1,0,0,0,40,38,1,0,0,0,40, - 41,1,0,0,0,41,43,1,0,0,0,42,40,1,0,0,0,43,44,5,0,0,1,44,1,1,0,0,0,45,46, - 3,4,2,0,46,3,1,0,0,0,47,52,3,6,3,0,48,49,5,29,0,0,49,51,3,6,3,0,50,48,1, - 0,0,0,51,54,1,0,0,0,52,50,1,0,0,0,52,53,1,0,0,0,53,5,1,0,0,0,54,52,1,0, - 0,0,55,61,3,8,4,0,56,57,5,28,0,0,57,60,3,8,4,0,58,60,3,8,4,0,59,56,1,0, - 0,0,59,58,1,0,0,0,60,63,1,0,0,0,61,59,1,0,0,0,61,62,1,0,0,0,62,7,1,0,0, - 0,63,61,1,0,0,0,64,66,5,27,0,0,65,64,1,0,0,0,65,66,1,0,0,0,66,67,1,0,0, - 0,67,68,3,10,5,0,68,9,1,0,0,0,69,70,5,1,0,0,70,71,3,4,2,0,71,72,5,2,0,0, - 72,77,1,0,0,0,73,77,3,12,6,0,74,77,3,22,11,0,75,77,3,20,10,0,76,69,1,0, - 0,0,76,73,1,0,0,0,76,74,1,0,0,0,76,75,1,0,0,0,77,11,1,0,0,0,78,79,3,32, - 16,0,79,80,5,6,0,0,80,81,3,30,15,0,81,151,1,0,0,0,82,83,3,32,16,0,83,84, - 7,1,0,0,84,85,3,30,15,0,85,151,1,0,0,0,86,87,3,32,16,0,87,88,5,9,0,0,88, - 89,3,30,15,0,89,151,1,0,0,0,90,91,3,32,16,0,91,92,5,10,0,0,92,93,3,30,15, - 0,93,151,1,0,0,0,94,95,3,32,16,0,95,96,5,11,0,0,96,97,3,30,15,0,97,151, - 1,0,0,0,98,99,3,32,16,0,99,100,5,12,0,0,100,101,3,30,15,0,101,151,1,0,0, - 0,102,103,3,32,16,0,103,104,7,2,0,0,104,105,3,30,15,0,105,151,1,0,0,0,106, - 107,3,32,16,0,107,108,7,3,0,0,108,109,3,30,15,0,109,151,1,0,0,0,110,111, - 3,32,16,0,111,112,5,17,0,0,112,113,3,30,15,0,113,114,5,28,0,0,114,115,3, - 30,15,0,115,151,1,0,0,0,116,117,3,32,16,0,117,118,5,18,0,0,118,119,3,30, - 15,0,119,120,5,28,0,0,120,121,3,30,15,0,121,151,1,0,0,0,122,123,3,32,16, - 0,123,124,3,14,7,0,124,151,1,0,0,0,125,126,3,32,16,0,126,127,3,16,8,0,127, - 151,1,0,0,0,128,129,3,32,16,0,129,130,5,19,0,0,130,151,1,0,0,0,131,132, - 3,32,16,0,132,133,5,20,0,0,133,151,1,0,0,0,134,135,3,32,16,0,135,136,5, - 21,0,0,136,137,3,30,15,0,137,151,1,0,0,0,138,139,3,32,16,0,139,140,5,22, - 0,0,140,141,3,30,15,0,141,151,1,0,0,0,142,143,3,32,16,0,143,144,5,23,0, - 0,144,145,3,30,15,0,145,151,1,0,0,0,146,147,3,32,16,0,147,148,5,24,0,0, - 148,149,3,30,15,0,149,151,1,0,0,0,150,78,1,0,0,0,150,82,1,0,0,0,150,86, - 1,0,0,0,150,90,1,0,0,0,150,94,1,0,0,0,150,98,1,0,0,0,150,102,1,0,0,0,150, - 106,1,0,0,0,150,110,1,0,0,0,150,116,1,0,0,0,150,122,1,0,0,0,150,125,1,0, - 0,0,150,128,1,0,0,0,150,131,1,0,0,0,150,134,1,0,0,0,150,138,1,0,0,0,150, - 142,1,0,0,0,150,146,1,0,0,0,151,13,1,0,0,0,152,153,5,25,0,0,153,154,5,1, - 0,0,154,155,3,18,9,0,155,156,5,2,0,0,156,163,1,0,0,0,157,158,5,25,0,0,158, - 159,5,3,0,0,159,160,3,18,9,0,160,161,5,4,0,0,161,163,1,0,0,0,162,152,1, - 0,0,0,162,157,1,0,0,0,163,15,1,0,0,0,164,165,5,26,0,0,165,166,5,1,0,0,166, - 167,3,18,9,0,167,168,5,2,0,0,168,175,1,0,0,0,169,170,5,26,0,0,170,171,5, - 3,0,0,171,172,3,18,9,0,172,173,5,4,0,0,173,175,1,0,0,0,174,164,1,0,0,0, - 174,169,1,0,0,0,175,17,1,0,0,0,176,181,3,30,15,0,177,178,5,5,0,0,178,180, - 3,30,15,0,179,177,1,0,0,0,180,183,1,0,0,0,181,179,1,0,0,0,181,182,1,0,0, - 0,182,19,1,0,0,0,183,181,1,0,0,0,184,185,5,36,0,0,185,21,1,0,0,0,186,187, - 7,4,0,0,187,188,5,1,0,0,188,189,3,24,12,0,189,190,5,2,0,0,190,23,1,0,0, - 0,191,196,3,26,13,0,192,193,5,5,0,0,193,195,3,26,13,0,194,192,1,0,0,0,195, - 198,1,0,0,0,196,194,1,0,0,0,196,197,1,0,0,0,197,25,1,0,0,0,198,196,1,0, - 0,0,199,203,3,32,16,0,200,203,3,30,15,0,201,203,3,28,14,0,202,199,1,0,0, - 0,202,200,1,0,0,0,202,201,1,0,0,0,203,27,1,0,0,0,204,205,5,3,0,0,205,206, - 3,18,9,0,206,207,5,4,0,0,207,29,1,0,0,0,208,209,7,5,0,0,209,31,1,0,0,0, - 210,211,5,37,0,0,211,33,1,0,0,0,13,38,40,52,59,61,65,76,150,162,174,181, - 196,202]; + 1,0,1,0,1,1,1,1,1,2,1,2,1,2,5,2,43,8,2,10,2,12,2,46,9,2,1,3,1,3,1,3,1,3, + 5,3,52,8,3,10,3,12,3,55,9,3,1,4,3,4,58,8,4,1,4,1,4,1,5,1,5,1,5,1,5,1,5, + 1,5,1,5,1,5,1,5,3,5,71,8,5,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6, + 1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6, + 1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6, + 1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6, + 1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,3,6,150,8,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,3,7,164,8,7,1,8,1,8,1,8,1,8,1,8,1,8, + 1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,181,8,8,1,9,1,9,1,9,5,9,186,8,9, + 10,9,12,9,189,9,9,1,10,1,10,1,11,1,11,1,11,1,11,1,11,1,12,1,12,1,12,5,12, + 201,8,12,10,12,12,12,204,9,12,1,13,1,13,1,13,3,13,209,8,13,1,14,1,14,1, + 14,1,14,1,15,1,15,1,16,1,16,1,16,0,0,17,0,2,4,6,8,10,12,14,16,18,20,22, + 24,26,28,30,32,0,5,1,0,7,8,1,0,13,14,2,0,28,28,31,31,1,0,23,25,1,0,26,29, + 235,0,34,1,0,0,0,2,37,1,0,0,0,4,39,1,0,0,0,6,47,1,0,0,0,8,57,1,0,0,0,10, + 70,1,0,0,0,12,149,1,0,0,0,14,163,1,0,0,0,16,180,1,0,0,0,18,182,1,0,0,0, + 20,190,1,0,0,0,22,192,1,0,0,0,24,197,1,0,0,0,26,208,1,0,0,0,28,210,1,0, + 0,0,30,214,1,0,0,0,32,216,1,0,0,0,34,35,3,2,1,0,35,36,5,0,0,1,36,1,1,0, + 0,0,37,38,3,4,2,0,38,3,1,0,0,0,39,44,3,6,3,0,40,41,5,22,0,0,41,43,3,6,3, + 0,42,40,1,0,0,0,43,46,1,0,0,0,44,42,1,0,0,0,44,45,1,0,0,0,45,5,1,0,0,0, + 46,44,1,0,0,0,47,53,3,8,4,0,48,49,5,21,0,0,49,52,3,8,4,0,50,52,3,8,4,0, + 51,48,1,0,0,0,51,50,1,0,0,0,52,55,1,0,0,0,53,51,1,0,0,0,53,54,1,0,0,0,54, + 7,1,0,0,0,55,53,1,0,0,0,56,58,5,20,0,0,57,56,1,0,0,0,57,58,1,0,0,0,58,59, + 1,0,0,0,59,60,3,10,5,0,60,9,1,0,0,0,61,62,5,1,0,0,62,63,3,4,2,0,63,64,5, + 2,0,0,64,71,1,0,0,0,65,71,3,12,6,0,66,71,3,22,11,0,67,71,3,20,10,0,68,71, + 3,32,16,0,69,71,3,30,15,0,70,61,1,0,0,0,70,65,1,0,0,0,70,66,1,0,0,0,70, + 67,1,0,0,0,70,68,1,0,0,0,70,69,1,0,0,0,71,11,1,0,0,0,72,73,3,32,16,0,73, + 74,5,6,0,0,74,75,3,30,15,0,75,150,1,0,0,0,76,77,3,32,16,0,77,78,7,0,0,0, + 78,79,3,30,15,0,79,150,1,0,0,0,80,81,3,32,16,0,81,82,5,9,0,0,82,83,3,30, + 15,0,83,150,1,0,0,0,84,85,3,32,16,0,85,86,5,10,0,0,86,87,3,30,15,0,87,150, + 1,0,0,0,88,89,3,32,16,0,89,90,5,11,0,0,90,91,3,30,15,0,91,150,1,0,0,0,92, + 93,3,32,16,0,93,94,5,12,0,0,94,95,3,30,15,0,95,150,1,0,0,0,96,97,3,32,16, + 0,97,98,7,1,0,0,98,99,3,30,15,0,99,150,1,0,0,0,100,101,3,32,16,0,101,102, + 5,20,0,0,102,103,7,1,0,0,103,104,3,30,15,0,104,150,1,0,0,0,105,106,3,32, + 16,0,106,107,5,15,0,0,107,108,3,30,15,0,108,109,5,21,0,0,109,110,3,30,15, + 0,110,150,1,0,0,0,111,112,3,32,16,0,112,113,5,20,0,0,113,114,5,15,0,0,114, + 115,3,30,15,0,115,116,5,21,0,0,116,117,3,30,15,0,117,150,1,0,0,0,118,119, + 3,32,16,0,119,120,3,14,7,0,120,150,1,0,0,0,121,122,3,32,16,0,122,123,3, + 16,8,0,123,150,1,0,0,0,124,125,3,32,16,0,125,126,5,16,0,0,126,150,1,0,0, + 0,127,128,3,32,16,0,128,129,5,20,0,0,129,130,5,16,0,0,130,150,1,0,0,0,131, + 132,3,32,16,0,132,133,5,17,0,0,133,134,3,30,15,0,134,150,1,0,0,0,135,136, + 3,32,16,0,136,137,5,20,0,0,137,138,5,17,0,0,138,139,3,30,15,0,139,150,1, + 0,0,0,140,141,3,32,16,0,141,142,5,18,0,0,142,143,3,30,15,0,143,150,1,0, + 0,0,144,145,3,32,16,0,145,146,5,20,0,0,146,147,5,18,0,0,147,148,3,30,15, + 0,148,150,1,0,0,0,149,72,1,0,0,0,149,76,1,0,0,0,149,80,1,0,0,0,149,84,1, + 0,0,0,149,88,1,0,0,0,149,92,1,0,0,0,149,96,1,0,0,0,149,100,1,0,0,0,149, + 105,1,0,0,0,149,111,1,0,0,0,149,118,1,0,0,0,149,121,1,0,0,0,149,124,1,0, + 0,0,149,127,1,0,0,0,149,131,1,0,0,0,149,135,1,0,0,0,149,140,1,0,0,0,149, + 144,1,0,0,0,150,13,1,0,0,0,151,152,5,19,0,0,152,153,5,1,0,0,153,154,3,18, + 9,0,154,155,5,2,0,0,155,164,1,0,0,0,156,157,5,19,0,0,157,158,5,3,0,0,158, + 159,3,18,9,0,159,160,5,4,0,0,160,164,1,0,0,0,161,162,5,19,0,0,162,164,3, + 30,15,0,163,151,1,0,0,0,163,156,1,0,0,0,163,161,1,0,0,0,164,15,1,0,0,0, + 165,166,5,20,0,0,166,167,5,19,0,0,167,168,5,1,0,0,168,169,3,18,9,0,169, + 170,5,2,0,0,170,181,1,0,0,0,171,172,5,20,0,0,172,173,5,19,0,0,173,174,5, + 3,0,0,174,175,3,18,9,0,175,176,5,4,0,0,176,181,1,0,0,0,177,178,5,20,0,0, + 178,179,5,19,0,0,179,181,3,30,15,0,180,165,1,0,0,0,180,171,1,0,0,0,180, + 177,1,0,0,0,181,17,1,0,0,0,182,187,3,30,15,0,183,184,5,5,0,0,184,186,3, + 30,15,0,185,183,1,0,0,0,186,189,1,0,0,0,187,185,1,0,0,0,187,188,1,0,0,0, + 188,19,1,0,0,0,189,187,1,0,0,0,190,191,7,2,0,0,191,21,1,0,0,0,192,193,7, + 3,0,0,193,194,5,1,0,0,194,195,3,24,12,0,195,196,5,2,0,0,196,23,1,0,0,0, + 197,202,3,26,13,0,198,199,5,5,0,0,199,201,3,26,13,0,200,198,1,0,0,0,201, + 204,1,0,0,0,202,200,1,0,0,0,202,203,1,0,0,0,203,25,1,0,0,0,204,202,1,0, + 0,0,205,209,3,32,16,0,206,209,3,30,15,0,207,209,3,28,14,0,208,205,1,0,0, + 0,208,206,1,0,0,0,208,207,1,0,0,0,209,27,1,0,0,0,210,211,5,3,0,0,211,212, + 3,18,9,0,212,213,5,4,0,0,213,29,1,0,0,0,214,215,7,4,0,0,215,31,1,0,0,0, + 216,217,5,29,0,0,217,33,1,0,0,0,11,44,51,53,57,70,149,163,180,187,202,208]; private static __ATN: ATN; public static get _ATN(): ATN { @@ -1142,27 +1133,12 @@ export class QueryContext extends ParserRuleContext { super(parent, invokingState); this.parser = parser; } - public expression_list(): ExpressionContext[] { - return this.getTypedRuleContexts(ExpressionContext) as ExpressionContext[]; - } - public expression(i: number): ExpressionContext { - return this.getTypedRuleContext(ExpressionContext, i) as ExpressionContext; + public expression(): ExpressionContext { + return this.getTypedRuleContext(ExpressionContext, 0) as ExpressionContext; } public EOF(): TerminalNode { return this.getToken(FilterQueryParser.EOF, 0); } - public AND_list(): TerminalNode[] { - return this.getTokens(FilterQueryParser.AND); - } - public AND(i: number): TerminalNode { - return this.getToken(FilterQueryParser.AND, i); - } - public OR_list(): TerminalNode[] { - return this.getTokens(FilterQueryParser.OR); - } - public OR(i: number): TerminalNode { - return this.getToken(FilterQueryParser.OR, i); - } public get ruleIndex(): number { return FilterQueryParser.RULE_query; } @@ -1359,6 +1335,12 @@ export class PrimaryContext extends ParserRuleContext { public fullText(): FullTextContext { return this.getTypedRuleContext(FullTextContext, 0) as FullTextContext; } + public key(): KeyContext { + return this.getTypedRuleContext(KeyContext, 0) as KeyContext; + } + public value(): ValueContext { + return this.getTypedRuleContext(ValueContext, 0) as ValueContext; + } public get ruleIndex(): number { return FilterQueryParser.RULE_primary; } @@ -1424,11 +1406,8 @@ export class ComparisonContext extends ParserRuleContext { public ILIKE(): TerminalNode { return this.getToken(FilterQueryParser.ILIKE, 0); } - public NOT_LIKE(): TerminalNode { - return this.getToken(FilterQueryParser.NOT_LIKE, 0); - } - public NOT_ILIKE(): TerminalNode { - return this.getToken(FilterQueryParser.NOT_ILIKE, 0); + public NOT(): TerminalNode { + return this.getToken(FilterQueryParser.NOT, 0); } public BETWEEN(): TerminalNode { return this.getToken(FilterQueryParser.BETWEEN, 0); @@ -1436,9 +1415,6 @@ export class ComparisonContext extends ParserRuleContext { public AND(): TerminalNode { return this.getToken(FilterQueryParser.AND, 0); } - public NOT_BETWEEN(): TerminalNode { - return this.getToken(FilterQueryParser.NOT_BETWEEN, 0); - } public inClause(): InClauseContext { return this.getTypedRuleContext(InClauseContext, 0) as InClauseContext; } @@ -1448,21 +1424,12 @@ export class ComparisonContext extends ParserRuleContext { public EXISTS(): TerminalNode { return this.getToken(FilterQueryParser.EXISTS, 0); } - public NOT_EXISTS(): TerminalNode { - return this.getToken(FilterQueryParser.NOT_EXISTS, 0); - } public REGEXP(): TerminalNode { return this.getToken(FilterQueryParser.REGEXP, 0); } - public NOT_REGEXP(): TerminalNode { - return this.getToken(FilterQueryParser.NOT_REGEXP, 0); - } public CONTAINS(): TerminalNode { return this.getToken(FilterQueryParser.CONTAINS, 0); } - public NOT_CONTAINS(): TerminalNode { - return this.getToken(FilterQueryParser.NOT_CONTAINS, 0); - } public get ruleIndex(): number { return FilterQueryParser.RULE_comparison; } @@ -1510,6 +1477,9 @@ export class InClauseContext extends ParserRuleContext { public RBRACK(): TerminalNode { return this.getToken(FilterQueryParser.RBRACK, 0); } + public value(): ValueContext { + return this.getTypedRuleContext(ValueContext, 0) as ValueContext; + } public get ruleIndex(): number { return FilterQueryParser.RULE_inClause; } @@ -1539,8 +1509,11 @@ export class NotInClauseContext extends ParserRuleContext { super(parent, invokingState); this.parser = parser; } - public NOT_IN(): TerminalNode { - return this.getToken(FilterQueryParser.NOT_IN, 0); + public NOT(): TerminalNode { + return this.getToken(FilterQueryParser.NOT, 0); + } + public IN(): TerminalNode { + return this.getToken(FilterQueryParser.IN, 0); } public LPAREN(): TerminalNode { return this.getToken(FilterQueryParser.LPAREN, 0); @@ -1557,6 +1530,9 @@ export class NotInClauseContext extends ParserRuleContext { public RBRACK(): TerminalNode { return this.getToken(FilterQueryParser.RBRACK, 0); } + public value(): ValueContext { + return this.getTypedRuleContext(ValueContext, 0) as ValueContext; + } public get ruleIndex(): number { return FilterQueryParser.RULE_notInClause; } @@ -1630,6 +1606,9 @@ export class FullTextContext extends ParserRuleContext { public QUOTED_TEXT(): TerminalNode { return this.getToken(FilterQueryParser.QUOTED_TEXT, 0); } + public FREETEXT(): TerminalNode { + return this.getToken(FilterQueryParser.FREETEXT, 0); + } public get ruleIndex(): number { return FilterQueryParser.RULE_fullText; } @@ -1677,9 +1656,6 @@ export class FunctionCallContext extends ParserRuleContext { public HASALL(): TerminalNode { return this.getToken(FilterQueryParser.HASALL, 0); } - public HASNONE(): TerminalNode { - return this.getToken(FilterQueryParser.HASNONE, 0); - } public get ruleIndex(): number { return FilterQueryParser.RULE_functionCall; } diff --git a/frontend/src/query-grammar/.antlr/FilterQuery.interp b/frontend/src/query-grammar/.antlr/FilterQuery.interp index 59028e95f718..83105ce119b2 100644 --- a/frontend/src/query-grammar/.antlr/FilterQuery.interp +++ b/frontend/src/query-grammar/.antlr/FilterQuery.interp @@ -31,13 +31,6 @@ null null null null -null -null -null -null -null -null -null token symbolic names: null @@ -54,31 +47,24 @@ LE GT GE LIKE -NOT_LIKE ILIKE -NOT_ILIKE BETWEEN -NOT_BETWEEN EXISTS -NOT_EXISTS REGEXP -NOT_REGEXP CONTAINS -NOT_CONTAINS IN -NOT_IN NOT AND OR HAS HASANY HASALL -HASNONE BOOL NUMBER QUOTED_TEXT KEY WS +FREETEXT rule names: query @@ -101,4 +87,4 @@ key atn: -[4, 1, 38, 213, 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, 1, 0, 1, 0, 1, 0, 1, 0, 5, 0, 39, 8, 0, 10, 0, 12, 0, 42, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 5, 2, 51, 8, 2, 10, 2, 12, 2, 54, 9, 2, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 60, 8, 3, 10, 3, 12, 3, 63, 9, 3, 1, 4, 3, 4, 66, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 77, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 151, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 163, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 175, 8, 8, 1, 9, 1, 9, 1, 9, 5, 9, 180, 8, 9, 10, 9, 12, 9, 183, 9, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 5, 12, 195, 8, 12, 10, 12, 12, 12, 198, 9, 12, 1, 13, 1, 13, 1, 13, 3, 13, 203, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 0, 0, 17, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 0, 6, 1, 0, 28, 29, 1, 0, 7, 8, 2, 0, 13, 13, 15, 15, 2, 0, 14, 14, 16, 16, 1, 0, 30, 33, 1, 0, 34, 37, 227, 0, 34, 1, 0, 0, 0, 2, 45, 1, 0, 0, 0, 4, 47, 1, 0, 0, 0, 6, 55, 1, 0, 0, 0, 8, 65, 1, 0, 0, 0, 10, 76, 1, 0, 0, 0, 12, 150, 1, 0, 0, 0, 14, 162, 1, 0, 0, 0, 16, 174, 1, 0, 0, 0, 18, 176, 1, 0, 0, 0, 20, 184, 1, 0, 0, 0, 22, 186, 1, 0, 0, 0, 24, 191, 1, 0, 0, 0, 26, 202, 1, 0, 0, 0, 28, 204, 1, 0, 0, 0, 30, 208, 1, 0, 0, 0, 32, 210, 1, 0, 0, 0, 34, 40, 3, 2, 1, 0, 35, 36, 7, 0, 0, 0, 36, 39, 3, 2, 1, 0, 37, 39, 3, 2, 1, 0, 38, 35, 1, 0, 0, 0, 38, 37, 1, 0, 0, 0, 39, 42, 1, 0, 0, 0, 40, 38, 1, 0, 0, 0, 40, 41, 1, 0, 0, 0, 41, 43, 1, 0, 0, 0, 42, 40, 1, 0, 0, 0, 43, 44, 5, 0, 0, 1, 44, 1, 1, 0, 0, 0, 45, 46, 3, 4, 2, 0, 46, 3, 1, 0, 0, 0, 47, 52, 3, 6, 3, 0, 48, 49, 5, 29, 0, 0, 49, 51, 3, 6, 3, 0, 50, 48, 1, 0, 0, 0, 51, 54, 1, 0, 0, 0, 52, 50, 1, 0, 0, 0, 52, 53, 1, 0, 0, 0, 53, 5, 1, 0, 0, 0, 54, 52, 1, 0, 0, 0, 55, 61, 3, 8, 4, 0, 56, 57, 5, 28, 0, 0, 57, 60, 3, 8, 4, 0, 58, 60, 3, 8, 4, 0, 59, 56, 1, 0, 0, 0, 59, 58, 1, 0, 0, 0, 60, 63, 1, 0, 0, 0, 61, 59, 1, 0, 0, 0, 61, 62, 1, 0, 0, 0, 62, 7, 1, 0, 0, 0, 63, 61, 1, 0, 0, 0, 64, 66, 5, 27, 0, 0, 65, 64, 1, 0, 0, 0, 65, 66, 1, 0, 0, 0, 66, 67, 1, 0, 0, 0, 67, 68, 3, 10, 5, 0, 68, 9, 1, 0, 0, 0, 69, 70, 5, 1, 0, 0, 70, 71, 3, 4, 2, 0, 71, 72, 5, 2, 0, 0, 72, 77, 1, 0, 0, 0, 73, 77, 3, 12, 6, 0, 74, 77, 3, 22, 11, 0, 75, 77, 3, 20, 10, 0, 76, 69, 1, 0, 0, 0, 76, 73, 1, 0, 0, 0, 76, 74, 1, 0, 0, 0, 76, 75, 1, 0, 0, 0, 77, 11, 1, 0, 0, 0, 78, 79, 3, 32, 16, 0, 79, 80, 5, 6, 0, 0, 80, 81, 3, 30, 15, 0, 81, 151, 1, 0, 0, 0, 82, 83, 3, 32, 16, 0, 83, 84, 7, 1, 0, 0, 84, 85, 3, 30, 15, 0, 85, 151, 1, 0, 0, 0, 86, 87, 3, 32, 16, 0, 87, 88, 5, 9, 0, 0, 88, 89, 3, 30, 15, 0, 89, 151, 1, 0, 0, 0, 90, 91, 3, 32, 16, 0, 91, 92, 5, 10, 0, 0, 92, 93, 3, 30, 15, 0, 93, 151, 1, 0, 0, 0, 94, 95, 3, 32, 16, 0, 95, 96, 5, 11, 0, 0, 96, 97, 3, 30, 15, 0, 97, 151, 1, 0, 0, 0, 98, 99, 3, 32, 16, 0, 99, 100, 5, 12, 0, 0, 100, 101, 3, 30, 15, 0, 101, 151, 1, 0, 0, 0, 102, 103, 3, 32, 16, 0, 103, 104, 7, 2, 0, 0, 104, 105, 3, 30, 15, 0, 105, 151, 1, 0, 0, 0, 106, 107, 3, 32, 16, 0, 107, 108, 7, 3, 0, 0, 108, 109, 3, 30, 15, 0, 109, 151, 1, 0, 0, 0, 110, 111, 3, 32, 16, 0, 111, 112, 5, 17, 0, 0, 112, 113, 3, 30, 15, 0, 113, 114, 5, 28, 0, 0, 114, 115, 3, 30, 15, 0, 115, 151, 1, 0, 0, 0, 116, 117, 3, 32, 16, 0, 117, 118, 5, 18, 0, 0, 118, 119, 3, 30, 15, 0, 119, 120, 5, 28, 0, 0, 120, 121, 3, 30, 15, 0, 121, 151, 1, 0, 0, 0, 122, 123, 3, 32, 16, 0, 123, 124, 3, 14, 7, 0, 124, 151, 1, 0, 0, 0, 125, 126, 3, 32, 16, 0, 126, 127, 3, 16, 8, 0, 127, 151, 1, 0, 0, 0, 128, 129, 3, 32, 16, 0, 129, 130, 5, 19, 0, 0, 130, 151, 1, 0, 0, 0, 131, 132, 3, 32, 16, 0, 132, 133, 5, 20, 0, 0, 133, 151, 1, 0, 0, 0, 134, 135, 3, 32, 16, 0, 135, 136, 5, 21, 0, 0, 136, 137, 3, 30, 15, 0, 137, 151, 1, 0, 0, 0, 138, 139, 3, 32, 16, 0, 139, 140, 5, 22, 0, 0, 140, 141, 3, 30, 15, 0, 141, 151, 1, 0, 0, 0, 142, 143, 3, 32, 16, 0, 143, 144, 5, 23, 0, 0, 144, 145, 3, 30, 15, 0, 145, 151, 1, 0, 0, 0, 146, 147, 3, 32, 16, 0, 147, 148, 5, 24, 0, 0, 148, 149, 3, 30, 15, 0, 149, 151, 1, 0, 0, 0, 150, 78, 1, 0, 0, 0, 150, 82, 1, 0, 0, 0, 150, 86, 1, 0, 0, 0, 150, 90, 1, 0, 0, 0, 150, 94, 1, 0, 0, 0, 150, 98, 1, 0, 0, 0, 150, 102, 1, 0, 0, 0, 150, 106, 1, 0, 0, 0, 150, 110, 1, 0, 0, 0, 150, 116, 1, 0, 0, 0, 150, 122, 1, 0, 0, 0, 150, 125, 1, 0, 0, 0, 150, 128, 1, 0, 0, 0, 150, 131, 1, 0, 0, 0, 150, 134, 1, 0, 0, 0, 150, 138, 1, 0, 0, 0, 150, 142, 1, 0, 0, 0, 150, 146, 1, 0, 0, 0, 151, 13, 1, 0, 0, 0, 152, 153, 5, 25, 0, 0, 153, 154, 5, 1, 0, 0, 154, 155, 3, 18, 9, 0, 155, 156, 5, 2, 0, 0, 156, 163, 1, 0, 0, 0, 157, 158, 5, 25, 0, 0, 158, 159, 5, 3, 0, 0, 159, 160, 3, 18, 9, 0, 160, 161, 5, 4, 0, 0, 161, 163, 1, 0, 0, 0, 162, 152, 1, 0, 0, 0, 162, 157, 1, 0, 0, 0, 163, 15, 1, 0, 0, 0, 164, 165, 5, 26, 0, 0, 165, 166, 5, 1, 0, 0, 166, 167, 3, 18, 9, 0, 167, 168, 5, 2, 0, 0, 168, 175, 1, 0, 0, 0, 169, 170, 5, 26, 0, 0, 170, 171, 5, 3, 0, 0, 171, 172, 3, 18, 9, 0, 172, 173, 5, 4, 0, 0, 173, 175, 1, 0, 0, 0, 174, 164, 1, 0, 0, 0, 174, 169, 1, 0, 0, 0, 175, 17, 1, 0, 0, 0, 176, 181, 3, 30, 15, 0, 177, 178, 5, 5, 0, 0, 178, 180, 3, 30, 15, 0, 179, 177, 1, 0, 0, 0, 180, 183, 1, 0, 0, 0, 181, 179, 1, 0, 0, 0, 181, 182, 1, 0, 0, 0, 182, 19, 1, 0, 0, 0, 183, 181, 1, 0, 0, 0, 184, 185, 5, 36, 0, 0, 185, 21, 1, 0, 0, 0, 186, 187, 7, 4, 0, 0, 187, 188, 5, 1, 0, 0, 188, 189, 3, 24, 12, 0, 189, 190, 5, 2, 0, 0, 190, 23, 1, 0, 0, 0, 191, 196, 3, 26, 13, 0, 192, 193, 5, 5, 0, 0, 193, 195, 3, 26, 13, 0, 194, 192, 1, 0, 0, 0, 195, 198, 1, 0, 0, 0, 196, 194, 1, 0, 0, 0, 196, 197, 1, 0, 0, 0, 197, 25, 1, 0, 0, 0, 198, 196, 1, 0, 0, 0, 199, 203, 3, 32, 16, 0, 200, 203, 3, 30, 15, 0, 201, 203, 3, 28, 14, 0, 202, 199, 1, 0, 0, 0, 202, 200, 1, 0, 0, 0, 202, 201, 1, 0, 0, 0, 203, 27, 1, 0, 0, 0, 204, 205, 5, 3, 0, 0, 205, 206, 3, 18, 9, 0, 206, 207, 5, 4, 0, 0, 207, 29, 1, 0, 0, 0, 208, 209, 7, 5, 0, 0, 209, 31, 1, 0, 0, 0, 210, 211, 5, 37, 0, 0, 211, 33, 1, 0, 0, 0, 13, 38, 40, 52, 59, 61, 65, 76, 150, 162, 174, 181, 196, 202] \ No newline at end of file +[4, 1, 31, 219, 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, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 5, 2, 43, 8, 2, 10, 2, 12, 2, 46, 9, 2, 1, 3, 1, 3, 1, 3, 1, 3, 5, 3, 52, 8, 3, 10, 3, 12, 3, 55, 9, 3, 1, 4, 3, 4, 58, 8, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 71, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 150, 8, 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, 3, 7, 164, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 181, 8, 8, 1, 9, 1, 9, 1, 9, 5, 9, 186, 8, 9, 10, 9, 12, 9, 189, 9, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 5, 12, 201, 8, 12, 10, 12, 12, 12, 204, 9, 12, 1, 13, 1, 13, 1, 13, 3, 13, 209, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 0, 0, 17, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 0, 5, 1, 0, 7, 8, 1, 0, 13, 14, 2, 0, 28, 28, 31, 31, 1, 0, 23, 25, 1, 0, 26, 29, 235, 0, 34, 1, 0, 0, 0, 2, 37, 1, 0, 0, 0, 4, 39, 1, 0, 0, 0, 6, 47, 1, 0, 0, 0, 8, 57, 1, 0, 0, 0, 10, 70, 1, 0, 0, 0, 12, 149, 1, 0, 0, 0, 14, 163, 1, 0, 0, 0, 16, 180, 1, 0, 0, 0, 18, 182, 1, 0, 0, 0, 20, 190, 1, 0, 0, 0, 22, 192, 1, 0, 0, 0, 24, 197, 1, 0, 0, 0, 26, 208, 1, 0, 0, 0, 28, 210, 1, 0, 0, 0, 30, 214, 1, 0, 0, 0, 32, 216, 1, 0, 0, 0, 34, 35, 3, 2, 1, 0, 35, 36, 5, 0, 0, 1, 36, 1, 1, 0, 0, 0, 37, 38, 3, 4, 2, 0, 38, 3, 1, 0, 0, 0, 39, 44, 3, 6, 3, 0, 40, 41, 5, 22, 0, 0, 41, 43, 3, 6, 3, 0, 42, 40, 1, 0, 0, 0, 43, 46, 1, 0, 0, 0, 44, 42, 1, 0, 0, 0, 44, 45, 1, 0, 0, 0, 45, 5, 1, 0, 0, 0, 46, 44, 1, 0, 0, 0, 47, 53, 3, 8, 4, 0, 48, 49, 5, 21, 0, 0, 49, 52, 3, 8, 4, 0, 50, 52, 3, 8, 4, 0, 51, 48, 1, 0, 0, 0, 51, 50, 1, 0, 0, 0, 52, 55, 1, 0, 0, 0, 53, 51, 1, 0, 0, 0, 53, 54, 1, 0, 0, 0, 54, 7, 1, 0, 0, 0, 55, 53, 1, 0, 0, 0, 56, 58, 5, 20, 0, 0, 57, 56, 1, 0, 0, 0, 57, 58, 1, 0, 0, 0, 58, 59, 1, 0, 0, 0, 59, 60, 3, 10, 5, 0, 60, 9, 1, 0, 0, 0, 61, 62, 5, 1, 0, 0, 62, 63, 3, 4, 2, 0, 63, 64, 5, 2, 0, 0, 64, 71, 1, 0, 0, 0, 65, 71, 3, 12, 6, 0, 66, 71, 3, 22, 11, 0, 67, 71, 3, 20, 10, 0, 68, 71, 3, 32, 16, 0, 69, 71, 3, 30, 15, 0, 70, 61, 1, 0, 0, 0, 70, 65, 1, 0, 0, 0, 70, 66, 1, 0, 0, 0, 70, 67, 1, 0, 0, 0, 70, 68, 1, 0, 0, 0, 70, 69, 1, 0, 0, 0, 71, 11, 1, 0, 0, 0, 72, 73, 3, 32, 16, 0, 73, 74, 5, 6, 0, 0, 74, 75, 3, 30, 15, 0, 75, 150, 1, 0, 0, 0, 76, 77, 3, 32, 16, 0, 77, 78, 7, 0, 0, 0, 78, 79, 3, 30, 15, 0, 79, 150, 1, 0, 0, 0, 80, 81, 3, 32, 16, 0, 81, 82, 5, 9, 0, 0, 82, 83, 3, 30, 15, 0, 83, 150, 1, 0, 0, 0, 84, 85, 3, 32, 16, 0, 85, 86, 5, 10, 0, 0, 86, 87, 3, 30, 15, 0, 87, 150, 1, 0, 0, 0, 88, 89, 3, 32, 16, 0, 89, 90, 5, 11, 0, 0, 90, 91, 3, 30, 15, 0, 91, 150, 1, 0, 0, 0, 92, 93, 3, 32, 16, 0, 93, 94, 5, 12, 0, 0, 94, 95, 3, 30, 15, 0, 95, 150, 1, 0, 0, 0, 96, 97, 3, 32, 16, 0, 97, 98, 7, 1, 0, 0, 98, 99, 3, 30, 15, 0, 99, 150, 1, 0, 0, 0, 100, 101, 3, 32, 16, 0, 101, 102, 5, 20, 0, 0, 102, 103, 7, 1, 0, 0, 103, 104, 3, 30, 15, 0, 104, 150, 1, 0, 0, 0, 105, 106, 3, 32, 16, 0, 106, 107, 5, 15, 0, 0, 107, 108, 3, 30, 15, 0, 108, 109, 5, 21, 0, 0, 109, 110, 3, 30, 15, 0, 110, 150, 1, 0, 0, 0, 111, 112, 3, 32, 16, 0, 112, 113, 5, 20, 0, 0, 113, 114, 5, 15, 0, 0, 114, 115, 3, 30, 15, 0, 115, 116, 5, 21, 0, 0, 116, 117, 3, 30, 15, 0, 117, 150, 1, 0, 0, 0, 118, 119, 3, 32, 16, 0, 119, 120, 3, 14, 7, 0, 120, 150, 1, 0, 0, 0, 121, 122, 3, 32, 16, 0, 122, 123, 3, 16, 8, 0, 123, 150, 1, 0, 0, 0, 124, 125, 3, 32, 16, 0, 125, 126, 5, 16, 0, 0, 126, 150, 1, 0, 0, 0, 127, 128, 3, 32, 16, 0, 128, 129, 5, 20, 0, 0, 129, 130, 5, 16, 0, 0, 130, 150, 1, 0, 0, 0, 131, 132, 3, 32, 16, 0, 132, 133, 5, 17, 0, 0, 133, 134, 3, 30, 15, 0, 134, 150, 1, 0, 0, 0, 135, 136, 3, 32, 16, 0, 136, 137, 5, 20, 0, 0, 137, 138, 5, 17, 0, 0, 138, 139, 3, 30, 15, 0, 139, 150, 1, 0, 0, 0, 140, 141, 3, 32, 16, 0, 141, 142, 5, 18, 0, 0, 142, 143, 3, 30, 15, 0, 143, 150, 1, 0, 0, 0, 144, 145, 3, 32, 16, 0, 145, 146, 5, 20, 0, 0, 146, 147, 5, 18, 0, 0, 147, 148, 3, 30, 15, 0, 148, 150, 1, 0, 0, 0, 149, 72, 1, 0, 0, 0, 149, 76, 1, 0, 0, 0, 149, 80, 1, 0, 0, 0, 149, 84, 1, 0, 0, 0, 149, 88, 1, 0, 0, 0, 149, 92, 1, 0, 0, 0, 149, 96, 1, 0, 0, 0, 149, 100, 1, 0, 0, 0, 149, 105, 1, 0, 0, 0, 149, 111, 1, 0, 0, 0, 149, 118, 1, 0, 0, 0, 149, 121, 1, 0, 0, 0, 149, 124, 1, 0, 0, 0, 149, 127, 1, 0, 0, 0, 149, 131, 1, 0, 0, 0, 149, 135, 1, 0, 0, 0, 149, 140, 1, 0, 0, 0, 149, 144, 1, 0, 0, 0, 150, 13, 1, 0, 0, 0, 151, 152, 5, 19, 0, 0, 152, 153, 5, 1, 0, 0, 153, 154, 3, 18, 9, 0, 154, 155, 5, 2, 0, 0, 155, 164, 1, 0, 0, 0, 156, 157, 5, 19, 0, 0, 157, 158, 5, 3, 0, 0, 158, 159, 3, 18, 9, 0, 159, 160, 5, 4, 0, 0, 160, 164, 1, 0, 0, 0, 161, 162, 5, 19, 0, 0, 162, 164, 3, 30, 15, 0, 163, 151, 1, 0, 0, 0, 163, 156, 1, 0, 0, 0, 163, 161, 1, 0, 0, 0, 164, 15, 1, 0, 0, 0, 165, 166, 5, 20, 0, 0, 166, 167, 5, 19, 0, 0, 167, 168, 5, 1, 0, 0, 168, 169, 3, 18, 9, 0, 169, 170, 5, 2, 0, 0, 170, 181, 1, 0, 0, 0, 171, 172, 5, 20, 0, 0, 172, 173, 5, 19, 0, 0, 173, 174, 5, 3, 0, 0, 174, 175, 3, 18, 9, 0, 175, 176, 5, 4, 0, 0, 176, 181, 1, 0, 0, 0, 177, 178, 5, 20, 0, 0, 178, 179, 5, 19, 0, 0, 179, 181, 3, 30, 15, 0, 180, 165, 1, 0, 0, 0, 180, 171, 1, 0, 0, 0, 180, 177, 1, 0, 0, 0, 181, 17, 1, 0, 0, 0, 182, 187, 3, 30, 15, 0, 183, 184, 5, 5, 0, 0, 184, 186, 3, 30, 15, 0, 185, 183, 1, 0, 0, 0, 186, 189, 1, 0, 0, 0, 187, 185, 1, 0, 0, 0, 187, 188, 1, 0, 0, 0, 188, 19, 1, 0, 0, 0, 189, 187, 1, 0, 0, 0, 190, 191, 7, 2, 0, 0, 191, 21, 1, 0, 0, 0, 192, 193, 7, 3, 0, 0, 193, 194, 5, 1, 0, 0, 194, 195, 3, 24, 12, 0, 195, 196, 5, 2, 0, 0, 196, 23, 1, 0, 0, 0, 197, 202, 3, 26, 13, 0, 198, 199, 5, 5, 0, 0, 199, 201, 3, 26, 13, 0, 200, 198, 1, 0, 0, 0, 201, 204, 1, 0, 0, 0, 202, 200, 1, 0, 0, 0, 202, 203, 1, 0, 0, 0, 203, 25, 1, 0, 0, 0, 204, 202, 1, 0, 0, 0, 205, 209, 3, 32, 16, 0, 206, 209, 3, 30, 15, 0, 207, 209, 3, 28, 14, 0, 208, 205, 1, 0, 0, 0, 208, 206, 1, 0, 0, 0, 208, 207, 1, 0, 0, 0, 209, 27, 1, 0, 0, 0, 210, 211, 5, 3, 0, 0, 211, 212, 3, 18, 9, 0, 212, 213, 5, 4, 0, 0, 213, 29, 1, 0, 0, 0, 214, 215, 7, 4, 0, 0, 215, 31, 1, 0, 0, 0, 216, 217, 5, 29, 0, 0, 217, 33, 1, 0, 0, 0, 11, 44, 51, 53, 57, 70, 149, 163, 180, 187, 202, 208] \ No newline at end of file diff --git a/frontend/src/query-grammar/.antlr/FilterQuery.tokens b/frontend/src/query-grammar/.antlr/FilterQuery.tokens index 58b4f992a113..4df881075f0a 100644 --- a/frontend/src/query-grammar/.antlr/FilterQuery.tokens +++ b/frontend/src/query-grammar/.antlr/FilterQuery.tokens @@ -11,31 +11,24 @@ LE=10 GT=11 GE=12 LIKE=13 -NOT_LIKE=14 -ILIKE=15 -NOT_ILIKE=16 -BETWEEN=17 -NOT_BETWEEN=18 -EXISTS=19 -NOT_EXISTS=20 -REGEXP=21 -NOT_REGEXP=22 -CONTAINS=23 -NOT_CONTAINS=24 -IN=25 -NOT_IN=26 -NOT=27 -AND=28 -OR=29 -HAS=30 -HASANY=31 -HASALL=32 -HASNONE=33 -BOOL=34 -NUMBER=35 -QUOTED_TEXT=36 -KEY=37 -WS=38 +ILIKE=14 +BETWEEN=15 +EXISTS=16 +REGEXP=17 +CONTAINS=18 +IN=19 +NOT=20 +AND=21 +OR=22 +HAS=23 +HASANY=24 +HASALL=25 +BOOL=26 +NUMBER=27 +QUOTED_TEXT=28 +KEY=29 +WS=30 +FREETEXT=31 '('=1 ')'=2 '['=3 diff --git a/frontend/src/query-grammar/.antlr/FilterQueryLexer.interp b/frontend/src/query-grammar/.antlr/FilterQueryLexer.interp index 487550a8103b..08b40144d2c8 100644 --- a/frontend/src/query-grammar/.antlr/FilterQueryLexer.interp +++ b/frontend/src/query-grammar/.antlr/FilterQueryLexer.interp @@ -31,13 +31,6 @@ null null null null -null -null -null -null -null -null -null token symbolic names: null @@ -54,31 +47,24 @@ LE GT GE LIKE -NOT_LIKE ILIKE -NOT_ILIKE BETWEEN -NOT_BETWEEN EXISTS -NOT_EXISTS REGEXP -NOT_REGEXP CONTAINS -NOT_CONTAINS IN -NOT_IN NOT AND OR HAS HASANY HASALL -HASNONE BOOL NUMBER QUOTED_TEXT KEY WS +FREETEXT rule names: LPAREN @@ -94,32 +80,29 @@ LE GT GE LIKE -NOT_LIKE ILIKE -NOT_ILIKE BETWEEN -NOT_BETWEEN EXISTS -NOT_EXISTS REGEXP -NOT_REGEXP CONTAINS -NOT_CONTAINS IN -NOT_IN NOT AND OR HAS HASANY HASALL -HASNONE BOOL +SIGN NUMBER QUOTED_TEXT +SEGMENT +EMPTY_BRACKS +OLD_JSON_BRACKS KEY WS DIGIT +FREETEXT channel names: DEFAULT_TOKEN_CHANNEL @@ -129,4 +112,4 @@ mode names: DEFAULT_MODE atn: -[4, 0, 38, 331, 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, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 3, 5, 93, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 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, 16, 1, 17, 1, 17, 1, 17, 1, 17, 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, 18, 1, 18, 3, 18, 167, 8, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 179, 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 207, 8, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 221, 8, 23, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 279, 8, 33, 1, 34, 4, 34, 282, 8, 34, 11, 34, 12, 34, 283, 1, 34, 1, 34, 4, 34, 288, 8, 34, 11, 34, 12, 34, 289, 3, 34, 292, 8, 34, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 298, 8, 35, 10, 35, 12, 35, 301, 9, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 308, 8, 35, 10, 35, 12, 35, 311, 9, 35, 1, 35, 3, 35, 314, 8, 35, 1, 36, 1, 36, 5, 36, 318, 8, 36, 10, 36, 12, 36, 321, 9, 36, 1, 37, 4, 37, 324, 8, 37, 11, 37, 12, 37, 325, 1, 37, 1, 37, 1, 38, 1, 38, 0, 0, 39, 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, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 0, 1, 0, 27, 2, 0, 76, 76, 108, 108, 2, 0, 73, 73, 105, 105, 2, 0, 75, 75, 107, 107, 2, 0, 69, 69, 101, 101, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 84, 84, 116, 116, 2, 0, 66, 66, 98, 98, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 83, 83, 115, 115, 2, 0, 82, 82, 114, 114, 2, 0, 71, 71, 103, 103, 2, 0, 80, 80, 112, 112, 2, 0, 67, 67, 99, 99, 2, 0, 65, 65, 97, 97, 2, 0, 68, 68, 100, 100, 2, 0, 72, 72, 104, 104, 2, 0, 89, 89, 121, 121, 2, 0, 85, 85, 117, 117, 2, 0, 70, 70, 102, 102, 2, 0, 34, 34, 92, 92, 2, 0, 39, 39, 92, 92, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 6, 0, 46, 46, 48, 57, 65, 91, 93, 93, 95, 95, 97, 122, 3, 0, 9, 10, 13, 13, 32, 32, 1, 0, 48, 57, 345, 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, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 1, 79, 1, 0, 0, 0, 3, 81, 1, 0, 0, 0, 5, 83, 1, 0, 0, 0, 7, 85, 1, 0, 0, 0, 9, 87, 1, 0, 0, 0, 11, 92, 1, 0, 0, 0, 13, 94, 1, 0, 0, 0, 15, 97, 1, 0, 0, 0, 17, 100, 1, 0, 0, 0, 19, 102, 1, 0, 0, 0, 21, 105, 1, 0, 0, 0, 23, 107, 1, 0, 0, 0, 25, 110, 1, 0, 0, 0, 27, 115, 1, 0, 0, 0, 29, 124, 1, 0, 0, 0, 31, 130, 1, 0, 0, 0, 33, 140, 1, 0, 0, 0, 35, 148, 1, 0, 0, 0, 37, 160, 1, 0, 0, 0, 39, 168, 1, 0, 0, 0, 41, 180, 1, 0, 0, 0, 43, 187, 1, 0, 0, 0, 45, 198, 1, 0, 0, 0, 47, 208, 1, 0, 0, 0, 49, 222, 1, 0, 0, 0, 51, 225, 1, 0, 0, 0, 53, 232, 1, 0, 0, 0, 55, 236, 1, 0, 0, 0, 57, 240, 1, 0, 0, 0, 59, 243, 1, 0, 0, 0, 61, 247, 1, 0, 0, 0, 63, 254, 1, 0, 0, 0, 65, 261, 1, 0, 0, 0, 67, 278, 1, 0, 0, 0, 69, 281, 1, 0, 0, 0, 71, 313, 1, 0, 0, 0, 73, 315, 1, 0, 0, 0, 75, 323, 1, 0, 0, 0, 77, 329, 1, 0, 0, 0, 79, 80, 5, 40, 0, 0, 80, 2, 1, 0, 0, 0, 81, 82, 5, 41, 0, 0, 82, 4, 1, 0, 0, 0, 83, 84, 5, 91, 0, 0, 84, 6, 1, 0, 0, 0, 85, 86, 5, 93, 0, 0, 86, 8, 1, 0, 0, 0, 87, 88, 5, 44, 0, 0, 88, 10, 1, 0, 0, 0, 89, 93, 5, 61, 0, 0, 90, 91, 5, 61, 0, 0, 91, 93, 5, 61, 0, 0, 92, 89, 1, 0, 0, 0, 92, 90, 1, 0, 0, 0, 93, 12, 1, 0, 0, 0, 94, 95, 5, 33, 0, 0, 95, 96, 5, 61, 0, 0, 96, 14, 1, 0, 0, 0, 97, 98, 5, 60, 0, 0, 98, 99, 5, 62, 0, 0, 99, 16, 1, 0, 0, 0, 100, 101, 5, 60, 0, 0, 101, 18, 1, 0, 0, 0, 102, 103, 5, 60, 0, 0, 103, 104, 5, 61, 0, 0, 104, 20, 1, 0, 0, 0, 105, 106, 5, 62, 0, 0, 106, 22, 1, 0, 0, 0, 107, 108, 5, 62, 0, 0, 108, 109, 5, 61, 0, 0, 109, 24, 1, 0, 0, 0, 110, 111, 7, 0, 0, 0, 111, 112, 7, 1, 0, 0, 112, 113, 7, 2, 0, 0, 113, 114, 7, 3, 0, 0, 114, 26, 1, 0, 0, 0, 115, 116, 7, 4, 0, 0, 116, 117, 7, 5, 0, 0, 117, 118, 7, 6, 0, 0, 118, 119, 5, 95, 0, 0, 119, 120, 7, 0, 0, 0, 120, 121, 7, 1, 0, 0, 121, 122, 7, 2, 0, 0, 122, 123, 7, 3, 0, 0, 123, 28, 1, 0, 0, 0, 124, 125, 7, 1, 0, 0, 125, 126, 7, 0, 0, 0, 126, 127, 7, 1, 0, 0, 127, 128, 7, 2, 0, 0, 128, 129, 7, 3, 0, 0, 129, 30, 1, 0, 0, 0, 130, 131, 7, 4, 0, 0, 131, 132, 7, 5, 0, 0, 132, 133, 7, 6, 0, 0, 133, 134, 5, 95, 0, 0, 134, 135, 7, 1, 0, 0, 135, 136, 7, 0, 0, 0, 136, 137, 7, 1, 0, 0, 137, 138, 7, 2, 0, 0, 138, 139, 7, 3, 0, 0, 139, 32, 1, 0, 0, 0, 140, 141, 7, 7, 0, 0, 141, 142, 7, 3, 0, 0, 142, 143, 7, 6, 0, 0, 143, 144, 7, 8, 0, 0, 144, 145, 7, 3, 0, 0, 145, 146, 7, 3, 0, 0, 146, 147, 7, 4, 0, 0, 147, 34, 1, 0, 0, 0, 148, 149, 7, 4, 0, 0, 149, 150, 7, 5, 0, 0, 150, 151, 7, 6, 0, 0, 151, 152, 5, 95, 0, 0, 152, 153, 7, 7, 0, 0, 153, 154, 7, 3, 0, 0, 154, 155, 7, 6, 0, 0, 155, 156, 7, 8, 0, 0, 156, 157, 7, 3, 0, 0, 157, 158, 7, 3, 0, 0, 158, 159, 7, 4, 0, 0, 159, 36, 1, 0, 0, 0, 160, 161, 7, 3, 0, 0, 161, 162, 7, 9, 0, 0, 162, 163, 7, 1, 0, 0, 163, 164, 7, 10, 0, 0, 164, 166, 7, 6, 0, 0, 165, 167, 7, 10, 0, 0, 166, 165, 1, 0, 0, 0, 166, 167, 1, 0, 0, 0, 167, 38, 1, 0, 0, 0, 168, 169, 7, 4, 0, 0, 169, 170, 7, 5, 0, 0, 170, 171, 7, 6, 0, 0, 171, 172, 5, 45, 0, 0, 172, 173, 7, 3, 0, 0, 173, 174, 7, 9, 0, 0, 174, 175, 7, 1, 0, 0, 175, 176, 7, 10, 0, 0, 176, 178, 7, 6, 0, 0, 177, 179, 7, 10, 0, 0, 178, 177, 1, 0, 0, 0, 178, 179, 1, 0, 0, 0, 179, 40, 1, 0, 0, 0, 180, 181, 7, 11, 0, 0, 181, 182, 7, 3, 0, 0, 182, 183, 7, 12, 0, 0, 183, 184, 7, 3, 0, 0, 184, 185, 7, 9, 0, 0, 185, 186, 7, 13, 0, 0, 186, 42, 1, 0, 0, 0, 187, 188, 7, 4, 0, 0, 188, 189, 7, 5, 0, 0, 189, 190, 7, 6, 0, 0, 190, 191, 5, 95, 0, 0, 191, 192, 7, 11, 0, 0, 192, 193, 7, 3, 0, 0, 193, 194, 7, 12, 0, 0, 194, 195, 7, 3, 0, 0, 195, 196, 7, 9, 0, 0, 196, 197, 7, 13, 0, 0, 197, 44, 1, 0, 0, 0, 198, 199, 7, 14, 0, 0, 199, 200, 7, 5, 0, 0, 200, 201, 7, 4, 0, 0, 201, 202, 7, 6, 0, 0, 202, 203, 7, 15, 0, 0, 203, 204, 7, 1, 0, 0, 204, 206, 7, 4, 0, 0, 205, 207, 7, 10, 0, 0, 206, 205, 1, 0, 0, 0, 206, 207, 1, 0, 0, 0, 207, 46, 1, 0, 0, 0, 208, 209, 7, 4, 0, 0, 209, 210, 7, 5, 0, 0, 210, 211, 7, 6, 0, 0, 211, 212, 5, 95, 0, 0, 212, 213, 7, 14, 0, 0, 213, 214, 7, 5, 0, 0, 214, 215, 7, 4, 0, 0, 215, 216, 7, 6, 0, 0, 216, 217, 7, 15, 0, 0, 217, 218, 7, 1, 0, 0, 218, 220, 7, 4, 0, 0, 219, 221, 7, 10, 0, 0, 220, 219, 1, 0, 0, 0, 220, 221, 1, 0, 0, 0, 221, 48, 1, 0, 0, 0, 222, 223, 7, 1, 0, 0, 223, 224, 7, 4, 0, 0, 224, 50, 1, 0, 0, 0, 225, 226, 7, 4, 0, 0, 226, 227, 7, 5, 0, 0, 227, 228, 7, 6, 0, 0, 228, 229, 5, 95, 0, 0, 229, 230, 7, 1, 0, 0, 230, 231, 7, 4, 0, 0, 231, 52, 1, 0, 0, 0, 232, 233, 7, 4, 0, 0, 233, 234, 7, 5, 0, 0, 234, 235, 7, 6, 0, 0, 235, 54, 1, 0, 0, 0, 236, 237, 7, 15, 0, 0, 237, 238, 7, 4, 0, 0, 238, 239, 7, 16, 0, 0, 239, 56, 1, 0, 0, 0, 240, 241, 7, 5, 0, 0, 241, 242, 7, 11, 0, 0, 242, 58, 1, 0, 0, 0, 243, 244, 7, 17, 0, 0, 244, 245, 7, 15, 0, 0, 245, 246, 7, 10, 0, 0, 246, 60, 1, 0, 0, 0, 247, 248, 7, 17, 0, 0, 248, 249, 7, 15, 0, 0, 249, 250, 7, 10, 0, 0, 250, 251, 7, 15, 0, 0, 251, 252, 7, 4, 0, 0, 252, 253, 7, 18, 0, 0, 253, 62, 1, 0, 0, 0, 254, 255, 7, 17, 0, 0, 255, 256, 7, 15, 0, 0, 256, 257, 7, 10, 0, 0, 257, 258, 7, 15, 0, 0, 258, 259, 7, 0, 0, 0, 259, 260, 7, 0, 0, 0, 260, 64, 1, 0, 0, 0, 261, 262, 7, 17, 0, 0, 262, 263, 7, 15, 0, 0, 263, 264, 7, 10, 0, 0, 264, 265, 7, 4, 0, 0, 265, 266, 7, 5, 0, 0, 266, 267, 7, 4, 0, 0, 267, 268, 7, 3, 0, 0, 268, 66, 1, 0, 0, 0, 269, 270, 7, 6, 0, 0, 270, 271, 7, 11, 0, 0, 271, 272, 7, 19, 0, 0, 272, 279, 7, 3, 0, 0, 273, 274, 7, 20, 0, 0, 274, 275, 7, 15, 0, 0, 275, 276, 7, 0, 0, 0, 276, 277, 7, 10, 0, 0, 277, 279, 7, 3, 0, 0, 278, 269, 1, 0, 0, 0, 278, 273, 1, 0, 0, 0, 279, 68, 1, 0, 0, 0, 280, 282, 3, 77, 38, 0, 281, 280, 1, 0, 0, 0, 282, 283, 1, 0, 0, 0, 283, 281, 1, 0, 0, 0, 283, 284, 1, 0, 0, 0, 284, 291, 1, 0, 0, 0, 285, 287, 5, 46, 0, 0, 286, 288, 3, 77, 38, 0, 287, 286, 1, 0, 0, 0, 288, 289, 1, 0, 0, 0, 289, 287, 1, 0, 0, 0, 289, 290, 1, 0, 0, 0, 290, 292, 1, 0, 0, 0, 291, 285, 1, 0, 0, 0, 291, 292, 1, 0, 0, 0, 292, 70, 1, 0, 0, 0, 293, 299, 5, 34, 0, 0, 294, 298, 8, 21, 0, 0, 295, 296, 5, 92, 0, 0, 296, 298, 9, 0, 0, 0, 297, 294, 1, 0, 0, 0, 297, 295, 1, 0, 0, 0, 298, 301, 1, 0, 0, 0, 299, 297, 1, 0, 0, 0, 299, 300, 1, 0, 0, 0, 300, 302, 1, 0, 0, 0, 301, 299, 1, 0, 0, 0, 302, 314, 5, 34, 0, 0, 303, 309, 5, 39, 0, 0, 304, 308, 8, 22, 0, 0, 305, 306, 5, 92, 0, 0, 306, 308, 9, 0, 0, 0, 307, 304, 1, 0, 0, 0, 307, 305, 1, 0, 0, 0, 308, 311, 1, 0, 0, 0, 309, 307, 1, 0, 0, 0, 309, 310, 1, 0, 0, 0, 310, 312, 1, 0, 0, 0, 311, 309, 1, 0, 0, 0, 312, 314, 5, 39, 0, 0, 313, 293, 1, 0, 0, 0, 313, 303, 1, 0, 0, 0, 314, 72, 1, 0, 0, 0, 315, 319, 7, 23, 0, 0, 316, 318, 7, 24, 0, 0, 317, 316, 1, 0, 0, 0, 318, 321, 1, 0, 0, 0, 319, 317, 1, 0, 0, 0, 319, 320, 1, 0, 0, 0, 320, 74, 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 322, 324, 7, 25, 0, 0, 323, 322, 1, 0, 0, 0, 324, 325, 1, 0, 0, 0, 325, 323, 1, 0, 0, 0, 325, 326, 1, 0, 0, 0, 326, 327, 1, 0, 0, 0, 327, 328, 6, 37, 0, 0, 328, 76, 1, 0, 0, 0, 329, 330, 7, 26, 0, 0, 330, 78, 1, 0, 0, 0, 17, 0, 92, 166, 178, 206, 220, 278, 283, 289, 291, 297, 299, 307, 309, 313, 319, 325, 1, 6, 0, 0] \ No newline at end of file +[4, 0, 31, 303, 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, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 3, 5, 87, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 130, 8, 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, 3, 17, 147, 8, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 190, 8, 25, 1, 26, 1, 26, 1, 27, 3, 27, 195, 8, 27, 1, 27, 4, 27, 198, 8, 27, 11, 27, 12, 27, 199, 1, 27, 1, 27, 5, 27, 204, 8, 27, 10, 27, 12, 27, 207, 9, 27, 3, 27, 209, 8, 27, 1, 27, 1, 27, 3, 27, 213, 8, 27, 1, 27, 4, 27, 216, 8, 27, 11, 27, 12, 27, 217, 3, 27, 220, 8, 27, 1, 27, 3, 27, 223, 8, 27, 1, 27, 1, 27, 4, 27, 227, 8, 27, 11, 27, 12, 27, 228, 1, 27, 1, 27, 3, 27, 233, 8, 27, 1, 27, 4, 27, 236, 8, 27, 11, 27, 12, 27, 237, 3, 27, 240, 8, 27, 3, 27, 242, 8, 27, 1, 28, 1, 28, 1, 28, 1, 28, 5, 28, 248, 8, 28, 10, 28, 12, 28, 251, 9, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 5, 28, 258, 8, 28, 10, 28, 12, 28, 261, 9, 28, 1, 28, 3, 28, 264, 8, 28, 1, 29, 1, 29, 5, 29, 268, 8, 29, 10, 29, 12, 29, 271, 9, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 285, 8, 32, 10, 32, 12, 32, 288, 9, 32, 1, 33, 4, 33, 291, 8, 33, 11, 33, 12, 33, 292, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 4, 35, 300, 8, 35, 11, 35, 12, 35, 301, 0, 0, 36, 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, 49, 25, 51, 26, 53, 0, 55, 27, 57, 28, 59, 0, 61, 0, 63, 0, 65, 29, 67, 30, 69, 0, 71, 31, 1, 0, 29, 2, 0, 76, 76, 108, 108, 2, 0, 73, 73, 105, 105, 2, 0, 75, 75, 107, 107, 2, 0, 69, 69, 101, 101, 2, 0, 66, 66, 98, 98, 2, 0, 84, 84, 116, 116, 2, 0, 87, 87, 119, 119, 2, 0, 78, 78, 110, 110, 2, 0, 88, 88, 120, 120, 2, 0, 83, 83, 115, 115, 2, 0, 82, 82, 114, 114, 2, 0, 71, 71, 103, 103, 2, 0, 80, 80, 112, 112, 2, 0, 67, 67, 99, 99, 2, 0, 79, 79, 111, 111, 2, 0, 65, 65, 97, 97, 2, 0, 68, 68, 100, 100, 2, 0, 72, 72, 104, 104, 2, 0, 89, 89, 121, 121, 2, 0, 85, 85, 117, 117, 2, 0, 70, 70, 102, 102, 2, 0, 43, 43, 45, 45, 2, 0, 34, 34, 92, 92, 2, 0, 39, 39, 92, 92, 3, 0, 36, 36, 65, 90, 97, 122, 6, 0, 36, 36, 45, 45, 48, 58, 65, 90, 95, 95, 97, 122, 3, 0, 9, 10, 13, 13, 32, 32, 1, 0, 48, 57, 8, 0, 9, 10, 13, 13, 32, 34, 39, 41, 44, 44, 60, 62, 91, 91, 93, 93, 325, 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, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 1, 73, 1, 0, 0, 0, 3, 75, 1, 0, 0, 0, 5, 77, 1, 0, 0, 0, 7, 79, 1, 0, 0, 0, 9, 81, 1, 0, 0, 0, 11, 86, 1, 0, 0, 0, 13, 88, 1, 0, 0, 0, 15, 91, 1, 0, 0, 0, 17, 94, 1, 0, 0, 0, 19, 96, 1, 0, 0, 0, 21, 99, 1, 0, 0, 0, 23, 101, 1, 0, 0, 0, 25, 104, 1, 0, 0, 0, 27, 109, 1, 0, 0, 0, 29, 115, 1, 0, 0, 0, 31, 123, 1, 0, 0, 0, 33, 131, 1, 0, 0, 0, 35, 138, 1, 0, 0, 0, 37, 148, 1, 0, 0, 0, 39, 151, 1, 0, 0, 0, 41, 155, 1, 0, 0, 0, 43, 159, 1, 0, 0, 0, 45, 162, 1, 0, 0, 0, 47, 166, 1, 0, 0, 0, 49, 173, 1, 0, 0, 0, 51, 189, 1, 0, 0, 0, 53, 191, 1, 0, 0, 0, 55, 241, 1, 0, 0, 0, 57, 263, 1, 0, 0, 0, 59, 265, 1, 0, 0, 0, 61, 272, 1, 0, 0, 0, 63, 275, 1, 0, 0, 0, 65, 279, 1, 0, 0, 0, 67, 290, 1, 0, 0, 0, 69, 296, 1, 0, 0, 0, 71, 299, 1, 0, 0, 0, 73, 74, 5, 40, 0, 0, 74, 2, 1, 0, 0, 0, 75, 76, 5, 41, 0, 0, 76, 4, 1, 0, 0, 0, 77, 78, 5, 91, 0, 0, 78, 6, 1, 0, 0, 0, 79, 80, 5, 93, 0, 0, 80, 8, 1, 0, 0, 0, 81, 82, 5, 44, 0, 0, 82, 10, 1, 0, 0, 0, 83, 87, 5, 61, 0, 0, 84, 85, 5, 61, 0, 0, 85, 87, 5, 61, 0, 0, 86, 83, 1, 0, 0, 0, 86, 84, 1, 0, 0, 0, 87, 12, 1, 0, 0, 0, 88, 89, 5, 33, 0, 0, 89, 90, 5, 61, 0, 0, 90, 14, 1, 0, 0, 0, 91, 92, 5, 60, 0, 0, 92, 93, 5, 62, 0, 0, 93, 16, 1, 0, 0, 0, 94, 95, 5, 60, 0, 0, 95, 18, 1, 0, 0, 0, 96, 97, 5, 60, 0, 0, 97, 98, 5, 61, 0, 0, 98, 20, 1, 0, 0, 0, 99, 100, 5, 62, 0, 0, 100, 22, 1, 0, 0, 0, 101, 102, 5, 62, 0, 0, 102, 103, 5, 61, 0, 0, 103, 24, 1, 0, 0, 0, 104, 105, 7, 0, 0, 0, 105, 106, 7, 1, 0, 0, 106, 107, 7, 2, 0, 0, 107, 108, 7, 3, 0, 0, 108, 26, 1, 0, 0, 0, 109, 110, 7, 1, 0, 0, 110, 111, 7, 0, 0, 0, 111, 112, 7, 1, 0, 0, 112, 113, 7, 2, 0, 0, 113, 114, 7, 3, 0, 0, 114, 28, 1, 0, 0, 0, 115, 116, 7, 4, 0, 0, 116, 117, 7, 3, 0, 0, 117, 118, 7, 5, 0, 0, 118, 119, 7, 6, 0, 0, 119, 120, 7, 3, 0, 0, 120, 121, 7, 3, 0, 0, 121, 122, 7, 7, 0, 0, 122, 30, 1, 0, 0, 0, 123, 124, 7, 3, 0, 0, 124, 125, 7, 8, 0, 0, 125, 126, 7, 1, 0, 0, 126, 127, 7, 9, 0, 0, 127, 129, 7, 5, 0, 0, 128, 130, 7, 9, 0, 0, 129, 128, 1, 0, 0, 0, 129, 130, 1, 0, 0, 0, 130, 32, 1, 0, 0, 0, 131, 132, 7, 10, 0, 0, 132, 133, 7, 3, 0, 0, 133, 134, 7, 11, 0, 0, 134, 135, 7, 3, 0, 0, 135, 136, 7, 8, 0, 0, 136, 137, 7, 12, 0, 0, 137, 34, 1, 0, 0, 0, 138, 139, 7, 13, 0, 0, 139, 140, 7, 14, 0, 0, 140, 141, 7, 7, 0, 0, 141, 142, 7, 5, 0, 0, 142, 143, 7, 15, 0, 0, 143, 144, 7, 1, 0, 0, 144, 146, 7, 7, 0, 0, 145, 147, 7, 9, 0, 0, 146, 145, 1, 0, 0, 0, 146, 147, 1, 0, 0, 0, 147, 36, 1, 0, 0, 0, 148, 149, 7, 1, 0, 0, 149, 150, 7, 7, 0, 0, 150, 38, 1, 0, 0, 0, 151, 152, 7, 7, 0, 0, 152, 153, 7, 14, 0, 0, 153, 154, 7, 5, 0, 0, 154, 40, 1, 0, 0, 0, 155, 156, 7, 15, 0, 0, 156, 157, 7, 7, 0, 0, 157, 158, 7, 16, 0, 0, 158, 42, 1, 0, 0, 0, 159, 160, 7, 14, 0, 0, 160, 161, 7, 10, 0, 0, 161, 44, 1, 0, 0, 0, 162, 163, 7, 17, 0, 0, 163, 164, 7, 15, 0, 0, 164, 165, 7, 9, 0, 0, 165, 46, 1, 0, 0, 0, 166, 167, 7, 17, 0, 0, 167, 168, 7, 15, 0, 0, 168, 169, 7, 9, 0, 0, 169, 170, 7, 15, 0, 0, 170, 171, 7, 7, 0, 0, 171, 172, 7, 18, 0, 0, 172, 48, 1, 0, 0, 0, 173, 174, 7, 17, 0, 0, 174, 175, 7, 15, 0, 0, 175, 176, 7, 9, 0, 0, 176, 177, 7, 15, 0, 0, 177, 178, 7, 0, 0, 0, 178, 179, 7, 0, 0, 0, 179, 50, 1, 0, 0, 0, 180, 181, 7, 5, 0, 0, 181, 182, 7, 10, 0, 0, 182, 183, 7, 19, 0, 0, 183, 190, 7, 3, 0, 0, 184, 185, 7, 20, 0, 0, 185, 186, 7, 15, 0, 0, 186, 187, 7, 0, 0, 0, 187, 188, 7, 9, 0, 0, 188, 190, 7, 3, 0, 0, 189, 180, 1, 0, 0, 0, 189, 184, 1, 0, 0, 0, 190, 52, 1, 0, 0, 0, 191, 192, 7, 21, 0, 0, 192, 54, 1, 0, 0, 0, 193, 195, 3, 53, 26, 0, 194, 193, 1, 0, 0, 0, 194, 195, 1, 0, 0, 0, 195, 197, 1, 0, 0, 0, 196, 198, 3, 69, 34, 0, 197, 196, 1, 0, 0, 0, 198, 199, 1, 0, 0, 0, 199, 197, 1, 0, 0, 0, 199, 200, 1, 0, 0, 0, 200, 208, 1, 0, 0, 0, 201, 205, 5, 46, 0, 0, 202, 204, 3, 69, 34, 0, 203, 202, 1, 0, 0, 0, 204, 207, 1, 0, 0, 0, 205, 203, 1, 0, 0, 0, 205, 206, 1, 0, 0, 0, 206, 209, 1, 0, 0, 0, 207, 205, 1, 0, 0, 0, 208, 201, 1, 0, 0, 0, 208, 209, 1, 0, 0, 0, 209, 219, 1, 0, 0, 0, 210, 212, 7, 3, 0, 0, 211, 213, 3, 53, 26, 0, 212, 211, 1, 0, 0, 0, 212, 213, 1, 0, 0, 0, 213, 215, 1, 0, 0, 0, 214, 216, 3, 69, 34, 0, 215, 214, 1, 0, 0, 0, 216, 217, 1, 0, 0, 0, 217, 215, 1, 0, 0, 0, 217, 218, 1, 0, 0, 0, 218, 220, 1, 0, 0, 0, 219, 210, 1, 0, 0, 0, 219, 220, 1, 0, 0, 0, 220, 242, 1, 0, 0, 0, 221, 223, 3, 53, 26, 0, 222, 221, 1, 0, 0, 0, 222, 223, 1, 0, 0, 0, 223, 224, 1, 0, 0, 0, 224, 226, 5, 46, 0, 0, 225, 227, 3, 69, 34, 0, 226, 225, 1, 0, 0, 0, 227, 228, 1, 0, 0, 0, 228, 226, 1, 0, 0, 0, 228, 229, 1, 0, 0, 0, 229, 239, 1, 0, 0, 0, 230, 232, 7, 3, 0, 0, 231, 233, 3, 53, 26, 0, 232, 231, 1, 0, 0, 0, 232, 233, 1, 0, 0, 0, 233, 235, 1, 0, 0, 0, 234, 236, 3, 69, 34, 0, 235, 234, 1, 0, 0, 0, 236, 237, 1, 0, 0, 0, 237, 235, 1, 0, 0, 0, 237, 238, 1, 0, 0, 0, 238, 240, 1, 0, 0, 0, 239, 230, 1, 0, 0, 0, 239, 240, 1, 0, 0, 0, 240, 242, 1, 0, 0, 0, 241, 194, 1, 0, 0, 0, 241, 222, 1, 0, 0, 0, 242, 56, 1, 0, 0, 0, 243, 249, 5, 34, 0, 0, 244, 248, 8, 22, 0, 0, 245, 246, 5, 92, 0, 0, 246, 248, 9, 0, 0, 0, 247, 244, 1, 0, 0, 0, 247, 245, 1, 0, 0, 0, 248, 251, 1, 0, 0, 0, 249, 247, 1, 0, 0, 0, 249, 250, 1, 0, 0, 0, 250, 252, 1, 0, 0, 0, 251, 249, 1, 0, 0, 0, 252, 264, 5, 34, 0, 0, 253, 259, 5, 39, 0, 0, 254, 258, 8, 23, 0, 0, 255, 256, 5, 92, 0, 0, 256, 258, 9, 0, 0, 0, 257, 254, 1, 0, 0, 0, 257, 255, 1, 0, 0, 0, 258, 261, 1, 0, 0, 0, 259, 257, 1, 0, 0, 0, 259, 260, 1, 0, 0, 0, 260, 262, 1, 0, 0, 0, 261, 259, 1, 0, 0, 0, 262, 264, 5, 39, 0, 0, 263, 243, 1, 0, 0, 0, 263, 253, 1, 0, 0, 0, 264, 58, 1, 0, 0, 0, 265, 269, 7, 24, 0, 0, 266, 268, 7, 25, 0, 0, 267, 266, 1, 0, 0, 0, 268, 271, 1, 0, 0, 0, 269, 267, 1, 0, 0, 0, 269, 270, 1, 0, 0, 0, 270, 60, 1, 0, 0, 0, 271, 269, 1, 0, 0, 0, 272, 273, 5, 91, 0, 0, 273, 274, 5, 93, 0, 0, 274, 62, 1, 0, 0, 0, 275, 276, 5, 91, 0, 0, 276, 277, 5, 42, 0, 0, 277, 278, 5, 93, 0, 0, 278, 64, 1, 0, 0, 0, 279, 286, 3, 59, 29, 0, 280, 281, 5, 46, 0, 0, 281, 285, 3, 59, 29, 0, 282, 285, 3, 61, 30, 0, 283, 285, 3, 63, 31, 0, 284, 280, 1, 0, 0, 0, 284, 282, 1, 0, 0, 0, 284, 283, 1, 0, 0, 0, 285, 288, 1, 0, 0, 0, 286, 284, 1, 0, 0, 0, 286, 287, 1, 0, 0, 0, 287, 66, 1, 0, 0, 0, 288, 286, 1, 0, 0, 0, 289, 291, 7, 26, 0, 0, 290, 289, 1, 0, 0, 0, 291, 292, 1, 0, 0, 0, 292, 290, 1, 0, 0, 0, 292, 293, 1, 0, 0, 0, 293, 294, 1, 0, 0, 0, 294, 295, 6, 33, 0, 0, 295, 68, 1, 0, 0, 0, 296, 297, 7, 27, 0, 0, 297, 70, 1, 0, 0, 0, 298, 300, 8, 28, 0, 0, 299, 298, 1, 0, 0, 0, 300, 301, 1, 0, 0, 0, 301, 299, 1, 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 72, 1, 0, 0, 0, 28, 0, 86, 129, 146, 189, 194, 199, 205, 208, 212, 217, 219, 222, 228, 232, 237, 239, 241, 247, 249, 257, 259, 263, 269, 284, 286, 292, 301, 1, 6, 0, 0] \ No newline at end of file diff --git a/frontend/src/query-grammar/.antlr/FilterQueryLexer.java b/frontend/src/query-grammar/.antlr/FilterQueryLexer.java index 0e04a2770446..394938027f86 100644 --- a/frontend/src/query-grammar/.antlr/FilterQueryLexer.java +++ b/frontend/src/query-grammar/.antlr/FilterQueryLexer.java @@ -17,11 +17,9 @@ public class FilterQueryLexer extends Lexer { new PredictionContextCache(); public static final int LPAREN=1, RPAREN=2, LBRACK=3, RBRACK=4, COMMA=5, EQUALS=6, NOT_EQUALS=7, - NEQ=8, LT=9, LE=10, GT=11, GE=12, LIKE=13, NOT_LIKE=14, ILIKE=15, NOT_ILIKE=16, - BETWEEN=17, NOT_BETWEEN=18, EXISTS=19, NOT_EXISTS=20, REGEXP=21, NOT_REGEXP=22, - CONTAINS=23, NOT_CONTAINS=24, IN=25, NOT_IN=26, NOT=27, AND=28, OR=29, - HAS=30, HASANY=31, HASALL=32, HASNONE=33, BOOL=34, NUMBER=35, QUOTED_TEXT=36, - KEY=37, WS=38; + NEQ=8, LT=9, LE=10, GT=11, GE=12, LIKE=13, ILIKE=14, BETWEEN=15, EXISTS=16, + REGEXP=17, CONTAINS=18, IN=19, NOT=20, AND=21, OR=22, HAS=23, HASANY=24, + HASALL=25, BOOL=26, NUMBER=27, QUOTED_TEXT=28, KEY=29, WS=30, FREETEXT=31; public static String[] channelNames = { "DEFAULT_TOKEN_CHANNEL", "HIDDEN" }; @@ -33,11 +31,10 @@ public class FilterQueryLexer extends Lexer { private static String[] makeRuleNames() { return new String[] { "LPAREN", "RPAREN", "LBRACK", "RBRACK", "COMMA", "EQUALS", "NOT_EQUALS", - "NEQ", "LT", "LE", "GT", "GE", "LIKE", "NOT_LIKE", "ILIKE", "NOT_ILIKE", - "BETWEEN", "NOT_BETWEEN", "EXISTS", "NOT_EXISTS", "REGEXP", "NOT_REGEXP", - "CONTAINS", "NOT_CONTAINS", "IN", "NOT_IN", "NOT", "AND", "OR", "HAS", - "HASANY", "HASALL", "HASNONE", "BOOL", "NUMBER", "QUOTED_TEXT", "KEY", - "WS", "DIGIT" + "NEQ", "LT", "LE", "GT", "GE", "LIKE", "ILIKE", "BETWEEN", "EXISTS", + "REGEXP", "CONTAINS", "IN", "NOT", "AND", "OR", "HAS", "HASANY", "HASALL", + "BOOL", "SIGN", "NUMBER", "QUOTED_TEXT", "SEGMENT", "EMPTY_BRACKS", "OLD_JSON_BRACKS", + "KEY", "WS", "DIGIT", "FREETEXT" }; } public static final String[] ruleNames = makeRuleNames(); @@ -52,11 +49,9 @@ public class FilterQueryLexer extends Lexer { private static String[] makeSymbolicNames() { return new String[] { null, "LPAREN", "RPAREN", "LBRACK", "RBRACK", "COMMA", "EQUALS", "NOT_EQUALS", - "NEQ", "LT", "LE", "GT", "GE", "LIKE", "NOT_LIKE", "ILIKE", "NOT_ILIKE", - "BETWEEN", "NOT_BETWEEN", "EXISTS", "NOT_EXISTS", "REGEXP", "NOT_REGEXP", - "CONTAINS", "NOT_CONTAINS", "IN", "NOT_IN", "NOT", "AND", "OR", "HAS", - "HASANY", "HASALL", "HASNONE", "BOOL", "NUMBER", "QUOTED_TEXT", "KEY", - "WS" + "NEQ", "LT", "LE", "GT", "GE", "LIKE", "ILIKE", "BETWEEN", "EXISTS", + "REGEXP", "CONTAINS", "IN", "NOT", "AND", "OR", "HAS", "HASANY", "HASALL", + "BOOL", "NUMBER", "QUOTED_TEXT", "KEY", "WS", "FREETEXT" }; } private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); @@ -118,223 +113,215 @@ public class FilterQueryLexer extends Lexer { public ATN getATN() { return _ATN; } public static final String _serializedATN = - "\u0004\u0000&\u014b\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002\u0001"+ - "\u0007\u0001\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004"+ - "\u0007\u0004\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007"+ - "\u0007\u0007\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b"+ - "\u0007\u000b\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002"+ - "\u000f\u0007\u000f\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002"+ - "\u0012\u0007\u0012\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002"+ - "\u0015\u0007\u0015\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002"+ - "\u0018\u0007\u0018\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a\u0002"+ - "\u001b\u0007\u001b\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d\u0002"+ - "\u001e\u0007\u001e\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!\u0007"+ - "!\u0002\"\u0007\"\u0002#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007"+ - "&\u0001\u0000\u0001\u0000\u0001\u0001\u0001\u0001\u0001\u0002\u0001\u0002"+ - "\u0001\u0003\u0001\u0003\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005"+ - "\u0001\u0005\u0003\u0005]\b\u0005\u0001\u0006\u0001\u0006\u0001\u0006"+ - "\u0001\u0007\u0001\u0007\u0001\u0007\u0001\b\u0001\b\u0001\t\u0001\t\u0001"+ - "\t\u0001\n\u0001\n\u0001\u000b\u0001\u000b\u0001\u000b\u0001\f\u0001\f"+ - "\u0001\f\u0001\f\u0001\f\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001"+ - "\r\u0001\r\u0001\r\u0001\r\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e"+ - "\u0001\u000e\u0001\u000e\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f"+ - "\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f"+ - "\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010"+ + "\u0004\u0000\u001f\u012f\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002"+ + "\u0001\u0007\u0001\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002"+ + "\u0004\u0007\u0004\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002"+ + "\u0007\u0007\u0007\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002"+ + "\u000b\u0007\u000b\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e"+ + "\u0002\u000f\u0007\u000f\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011"+ + "\u0002\u0012\u0007\u0012\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014"+ + "\u0002\u0015\u0007\u0015\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017"+ + "\u0002\u0018\u0007\u0018\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a"+ + "\u0002\u001b\u0007\u001b\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d"+ + "\u0002\u001e\u0007\u001e\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!"+ + "\u0007!\u0002\"\u0007\"\u0002#\u0007#\u0001\u0000\u0001\u0000\u0001\u0001"+ + "\u0001\u0001\u0001\u0002\u0001\u0002\u0001\u0003\u0001\u0003\u0001\u0004"+ + "\u0001\u0004\u0001\u0005\u0001\u0005\u0001\u0005\u0003\u0005W\b\u0005"+ + "\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0007\u0001\u0007\u0001\u0007"+ + "\u0001\b\u0001\b\u0001\t\u0001\t\u0001\t\u0001\n\u0001\n\u0001\u000b\u0001"+ + "\u000b\u0001\u000b\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\r\u0001"+ + "\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\u000e\u0001\u000e\u0001\u000e"+ + "\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000f"+ + "\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0003\u000f"+ + "\u0082\b\u000f\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010"+ "\u0001\u0010\u0001\u0010\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011"+ - "\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011"+ - "\u0001\u0011\u0001\u0011\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012"+ - "\u0001\u0012\u0001\u0012\u0003\u0012\u00a7\b\u0012\u0001\u0013\u0001\u0013"+ - "\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013\u0001\u0013"+ - "\u0001\u0013\u0001\u0013\u0003\u0013\u00b3\b\u0013\u0001\u0014\u0001\u0014"+ - "\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0015"+ - "\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015"+ - "\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0016\u0001\u0016"+ - "\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016"+ - "\u0003\u0016\u00cf\b\u0016\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017"+ + "\u0001\u0011\u0001\u0011\u0001\u0011\u0001\u0011\u0003\u0011\u0093\b\u0011"+ + "\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0013\u0001\u0013\u0001\u0013"+ + "\u0001\u0013\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0015"+ + "\u0001\u0015\u0001\u0015\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0016"+ "\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017\u0001\u0017"+ - "\u0001\u0017\u0001\u0017\u0003\u0017\u00dd\b\u0017\u0001\u0018\u0001\u0018"+ - "\u0001\u0018\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019"+ - "\u0001\u0019\u0001\u0019\u0001\u001a\u0001\u001a\u0001\u001a\u0001\u001a"+ - "\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001b\u0001\u001c\u0001\u001c"+ - "\u0001\u001c\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001e"+ - "\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e"+ - "\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f"+ - "\u0001\u001f\u0001 \u0001 \u0001 \u0001 \u0001 \u0001 \u0001 \u0001 \u0001"+ - "!\u0001!\u0001!\u0001!\u0001!\u0001!\u0001!\u0001!\u0001!\u0003!\u0117"+ - "\b!\u0001\"\u0004\"\u011a\b\"\u000b\"\f\"\u011b\u0001\"\u0001\"\u0004"+ - "\"\u0120\b\"\u000b\"\f\"\u0121\u0003\"\u0124\b\"\u0001#\u0001#\u0001#"+ - "\u0001#\u0005#\u012a\b#\n#\f#\u012d\t#\u0001#\u0001#\u0001#\u0001#\u0001"+ - "#\u0005#\u0134\b#\n#\f#\u0137\t#\u0001#\u0003#\u013a\b#\u0001$\u0001$"+ - "\u0005$\u013e\b$\n$\f$\u0141\t$\u0001%\u0004%\u0144\b%\u000b%\f%\u0145"+ - "\u0001%\u0001%\u0001&\u0001&\u0000\u0000\'\u0001\u0001\u0003\u0002\u0005"+ - "\u0003\u0007\u0004\t\u0005\u000b\u0006\r\u0007\u000f\b\u0011\t\u0013\n"+ - "\u0015\u000b\u0017\f\u0019\r\u001b\u000e\u001d\u000f\u001f\u0010!\u0011"+ - "#\u0012%\u0013\'\u0014)\u0015+\u0016-\u0017/\u00181\u00193\u001a5\u001b"+ - "7\u001c9\u001d;\u001e=\u001f? A!C\"E#G$I%K&M\u0000\u0001\u0000\u001b\u0002"+ - "\u0000LLll\u0002\u0000IIii\u0002\u0000KKkk\u0002\u0000EEee\u0002\u0000"+ - "NNnn\u0002\u0000OOoo\u0002\u0000TTtt\u0002\u0000BBbb\u0002\u0000WWww\u0002"+ - "\u0000XXxx\u0002\u0000SSss\u0002\u0000RRrr\u0002\u0000GGgg\u0002\u0000"+ - "PPpp\u0002\u0000CCcc\u0002\u0000AAaa\u0002\u0000DDdd\u0002\u0000HHhh\u0002"+ - "\u0000YYyy\u0002\u0000UUuu\u0002\u0000FFff\u0002\u0000\"\"\\\\\u0002\u0000"+ - "\'\'\\\\\u0004\u000009AZ__az\u0006\u0000..09A[]]__az\u0003\u0000\t\n\r"+ - "\r \u0001\u000009\u0159\u0000\u0001\u0001\u0000\u0000\u0000\u0000\u0003"+ - "\u0001\u0000\u0000\u0000\u0000\u0005\u0001\u0000\u0000\u0000\u0000\u0007"+ - "\u0001\u0000\u0000\u0000\u0000\t\u0001\u0000\u0000\u0000\u0000\u000b\u0001"+ - "\u0000\u0000\u0000\u0000\r\u0001\u0000\u0000\u0000\u0000\u000f\u0001\u0000"+ - "\u0000\u0000\u0000\u0011\u0001\u0000\u0000\u0000\u0000\u0013\u0001\u0000"+ - "\u0000\u0000\u0000\u0015\u0001\u0000\u0000\u0000\u0000\u0017\u0001\u0000"+ - "\u0000\u0000\u0000\u0019\u0001\u0000\u0000\u0000\u0000\u001b\u0001\u0000"+ - "\u0000\u0000\u0000\u001d\u0001\u0000\u0000\u0000\u0000\u001f\u0001\u0000"+ - "\u0000\u0000\u0000!\u0001\u0000\u0000\u0000\u0000#\u0001\u0000\u0000\u0000"+ - "\u0000%\u0001\u0000\u0000\u0000\u0000\'\u0001\u0000\u0000\u0000\u0000"+ - ")\u0001\u0000\u0000\u0000\u0000+\u0001\u0000\u0000\u0000\u0000-\u0001"+ - "\u0000\u0000\u0000\u0000/\u0001\u0000\u0000\u0000\u00001\u0001\u0000\u0000"+ - "\u0000\u00003\u0001\u0000\u0000\u0000\u00005\u0001\u0000\u0000\u0000\u0000"+ - "7\u0001\u0000\u0000\u0000\u00009\u0001\u0000\u0000\u0000\u0000;\u0001"+ - "\u0000\u0000\u0000\u0000=\u0001\u0000\u0000\u0000\u0000?\u0001\u0000\u0000"+ - "\u0000\u0000A\u0001\u0000\u0000\u0000\u0000C\u0001\u0000\u0000\u0000\u0000"+ - "E\u0001\u0000\u0000\u0000\u0000G\u0001\u0000\u0000\u0000\u0000I\u0001"+ - "\u0000\u0000\u0000\u0000K\u0001\u0000\u0000\u0000\u0001O\u0001\u0000\u0000"+ - "\u0000\u0003Q\u0001\u0000\u0000\u0000\u0005S\u0001\u0000\u0000\u0000\u0007"+ - "U\u0001\u0000\u0000\u0000\tW\u0001\u0000\u0000\u0000\u000b\\\u0001\u0000"+ - "\u0000\u0000\r^\u0001\u0000\u0000\u0000\u000fa\u0001\u0000\u0000\u0000"+ - "\u0011d\u0001\u0000\u0000\u0000\u0013f\u0001\u0000\u0000\u0000\u0015i"+ - "\u0001\u0000\u0000\u0000\u0017k\u0001\u0000\u0000\u0000\u0019n\u0001\u0000"+ - "\u0000\u0000\u001bs\u0001\u0000\u0000\u0000\u001d|\u0001\u0000\u0000\u0000"+ - "\u001f\u0082\u0001\u0000\u0000\u0000!\u008c\u0001\u0000\u0000\u0000#\u0094"+ - "\u0001\u0000\u0000\u0000%\u00a0\u0001\u0000\u0000\u0000\'\u00a8\u0001"+ - "\u0000\u0000\u0000)\u00b4\u0001\u0000\u0000\u0000+\u00bb\u0001\u0000\u0000"+ - "\u0000-\u00c6\u0001\u0000\u0000\u0000/\u00d0\u0001\u0000\u0000\u00001"+ - "\u00de\u0001\u0000\u0000\u00003\u00e1\u0001\u0000\u0000\u00005\u00e8\u0001"+ - "\u0000\u0000\u00007\u00ec\u0001\u0000\u0000\u00009\u00f0\u0001\u0000\u0000"+ - "\u0000;\u00f3\u0001\u0000\u0000\u0000=\u00f7\u0001\u0000\u0000\u0000?"+ - "\u00fe\u0001\u0000\u0000\u0000A\u0105\u0001\u0000\u0000\u0000C\u0116\u0001"+ - "\u0000\u0000\u0000E\u0119\u0001\u0000\u0000\u0000G\u0139\u0001\u0000\u0000"+ - "\u0000I\u013b\u0001\u0000\u0000\u0000K\u0143\u0001\u0000\u0000\u0000M"+ - "\u0149\u0001\u0000\u0000\u0000OP\u0005(\u0000\u0000P\u0002\u0001\u0000"+ - "\u0000\u0000QR\u0005)\u0000\u0000R\u0004\u0001\u0000\u0000\u0000ST\u0005"+ - "[\u0000\u0000T\u0006\u0001\u0000\u0000\u0000UV\u0005]\u0000\u0000V\b\u0001"+ - "\u0000\u0000\u0000WX\u0005,\u0000\u0000X\n\u0001\u0000\u0000\u0000Y]\u0005"+ - "=\u0000\u0000Z[\u0005=\u0000\u0000[]\u0005=\u0000\u0000\\Y\u0001\u0000"+ - "\u0000\u0000\\Z\u0001\u0000\u0000\u0000]\f\u0001\u0000\u0000\u0000^_\u0005"+ - "!\u0000\u0000_`\u0005=\u0000\u0000`\u000e\u0001\u0000\u0000\u0000ab\u0005"+ - "<\u0000\u0000bc\u0005>\u0000\u0000c\u0010\u0001\u0000\u0000\u0000de\u0005"+ - "<\u0000\u0000e\u0012\u0001\u0000\u0000\u0000fg\u0005<\u0000\u0000gh\u0005"+ - "=\u0000\u0000h\u0014\u0001\u0000\u0000\u0000ij\u0005>\u0000\u0000j\u0016"+ - "\u0001\u0000\u0000\u0000kl\u0005>\u0000\u0000lm\u0005=\u0000\u0000m\u0018"+ - "\u0001\u0000\u0000\u0000no\u0007\u0000\u0000\u0000op\u0007\u0001\u0000"+ - "\u0000pq\u0007\u0002\u0000\u0000qr\u0007\u0003\u0000\u0000r\u001a\u0001"+ - "\u0000\u0000\u0000st\u0007\u0004\u0000\u0000tu\u0007\u0005\u0000\u0000"+ - "uv\u0007\u0006\u0000\u0000vw\u0005_\u0000\u0000wx\u0007\u0000\u0000\u0000"+ - "xy\u0007\u0001\u0000\u0000yz\u0007\u0002\u0000\u0000z{\u0007\u0003\u0000"+ - "\u0000{\u001c\u0001\u0000\u0000\u0000|}\u0007\u0001\u0000\u0000}~\u0007"+ - "\u0000\u0000\u0000~\u007f\u0007\u0001\u0000\u0000\u007f\u0080\u0007\u0002"+ - "\u0000\u0000\u0080\u0081\u0007\u0003\u0000\u0000\u0081\u001e\u0001\u0000"+ - "\u0000\u0000\u0082\u0083\u0007\u0004\u0000\u0000\u0083\u0084\u0007\u0005"+ - "\u0000\u0000\u0084\u0085\u0007\u0006\u0000\u0000\u0085\u0086\u0005_\u0000"+ - "\u0000\u0086\u0087\u0007\u0001\u0000\u0000\u0087\u0088\u0007\u0000\u0000"+ - "\u0000\u0088\u0089\u0007\u0001\u0000\u0000\u0089\u008a\u0007\u0002\u0000"+ - "\u0000\u008a\u008b\u0007\u0003\u0000\u0000\u008b \u0001\u0000\u0000\u0000"+ - "\u008c\u008d\u0007\u0007\u0000\u0000\u008d\u008e\u0007\u0003\u0000\u0000"+ - "\u008e\u008f\u0007\u0006\u0000\u0000\u008f\u0090\u0007\b\u0000\u0000\u0090"+ - "\u0091\u0007\u0003\u0000\u0000\u0091\u0092\u0007\u0003\u0000\u0000\u0092"+ - "\u0093\u0007\u0004\u0000\u0000\u0093\"\u0001\u0000\u0000\u0000\u0094\u0095"+ - "\u0007\u0004\u0000\u0000\u0095\u0096\u0007\u0005\u0000\u0000\u0096\u0097"+ - "\u0007\u0006\u0000\u0000\u0097\u0098\u0005_\u0000\u0000\u0098\u0099\u0007"+ - "\u0007\u0000\u0000\u0099\u009a\u0007\u0003\u0000\u0000\u009a\u009b\u0007"+ - "\u0006\u0000\u0000\u009b\u009c\u0007\b\u0000\u0000\u009c\u009d\u0007\u0003"+ - "\u0000\u0000\u009d\u009e\u0007\u0003\u0000\u0000\u009e\u009f\u0007\u0004"+ - "\u0000\u0000\u009f$\u0001\u0000\u0000\u0000\u00a0\u00a1\u0007\u0003\u0000"+ - "\u0000\u00a1\u00a2\u0007\t\u0000\u0000\u00a2\u00a3\u0007\u0001\u0000\u0000"+ - "\u00a3\u00a4\u0007\n\u0000\u0000\u00a4\u00a6\u0007\u0006\u0000\u0000\u00a5"+ - "\u00a7\u0007\n\u0000\u0000\u00a6\u00a5\u0001\u0000\u0000\u0000\u00a6\u00a7"+ - "\u0001\u0000\u0000\u0000\u00a7&\u0001\u0000\u0000\u0000\u00a8\u00a9\u0007"+ - "\u0004\u0000\u0000\u00a9\u00aa\u0007\u0005\u0000\u0000\u00aa\u00ab\u0007"+ - "\u0006\u0000\u0000\u00ab\u00ac\u0005-\u0000\u0000\u00ac\u00ad\u0007\u0003"+ - "\u0000\u0000\u00ad\u00ae\u0007\t\u0000\u0000\u00ae\u00af\u0007\u0001\u0000"+ - "\u0000\u00af\u00b0\u0007\n\u0000\u0000\u00b0\u00b2\u0007\u0006\u0000\u0000"+ - "\u00b1\u00b3\u0007\n\u0000\u0000\u00b2\u00b1\u0001\u0000\u0000\u0000\u00b2"+ - "\u00b3\u0001\u0000\u0000\u0000\u00b3(\u0001\u0000\u0000\u0000\u00b4\u00b5"+ - "\u0007\u000b\u0000\u0000\u00b5\u00b6\u0007\u0003\u0000\u0000\u00b6\u00b7"+ - "\u0007\f\u0000\u0000\u00b7\u00b8\u0007\u0003\u0000\u0000\u00b8\u00b9\u0007"+ - "\t\u0000\u0000\u00b9\u00ba\u0007\r\u0000\u0000\u00ba*\u0001\u0000\u0000"+ - "\u0000\u00bb\u00bc\u0007\u0004\u0000\u0000\u00bc\u00bd\u0007\u0005\u0000"+ - "\u0000\u00bd\u00be\u0007\u0006\u0000\u0000\u00be\u00bf\u0005_\u0000\u0000"+ - "\u00bf\u00c0\u0007\u000b\u0000\u0000\u00c0\u00c1\u0007\u0003\u0000\u0000"+ - "\u00c1\u00c2\u0007\f\u0000\u0000\u00c2\u00c3\u0007\u0003\u0000\u0000\u00c3"+ - "\u00c4\u0007\t\u0000\u0000\u00c4\u00c5\u0007\r\u0000\u0000\u00c5,\u0001"+ - "\u0000\u0000\u0000\u00c6\u00c7\u0007\u000e\u0000\u0000\u00c7\u00c8\u0007"+ - "\u0005\u0000\u0000\u00c8\u00c9\u0007\u0004\u0000\u0000\u00c9\u00ca\u0007"+ - "\u0006\u0000\u0000\u00ca\u00cb\u0007\u000f\u0000\u0000\u00cb\u00cc\u0007"+ - "\u0001\u0000\u0000\u00cc\u00ce\u0007\u0004\u0000\u0000\u00cd\u00cf\u0007"+ - "\n\u0000\u0000\u00ce\u00cd\u0001\u0000\u0000\u0000\u00ce\u00cf\u0001\u0000"+ - "\u0000\u0000\u00cf.\u0001\u0000\u0000\u0000\u00d0\u00d1\u0007\u0004\u0000"+ - "\u0000\u00d1\u00d2\u0007\u0005\u0000\u0000\u00d2\u00d3\u0007\u0006\u0000"+ - "\u0000\u00d3\u00d4\u0005_\u0000\u0000\u00d4\u00d5\u0007\u000e\u0000\u0000"+ - "\u00d5\u00d6\u0007\u0005\u0000\u0000\u00d6\u00d7\u0007\u0004\u0000\u0000"+ - "\u00d7\u00d8\u0007\u0006\u0000\u0000\u00d8\u00d9\u0007\u000f\u0000\u0000"+ - "\u00d9\u00da\u0007\u0001\u0000\u0000\u00da\u00dc\u0007\u0004\u0000\u0000"+ - "\u00db\u00dd\u0007\n\u0000\u0000\u00dc\u00db\u0001\u0000\u0000\u0000\u00dc"+ - "\u00dd\u0001\u0000\u0000\u0000\u00dd0\u0001\u0000\u0000\u0000\u00de\u00df"+ - "\u0007\u0001\u0000\u0000\u00df\u00e0\u0007\u0004\u0000\u0000\u00e02\u0001"+ - "\u0000\u0000\u0000\u00e1\u00e2\u0007\u0004\u0000\u0000\u00e2\u00e3\u0007"+ - "\u0005\u0000\u0000\u00e3\u00e4\u0007\u0006\u0000\u0000\u00e4\u00e5\u0005"+ - "_\u0000\u0000\u00e5\u00e6\u0007\u0001\u0000\u0000\u00e6\u00e7\u0007\u0004"+ - "\u0000\u0000\u00e74\u0001\u0000\u0000\u0000\u00e8\u00e9\u0007\u0004\u0000"+ - "\u0000\u00e9\u00ea\u0007\u0005\u0000\u0000\u00ea\u00eb\u0007\u0006\u0000"+ - "\u0000\u00eb6\u0001\u0000\u0000\u0000\u00ec\u00ed\u0007\u000f\u0000\u0000"+ - "\u00ed\u00ee\u0007\u0004\u0000\u0000\u00ee\u00ef\u0007\u0010\u0000\u0000"+ - "\u00ef8\u0001\u0000\u0000\u0000\u00f0\u00f1\u0007\u0005\u0000\u0000\u00f1"+ - "\u00f2\u0007\u000b\u0000\u0000\u00f2:\u0001\u0000\u0000\u0000\u00f3\u00f4"+ - "\u0007\u0011\u0000\u0000\u00f4\u00f5\u0007\u000f\u0000\u0000\u00f5\u00f6"+ - "\u0007\n\u0000\u0000\u00f6<\u0001\u0000\u0000\u0000\u00f7\u00f8\u0007"+ - "\u0011\u0000\u0000\u00f8\u00f9\u0007\u000f\u0000\u0000\u00f9\u00fa\u0007"+ - "\n\u0000\u0000\u00fa\u00fb\u0007\u000f\u0000\u0000\u00fb\u00fc\u0007\u0004"+ - "\u0000\u0000\u00fc\u00fd\u0007\u0012\u0000\u0000\u00fd>\u0001\u0000\u0000"+ - "\u0000\u00fe\u00ff\u0007\u0011\u0000\u0000\u00ff\u0100\u0007\u000f\u0000"+ - "\u0000\u0100\u0101\u0007\n\u0000\u0000\u0101\u0102\u0007\u000f\u0000\u0000"+ - "\u0102\u0103\u0007\u0000\u0000\u0000\u0103\u0104\u0007\u0000\u0000\u0000"+ - "\u0104@\u0001\u0000\u0000\u0000\u0105\u0106\u0007\u0011\u0000\u0000\u0106"+ - "\u0107\u0007\u000f\u0000\u0000\u0107\u0108\u0007\n\u0000\u0000\u0108\u0109"+ - "\u0007\u0004\u0000\u0000\u0109\u010a\u0007\u0005\u0000\u0000\u010a\u010b"+ - "\u0007\u0004\u0000\u0000\u010b\u010c\u0007\u0003\u0000\u0000\u010cB\u0001"+ - "\u0000\u0000\u0000\u010d\u010e\u0007\u0006\u0000\u0000\u010e\u010f\u0007"+ - "\u000b\u0000\u0000\u010f\u0110\u0007\u0013\u0000\u0000\u0110\u0117\u0007"+ - "\u0003\u0000\u0000\u0111\u0112\u0007\u0014\u0000\u0000\u0112\u0113\u0007"+ - "\u000f\u0000\u0000\u0113\u0114\u0007\u0000\u0000\u0000\u0114\u0115\u0007"+ - "\n\u0000\u0000\u0115\u0117\u0007\u0003\u0000\u0000\u0116\u010d\u0001\u0000"+ - "\u0000\u0000\u0116\u0111\u0001\u0000\u0000\u0000\u0117D\u0001\u0000\u0000"+ - "\u0000\u0118\u011a\u0003M&\u0000\u0119\u0118\u0001\u0000\u0000\u0000\u011a"+ - "\u011b\u0001\u0000\u0000\u0000\u011b\u0119\u0001\u0000\u0000\u0000\u011b"+ - "\u011c\u0001\u0000\u0000\u0000\u011c\u0123\u0001\u0000\u0000\u0000\u011d"+ - "\u011f\u0005.\u0000\u0000\u011e\u0120\u0003M&\u0000\u011f\u011e\u0001"+ - "\u0000\u0000\u0000\u0120\u0121\u0001\u0000\u0000\u0000\u0121\u011f\u0001"+ - "\u0000\u0000\u0000\u0121\u0122\u0001\u0000\u0000\u0000\u0122\u0124\u0001"+ - "\u0000\u0000\u0000\u0123\u011d\u0001\u0000\u0000\u0000\u0123\u0124\u0001"+ - "\u0000\u0000\u0000\u0124F\u0001\u0000\u0000\u0000\u0125\u012b\u0005\""+ - "\u0000\u0000\u0126\u012a\b\u0015\u0000\u0000\u0127\u0128\u0005\\\u0000"+ - "\u0000\u0128\u012a\t\u0000\u0000\u0000\u0129\u0126\u0001\u0000\u0000\u0000"+ - "\u0129\u0127\u0001\u0000\u0000\u0000\u012a\u012d\u0001\u0000\u0000\u0000"+ - "\u012b\u0129\u0001\u0000\u0000\u0000\u012b\u012c\u0001\u0000\u0000\u0000"+ - "\u012c\u012e\u0001\u0000\u0000\u0000\u012d\u012b\u0001\u0000\u0000\u0000"+ - "\u012e\u013a\u0005\"\u0000\u0000\u012f\u0135\u0005\'\u0000\u0000\u0130"+ - "\u0134\b\u0016\u0000\u0000\u0131\u0132\u0005\\\u0000\u0000\u0132\u0134"+ - "\t\u0000\u0000\u0000\u0133\u0130\u0001\u0000\u0000\u0000\u0133\u0131\u0001"+ - "\u0000\u0000\u0000\u0134\u0137\u0001\u0000\u0000\u0000\u0135\u0133\u0001"+ - "\u0000\u0000\u0000\u0135\u0136\u0001\u0000\u0000\u0000\u0136\u0138\u0001"+ - "\u0000\u0000\u0000\u0137\u0135\u0001\u0000\u0000\u0000\u0138\u013a\u0005"+ - "\'\u0000\u0000\u0139\u0125\u0001\u0000\u0000\u0000\u0139\u012f\u0001\u0000"+ - "\u0000\u0000\u013aH\u0001\u0000\u0000\u0000\u013b\u013f\u0007\u0017\u0000"+ - "\u0000\u013c\u013e\u0007\u0018\u0000\u0000\u013d\u013c\u0001\u0000\u0000"+ - "\u0000\u013e\u0141\u0001\u0000\u0000\u0000\u013f\u013d\u0001\u0000\u0000"+ - "\u0000\u013f\u0140\u0001\u0000\u0000\u0000\u0140J\u0001\u0000\u0000\u0000"+ - "\u0141\u013f\u0001\u0000\u0000\u0000\u0142\u0144\u0007\u0019\u0000\u0000"+ - "\u0143\u0142\u0001\u0000\u0000\u0000\u0144\u0145\u0001\u0000\u0000\u0000"+ - "\u0145\u0143\u0001\u0000\u0000\u0000\u0145\u0146\u0001\u0000\u0000\u0000"+ - "\u0146\u0147\u0001\u0000\u0000\u0000\u0147\u0148\u0006%\u0000\u0000\u0148"+ - "L\u0001\u0000\u0000\u0000\u0149\u014a\u0007\u001a\u0000\u0000\u014aN\u0001"+ - "\u0000\u0000\u0000\u0011\u0000\\\u00a6\u00b2\u00ce\u00dc\u0116\u011b\u0121"+ - "\u0123\u0129\u012b\u0133\u0135\u0139\u013f\u0145\u0001\u0006\u0000\u0000"; + "\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018"+ + "\u0001\u0018\u0001\u0018\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019"+ + "\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0003\u0019"+ + "\u00be\b\u0019\u0001\u001a\u0001\u001a\u0001\u001b\u0003\u001b\u00c3\b"+ + "\u001b\u0001\u001b\u0004\u001b\u00c6\b\u001b\u000b\u001b\f\u001b\u00c7"+ + "\u0001\u001b\u0001\u001b\u0005\u001b\u00cc\b\u001b\n\u001b\f\u001b\u00cf"+ + "\t\u001b\u0003\u001b\u00d1\b\u001b\u0001\u001b\u0001\u001b\u0003\u001b"+ + "\u00d5\b\u001b\u0001\u001b\u0004\u001b\u00d8\b\u001b\u000b\u001b\f\u001b"+ + "\u00d9\u0003\u001b\u00dc\b\u001b\u0001\u001b\u0003\u001b\u00df\b\u001b"+ + "\u0001\u001b\u0001\u001b\u0004\u001b\u00e3\b\u001b\u000b\u001b\f\u001b"+ + "\u00e4\u0001\u001b\u0001\u001b\u0003\u001b\u00e9\b\u001b\u0001\u001b\u0004"+ + "\u001b\u00ec\b\u001b\u000b\u001b\f\u001b\u00ed\u0003\u001b\u00f0\b\u001b"+ + "\u0003\u001b\u00f2\b\u001b\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001c"+ + "\u0005\u001c\u00f8\b\u001c\n\u001c\f\u001c\u00fb\t\u001c\u0001\u001c\u0001"+ + "\u001c\u0001\u001c\u0001\u001c\u0001\u001c\u0005\u001c\u0102\b\u001c\n"+ + "\u001c\f\u001c\u0105\t\u001c\u0001\u001c\u0003\u001c\u0108\b\u001c\u0001"+ + "\u001d\u0001\u001d\u0005\u001d\u010c\b\u001d\n\u001d\f\u001d\u010f\t\u001d"+ + "\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001f\u0001\u001f\u0001\u001f"+ + "\u0001\u001f\u0001 \u0001 \u0001 \u0001 \u0001 \u0005 \u011d\b \n \f "+ + "\u0120\t \u0001!\u0004!\u0123\b!\u000b!\f!\u0124\u0001!\u0001!\u0001\""+ + "\u0001\"\u0001#\u0004#\u012c\b#\u000b#\f#\u012d\u0000\u0000$\u0001\u0001"+ + "\u0003\u0002\u0005\u0003\u0007\u0004\t\u0005\u000b\u0006\r\u0007\u000f"+ + "\b\u0011\t\u0013\n\u0015\u000b\u0017\f\u0019\r\u001b\u000e\u001d\u000f"+ + "\u001f\u0010!\u0011#\u0012%\u0013\'\u0014)\u0015+\u0016-\u0017/\u0018"+ + "1\u00193\u001a5\u00007\u001b9\u001c;\u0000=\u0000?\u0000A\u001dC\u001e"+ + "E\u0000G\u001f\u0001\u0000\u001d\u0002\u0000LLll\u0002\u0000IIii\u0002"+ + "\u0000KKkk\u0002\u0000EEee\u0002\u0000BBbb\u0002\u0000TTtt\u0002\u0000"+ + "WWww\u0002\u0000NNnn\u0002\u0000XXxx\u0002\u0000SSss\u0002\u0000RRrr\u0002"+ + "\u0000GGgg\u0002\u0000PPpp\u0002\u0000CCcc\u0002\u0000OOoo\u0002\u0000"+ + "AAaa\u0002\u0000DDdd\u0002\u0000HHhh\u0002\u0000YYyy\u0002\u0000UUuu\u0002"+ + "\u0000FFff\u0002\u0000++--\u0002\u0000\"\"\\\\\u0002\u0000\'\'\\\\\u0003"+ + "\u0000$$AZaz\u0006\u0000$$--0:AZ__az\u0003\u0000\t\n\r\r \u0001\u0000"+ + "09\b\u0000\t\n\r\r \"\'),,<>[[]]\u0145\u0000\u0001\u0001\u0000\u0000\u0000"+ + "\u0000\u0003\u0001\u0000\u0000\u0000\u0000\u0005\u0001\u0000\u0000\u0000"+ + "\u0000\u0007\u0001\u0000\u0000\u0000\u0000\t\u0001\u0000\u0000\u0000\u0000"+ + "\u000b\u0001\u0000\u0000\u0000\u0000\r\u0001\u0000\u0000\u0000\u0000\u000f"+ + "\u0001\u0000\u0000\u0000\u0000\u0011\u0001\u0000\u0000\u0000\u0000\u0013"+ + "\u0001\u0000\u0000\u0000\u0000\u0015\u0001\u0000\u0000\u0000\u0000\u0017"+ + "\u0001\u0000\u0000\u0000\u0000\u0019\u0001\u0000\u0000\u0000\u0000\u001b"+ + "\u0001\u0000\u0000\u0000\u0000\u001d\u0001\u0000\u0000\u0000\u0000\u001f"+ + "\u0001\u0000\u0000\u0000\u0000!\u0001\u0000\u0000\u0000\u0000#\u0001\u0000"+ + "\u0000\u0000\u0000%\u0001\u0000\u0000\u0000\u0000\'\u0001\u0000\u0000"+ + "\u0000\u0000)\u0001\u0000\u0000\u0000\u0000+\u0001\u0000\u0000\u0000\u0000"+ + "-\u0001\u0000\u0000\u0000\u0000/\u0001\u0000\u0000\u0000\u00001\u0001"+ + "\u0000\u0000\u0000\u00003\u0001\u0000\u0000\u0000\u00007\u0001\u0000\u0000"+ + "\u0000\u00009\u0001\u0000\u0000\u0000\u0000A\u0001\u0000\u0000\u0000\u0000"+ + "C\u0001\u0000\u0000\u0000\u0000G\u0001\u0000\u0000\u0000\u0001I\u0001"+ + "\u0000\u0000\u0000\u0003K\u0001\u0000\u0000\u0000\u0005M\u0001\u0000\u0000"+ + "\u0000\u0007O\u0001\u0000\u0000\u0000\tQ\u0001\u0000\u0000\u0000\u000b"+ + "V\u0001\u0000\u0000\u0000\rX\u0001\u0000\u0000\u0000\u000f[\u0001\u0000"+ + "\u0000\u0000\u0011^\u0001\u0000\u0000\u0000\u0013`\u0001\u0000\u0000\u0000"+ + "\u0015c\u0001\u0000\u0000\u0000\u0017e\u0001\u0000\u0000\u0000\u0019h"+ + "\u0001\u0000\u0000\u0000\u001bm\u0001\u0000\u0000\u0000\u001ds\u0001\u0000"+ + "\u0000\u0000\u001f{\u0001\u0000\u0000\u0000!\u0083\u0001\u0000\u0000\u0000"+ + "#\u008a\u0001\u0000\u0000\u0000%\u0094\u0001\u0000\u0000\u0000\'\u0097"+ + "\u0001\u0000\u0000\u0000)\u009b\u0001\u0000\u0000\u0000+\u009f\u0001\u0000"+ + "\u0000\u0000-\u00a2\u0001\u0000\u0000\u0000/\u00a6\u0001\u0000\u0000\u0000"+ + "1\u00ad\u0001\u0000\u0000\u00003\u00bd\u0001\u0000\u0000\u00005\u00bf"+ + "\u0001\u0000\u0000\u00007\u00f1\u0001\u0000\u0000\u00009\u0107\u0001\u0000"+ + "\u0000\u0000;\u0109\u0001\u0000\u0000\u0000=\u0110\u0001\u0000\u0000\u0000"+ + "?\u0113\u0001\u0000\u0000\u0000A\u0117\u0001\u0000\u0000\u0000C\u0122"+ + "\u0001\u0000\u0000\u0000E\u0128\u0001\u0000\u0000\u0000G\u012b\u0001\u0000"+ + "\u0000\u0000IJ\u0005(\u0000\u0000J\u0002\u0001\u0000\u0000\u0000KL\u0005"+ + ")\u0000\u0000L\u0004\u0001\u0000\u0000\u0000MN\u0005[\u0000\u0000N\u0006"+ + "\u0001\u0000\u0000\u0000OP\u0005]\u0000\u0000P\b\u0001\u0000\u0000\u0000"+ + "QR\u0005,\u0000\u0000R\n\u0001\u0000\u0000\u0000SW\u0005=\u0000\u0000"+ + "TU\u0005=\u0000\u0000UW\u0005=\u0000\u0000VS\u0001\u0000\u0000\u0000V"+ + "T\u0001\u0000\u0000\u0000W\f\u0001\u0000\u0000\u0000XY\u0005!\u0000\u0000"+ + "YZ\u0005=\u0000\u0000Z\u000e\u0001\u0000\u0000\u0000[\\\u0005<\u0000\u0000"+ + "\\]\u0005>\u0000\u0000]\u0010\u0001\u0000\u0000\u0000^_\u0005<\u0000\u0000"+ + "_\u0012\u0001\u0000\u0000\u0000`a\u0005<\u0000\u0000ab\u0005=\u0000\u0000"+ + "b\u0014\u0001\u0000\u0000\u0000cd\u0005>\u0000\u0000d\u0016\u0001\u0000"+ + "\u0000\u0000ef\u0005>\u0000\u0000fg\u0005=\u0000\u0000g\u0018\u0001\u0000"+ + "\u0000\u0000hi\u0007\u0000\u0000\u0000ij\u0007\u0001\u0000\u0000jk\u0007"+ + "\u0002\u0000\u0000kl\u0007\u0003\u0000\u0000l\u001a\u0001\u0000\u0000"+ + "\u0000mn\u0007\u0001\u0000\u0000no\u0007\u0000\u0000\u0000op\u0007\u0001"+ + "\u0000\u0000pq\u0007\u0002\u0000\u0000qr\u0007\u0003\u0000\u0000r\u001c"+ + "\u0001\u0000\u0000\u0000st\u0007\u0004\u0000\u0000tu\u0007\u0003\u0000"+ + "\u0000uv\u0007\u0005\u0000\u0000vw\u0007\u0006\u0000\u0000wx\u0007\u0003"+ + "\u0000\u0000xy\u0007\u0003\u0000\u0000yz\u0007\u0007\u0000\u0000z\u001e"+ + "\u0001\u0000\u0000\u0000{|\u0007\u0003\u0000\u0000|}\u0007\b\u0000\u0000"+ + "}~\u0007\u0001\u0000\u0000~\u007f\u0007\t\u0000\u0000\u007f\u0081\u0007"+ + "\u0005\u0000\u0000\u0080\u0082\u0007\t\u0000\u0000\u0081\u0080\u0001\u0000"+ + "\u0000\u0000\u0081\u0082\u0001\u0000\u0000\u0000\u0082 \u0001\u0000\u0000"+ + "\u0000\u0083\u0084\u0007\n\u0000\u0000\u0084\u0085\u0007\u0003\u0000\u0000"+ + "\u0085\u0086\u0007\u000b\u0000\u0000\u0086\u0087\u0007\u0003\u0000\u0000"+ + "\u0087\u0088\u0007\b\u0000\u0000\u0088\u0089\u0007\f\u0000\u0000\u0089"+ + "\"\u0001\u0000\u0000\u0000\u008a\u008b\u0007\r\u0000\u0000\u008b\u008c"+ + "\u0007\u000e\u0000\u0000\u008c\u008d\u0007\u0007\u0000\u0000\u008d\u008e"+ + "\u0007\u0005\u0000\u0000\u008e\u008f\u0007\u000f\u0000\u0000\u008f\u0090"+ + "\u0007\u0001\u0000\u0000\u0090\u0092\u0007\u0007\u0000\u0000\u0091\u0093"+ + "\u0007\t\u0000\u0000\u0092\u0091\u0001\u0000\u0000\u0000\u0092\u0093\u0001"+ + "\u0000\u0000\u0000\u0093$\u0001\u0000\u0000\u0000\u0094\u0095\u0007\u0001"+ + "\u0000\u0000\u0095\u0096\u0007\u0007\u0000\u0000\u0096&\u0001\u0000\u0000"+ + "\u0000\u0097\u0098\u0007\u0007\u0000\u0000\u0098\u0099\u0007\u000e\u0000"+ + "\u0000\u0099\u009a\u0007\u0005\u0000\u0000\u009a(\u0001\u0000\u0000\u0000"+ + "\u009b\u009c\u0007\u000f\u0000\u0000\u009c\u009d\u0007\u0007\u0000\u0000"+ + "\u009d\u009e\u0007\u0010\u0000\u0000\u009e*\u0001\u0000\u0000\u0000\u009f"+ + "\u00a0\u0007\u000e\u0000\u0000\u00a0\u00a1\u0007\n\u0000\u0000\u00a1,"+ + "\u0001\u0000\u0000\u0000\u00a2\u00a3\u0007\u0011\u0000\u0000\u00a3\u00a4"+ + "\u0007\u000f\u0000\u0000\u00a4\u00a5\u0007\t\u0000\u0000\u00a5.\u0001"+ + "\u0000\u0000\u0000\u00a6\u00a7\u0007\u0011\u0000\u0000\u00a7\u00a8\u0007"+ + "\u000f\u0000\u0000\u00a8\u00a9\u0007\t\u0000\u0000\u00a9\u00aa\u0007\u000f"+ + "\u0000\u0000\u00aa\u00ab\u0007\u0007\u0000\u0000\u00ab\u00ac\u0007\u0012"+ + "\u0000\u0000\u00ac0\u0001\u0000\u0000\u0000\u00ad\u00ae\u0007\u0011\u0000"+ + "\u0000\u00ae\u00af\u0007\u000f\u0000\u0000\u00af\u00b0\u0007\t\u0000\u0000"+ + "\u00b0\u00b1\u0007\u000f\u0000\u0000\u00b1\u00b2\u0007\u0000\u0000\u0000"+ + "\u00b2\u00b3\u0007\u0000\u0000\u0000\u00b32\u0001\u0000\u0000\u0000\u00b4"+ + "\u00b5\u0007\u0005\u0000\u0000\u00b5\u00b6\u0007\n\u0000\u0000\u00b6\u00b7"+ + "\u0007\u0013\u0000\u0000\u00b7\u00be\u0007\u0003\u0000\u0000\u00b8\u00b9"+ + "\u0007\u0014\u0000\u0000\u00b9\u00ba\u0007\u000f\u0000\u0000\u00ba\u00bb"+ + "\u0007\u0000\u0000\u0000\u00bb\u00bc\u0007\t\u0000\u0000\u00bc\u00be\u0007"+ + "\u0003\u0000\u0000\u00bd\u00b4\u0001\u0000\u0000\u0000\u00bd\u00b8\u0001"+ + "\u0000\u0000\u0000\u00be4\u0001\u0000\u0000\u0000\u00bf\u00c0\u0007\u0015"+ + "\u0000\u0000\u00c06\u0001\u0000\u0000\u0000\u00c1\u00c3\u00035\u001a\u0000"+ + "\u00c2\u00c1\u0001\u0000\u0000\u0000\u00c2\u00c3\u0001\u0000\u0000\u0000"+ + "\u00c3\u00c5\u0001\u0000\u0000\u0000\u00c4\u00c6\u0003E\"\u0000\u00c5"+ + "\u00c4\u0001\u0000\u0000\u0000\u00c6\u00c7\u0001\u0000\u0000\u0000\u00c7"+ + "\u00c5\u0001\u0000\u0000\u0000\u00c7\u00c8\u0001\u0000\u0000\u0000\u00c8"+ + "\u00d0\u0001\u0000\u0000\u0000\u00c9\u00cd\u0005.\u0000\u0000\u00ca\u00cc"+ + "\u0003E\"\u0000\u00cb\u00ca\u0001\u0000\u0000\u0000\u00cc\u00cf\u0001"+ + "\u0000\u0000\u0000\u00cd\u00cb\u0001\u0000\u0000\u0000\u00cd\u00ce\u0001"+ + "\u0000\u0000\u0000\u00ce\u00d1\u0001\u0000\u0000\u0000\u00cf\u00cd\u0001"+ + "\u0000\u0000\u0000\u00d0\u00c9\u0001\u0000\u0000\u0000\u00d0\u00d1\u0001"+ + "\u0000\u0000\u0000\u00d1\u00db\u0001\u0000\u0000\u0000\u00d2\u00d4\u0007"+ + "\u0003\u0000\u0000\u00d3\u00d5\u00035\u001a\u0000\u00d4\u00d3\u0001\u0000"+ + "\u0000\u0000\u00d4\u00d5\u0001\u0000\u0000\u0000\u00d5\u00d7\u0001\u0000"+ + "\u0000\u0000\u00d6\u00d8\u0003E\"\u0000\u00d7\u00d6\u0001\u0000\u0000"+ + "\u0000\u00d8\u00d9\u0001\u0000\u0000\u0000\u00d9\u00d7\u0001\u0000\u0000"+ + "\u0000\u00d9\u00da\u0001\u0000\u0000\u0000\u00da\u00dc\u0001\u0000\u0000"+ + "\u0000\u00db\u00d2\u0001\u0000\u0000\u0000\u00db\u00dc\u0001\u0000\u0000"+ + "\u0000\u00dc\u00f2\u0001\u0000\u0000\u0000\u00dd\u00df\u00035\u001a\u0000"+ + "\u00de\u00dd\u0001\u0000\u0000\u0000\u00de\u00df\u0001\u0000\u0000\u0000"+ + "\u00df\u00e0\u0001\u0000\u0000\u0000\u00e0\u00e2\u0005.\u0000\u0000\u00e1"+ + "\u00e3\u0003E\"\u0000\u00e2\u00e1\u0001\u0000\u0000\u0000\u00e3\u00e4"+ + "\u0001\u0000\u0000\u0000\u00e4\u00e2\u0001\u0000\u0000\u0000\u00e4\u00e5"+ + "\u0001\u0000\u0000\u0000\u00e5\u00ef\u0001\u0000\u0000\u0000\u00e6\u00e8"+ + "\u0007\u0003\u0000\u0000\u00e7\u00e9\u00035\u001a\u0000\u00e8\u00e7\u0001"+ + "\u0000\u0000\u0000\u00e8\u00e9\u0001\u0000\u0000\u0000\u00e9\u00eb\u0001"+ + "\u0000\u0000\u0000\u00ea\u00ec\u0003E\"\u0000\u00eb\u00ea\u0001\u0000"+ + "\u0000\u0000\u00ec\u00ed\u0001\u0000\u0000\u0000\u00ed\u00eb\u0001\u0000"+ + "\u0000\u0000\u00ed\u00ee\u0001\u0000\u0000\u0000\u00ee\u00f0\u0001\u0000"+ + "\u0000\u0000\u00ef\u00e6\u0001\u0000\u0000\u0000\u00ef\u00f0\u0001\u0000"+ + "\u0000\u0000\u00f0\u00f2\u0001\u0000\u0000\u0000\u00f1\u00c2\u0001\u0000"+ + "\u0000\u0000\u00f1\u00de\u0001\u0000\u0000\u0000\u00f28\u0001\u0000\u0000"+ + "\u0000\u00f3\u00f9\u0005\"\u0000\u0000\u00f4\u00f8\b\u0016\u0000\u0000"+ + "\u00f5\u00f6\u0005\\\u0000\u0000\u00f6\u00f8\t\u0000\u0000\u0000\u00f7"+ + "\u00f4\u0001\u0000\u0000\u0000\u00f7\u00f5\u0001\u0000\u0000\u0000\u00f8"+ + "\u00fb\u0001\u0000\u0000\u0000\u00f9\u00f7\u0001\u0000\u0000\u0000\u00f9"+ + "\u00fa\u0001\u0000\u0000\u0000\u00fa\u00fc\u0001\u0000\u0000\u0000\u00fb"+ + "\u00f9\u0001\u0000\u0000\u0000\u00fc\u0108\u0005\"\u0000\u0000\u00fd\u0103"+ + "\u0005\'\u0000\u0000\u00fe\u0102\b\u0017\u0000\u0000\u00ff\u0100\u0005"+ + "\\\u0000\u0000\u0100\u0102\t\u0000\u0000\u0000\u0101\u00fe\u0001\u0000"+ + "\u0000\u0000\u0101\u00ff\u0001\u0000\u0000\u0000\u0102\u0105\u0001\u0000"+ + "\u0000\u0000\u0103\u0101\u0001\u0000\u0000\u0000\u0103\u0104\u0001\u0000"+ + "\u0000\u0000\u0104\u0106\u0001\u0000\u0000\u0000\u0105\u0103\u0001\u0000"+ + "\u0000\u0000\u0106\u0108\u0005\'\u0000\u0000\u0107\u00f3\u0001\u0000\u0000"+ + "\u0000\u0107\u00fd\u0001\u0000\u0000\u0000\u0108:\u0001\u0000\u0000\u0000"+ + "\u0109\u010d\u0007\u0018\u0000\u0000\u010a\u010c\u0007\u0019\u0000\u0000"+ + "\u010b\u010a\u0001\u0000\u0000\u0000\u010c\u010f\u0001\u0000\u0000\u0000"+ + "\u010d\u010b\u0001\u0000\u0000\u0000\u010d\u010e\u0001\u0000\u0000\u0000"+ + "\u010e<\u0001\u0000\u0000\u0000\u010f\u010d\u0001\u0000\u0000\u0000\u0110"+ + "\u0111\u0005[\u0000\u0000\u0111\u0112\u0005]\u0000\u0000\u0112>\u0001"+ + "\u0000\u0000\u0000\u0113\u0114\u0005[\u0000\u0000\u0114\u0115\u0005*\u0000"+ + "\u0000\u0115\u0116\u0005]\u0000\u0000\u0116@\u0001\u0000\u0000\u0000\u0117"+ + "\u011e\u0003;\u001d\u0000\u0118\u0119\u0005.\u0000\u0000\u0119\u011d\u0003"+ + ";\u001d\u0000\u011a\u011d\u0003=\u001e\u0000\u011b\u011d\u0003?\u001f"+ + "\u0000\u011c\u0118\u0001\u0000\u0000\u0000\u011c\u011a\u0001\u0000\u0000"+ + "\u0000\u011c\u011b\u0001\u0000\u0000\u0000\u011d\u0120\u0001\u0000\u0000"+ + "\u0000\u011e\u011c\u0001\u0000\u0000\u0000\u011e\u011f\u0001\u0000\u0000"+ + "\u0000\u011fB\u0001\u0000\u0000\u0000\u0120\u011e\u0001\u0000\u0000\u0000"+ + "\u0121\u0123\u0007\u001a\u0000\u0000\u0122\u0121\u0001\u0000\u0000\u0000"+ + "\u0123\u0124\u0001\u0000\u0000\u0000\u0124\u0122\u0001\u0000\u0000\u0000"+ + "\u0124\u0125\u0001\u0000\u0000\u0000\u0125\u0126\u0001\u0000\u0000\u0000"+ + "\u0126\u0127\u0006!\u0000\u0000\u0127D\u0001\u0000\u0000\u0000\u0128\u0129"+ + "\u0007\u001b\u0000\u0000\u0129F\u0001\u0000\u0000\u0000\u012a\u012c\b"+ + "\u001c\u0000\u0000\u012b\u012a\u0001\u0000\u0000\u0000\u012c\u012d\u0001"+ + "\u0000\u0000\u0000\u012d\u012b\u0001\u0000\u0000\u0000\u012d\u012e\u0001"+ + "\u0000\u0000\u0000\u012eH\u0001\u0000\u0000\u0000\u001c\u0000V\u0081\u0092"+ + "\u00bd\u00c2\u00c7\u00cd\u00d0\u00d4\u00d9\u00db\u00de\u00e4\u00e8\u00ed"+ + "\u00ef\u00f1\u00f7\u00f9\u0101\u0103\u0107\u010d\u011c\u011e\u0124\u012d"+ + "\u0001\u0006\u0000\u0000"; public static final ATN _ATN = new ATNDeserializer().deserialize(_serializedATN.toCharArray()); static { diff --git a/frontend/src/query-grammar/.antlr/FilterQueryLexer.tokens b/frontend/src/query-grammar/.antlr/FilterQueryLexer.tokens index 58b4f992a113..4df881075f0a 100644 --- a/frontend/src/query-grammar/.antlr/FilterQueryLexer.tokens +++ b/frontend/src/query-grammar/.antlr/FilterQueryLexer.tokens @@ -11,31 +11,24 @@ LE=10 GT=11 GE=12 LIKE=13 -NOT_LIKE=14 -ILIKE=15 -NOT_ILIKE=16 -BETWEEN=17 -NOT_BETWEEN=18 -EXISTS=19 -NOT_EXISTS=20 -REGEXP=21 -NOT_REGEXP=22 -CONTAINS=23 -NOT_CONTAINS=24 -IN=25 -NOT_IN=26 -NOT=27 -AND=28 -OR=29 -HAS=30 -HASANY=31 -HASALL=32 -HASNONE=33 -BOOL=34 -NUMBER=35 -QUOTED_TEXT=36 -KEY=37 -WS=38 +ILIKE=14 +BETWEEN=15 +EXISTS=16 +REGEXP=17 +CONTAINS=18 +IN=19 +NOT=20 +AND=21 +OR=22 +HAS=23 +HASANY=24 +HASALL=25 +BOOL=26 +NUMBER=27 +QUOTED_TEXT=28 +KEY=29 +WS=30 +FREETEXT=31 '('=1 ')'=2 '['=3 diff --git a/frontend/src/query-grammar/.antlr/FilterQueryParser.java b/frontend/src/query-grammar/.antlr/FilterQueryParser.java index 3a5efa58b596..f066ca56567d 100644 --- a/frontend/src/query-grammar/.antlr/FilterQueryParser.java +++ b/frontend/src/query-grammar/.antlr/FilterQueryParser.java @@ -17,11 +17,9 @@ public class FilterQueryParser extends Parser { new PredictionContextCache(); public static final int LPAREN=1, RPAREN=2, LBRACK=3, RBRACK=4, COMMA=5, EQUALS=6, NOT_EQUALS=7, - NEQ=8, LT=9, LE=10, GT=11, GE=12, LIKE=13, NOT_LIKE=14, ILIKE=15, NOT_ILIKE=16, - BETWEEN=17, NOT_BETWEEN=18, EXISTS=19, NOT_EXISTS=20, REGEXP=21, NOT_REGEXP=22, - CONTAINS=23, NOT_CONTAINS=24, IN=25, NOT_IN=26, NOT=27, AND=28, OR=29, - HAS=30, HASANY=31, HASALL=32, HASNONE=33, BOOL=34, NUMBER=35, QUOTED_TEXT=36, - KEY=37, WS=38; + NEQ=8, LT=9, LE=10, GT=11, GE=12, LIKE=13, ILIKE=14, BETWEEN=15, EXISTS=16, + REGEXP=17, CONTAINS=18, IN=19, NOT=20, AND=21, OR=22, HAS=23, HASANY=24, + HASALL=25, BOOL=26, NUMBER=27, QUOTED_TEXT=28, KEY=29, WS=30, FREETEXT=31; public static final int RULE_query = 0, RULE_expression = 1, RULE_orExpression = 2, RULE_andExpression = 3, RULE_unaryExpression = 4, RULE_primary = 5, RULE_comparison = 6, RULE_inClause = 7, @@ -48,11 +46,9 @@ public class FilterQueryParser extends Parser { private static String[] makeSymbolicNames() { return new String[] { null, "LPAREN", "RPAREN", "LBRACK", "RBRACK", "COMMA", "EQUALS", "NOT_EQUALS", - "NEQ", "LT", "LE", "GT", "GE", "LIKE", "NOT_LIKE", "ILIKE", "NOT_ILIKE", - "BETWEEN", "NOT_BETWEEN", "EXISTS", "NOT_EXISTS", "REGEXP", "NOT_REGEXP", - "CONTAINS", "NOT_CONTAINS", "IN", "NOT_IN", "NOT", "AND", "OR", "HAS", - "HASANY", "HASALL", "HASNONE", "BOOL", "NUMBER", "QUOTED_TEXT", "KEY", - "WS" + "NEQ", "LT", "LE", "GT", "GE", "LIKE", "ILIKE", "BETWEEN", "EXISTS", + "REGEXP", "CONTAINS", "IN", "NOT", "AND", "OR", "HAS", "HASANY", "HASALL", + "BOOL", "NUMBER", "QUOTED_TEXT", "KEY", "WS", "FREETEXT" }; } private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); @@ -108,21 +104,10 @@ public class FilterQueryParser extends Parser { @SuppressWarnings("CheckReturnValue") public static class QueryContext extends ParserRuleContext { - public List expression() { - return getRuleContexts(ExpressionContext.class); - } - public ExpressionContext expression(int i) { - return getRuleContext(ExpressionContext.class,i); + public ExpressionContext expression() { + return getRuleContext(ExpressionContext.class,0); } public TerminalNode EOF() { return getToken(FilterQueryParser.EOF, 0); } - public List AND() { return getTokens(FilterQueryParser.AND); } - public TerminalNode AND(int i) { - return getToken(FilterQueryParser.AND, i); - } - public List OR() { return getTokens(FilterQueryParser.OR); } - public TerminalNode OR(int i) { - return getToken(FilterQueryParser.OR, i); - } public QueryContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @@ -132,59 +117,12 @@ public class FilterQueryParser extends Parser { public final QueryContext query() throws RecognitionException { QueryContext _localctx = new QueryContext(_ctx, getState()); enterRule(_localctx, 0, RULE_query); - int _la; try { enterOuterAlt(_localctx, 1); { setState(34); expression(); - setState(40); - _errHandler.sync(this); - _la = _input.LA(1); - while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 223204081666L) != 0)) { - { - setState(38); - _errHandler.sync(this); - switch (_input.LA(1)) { - case AND: - case OR: - { - setState(35); - _la = _input.LA(1); - if ( !(_la==AND || _la==OR) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(36); - expression(); - } - break; - case LPAREN: - case NOT: - case HAS: - case HASANY: - case HASALL: - case HASNONE: - case QUOTED_TEXT: - case KEY: - { - setState(37); - expression(); - } - break; - default: - throw new NoViableAltException(this); - } - } - setState(42); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(43); + setState(35); match(EOF); } } @@ -216,7 +154,7 @@ public class FilterQueryParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(45); + setState(37); orExpression(); } } @@ -252,29 +190,27 @@ public class FilterQueryParser extends Parser { public final OrExpressionContext orExpression() throws RecognitionException { OrExpressionContext _localctx = new OrExpressionContext(_ctx, getState()); enterRule(_localctx, 4, RULE_orExpression); + int _la; try { - int _alt; enterOuterAlt(_localctx, 1); { - setState(47); + setState(39); andExpression(); - setState(52); + setState(44); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,2,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(48); - match(OR); - setState(49); - andExpression(); - } - } + _la = _input.LA(1); + while (_la==OR) { + { + { + setState(40); + match(OR); + setState(41); + andExpression(); } - setState(54); + } + setState(46); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,2,_ctx); + _la = _input.LA(1); } } } @@ -310,50 +246,50 @@ public class FilterQueryParser extends Parser { public final AndExpressionContext andExpression() throws RecognitionException { AndExpressionContext _localctx = new AndExpressionContext(_ctx, getState()); enterRule(_localctx, 6, RULE_andExpression); + int _la; try { - int _alt; enterOuterAlt(_localctx, 1); { - setState(55); + setState(47); unaryExpression(); - setState(61); + setState(53); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,4,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - setState(59); - _errHandler.sync(this); - switch (_input.LA(1)) { - case AND: - { - setState(56); - match(AND); - setState(57); - unaryExpression(); - } - break; - case LPAREN: - case NOT: - case HAS: - case HASANY: - case HASALL: - case HASNONE: - case QUOTED_TEXT: - case KEY: - { - setState(58); - unaryExpression(); - } - break; - default: - throw new NoViableAltException(this); - } - } - } - setState(63); + _la = _input.LA(1); + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & 3215982594L) != 0)) { + { + setState(51); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,4,_ctx); + switch (_input.LA(1)) { + case AND: + { + setState(48); + match(AND); + setState(49); + unaryExpression(); + } + break; + case LPAREN: + case NOT: + case HAS: + case HASANY: + case HASALL: + case BOOL: + case NUMBER: + case QUOTED_TEXT: + case KEY: + case FREETEXT: + { + setState(50); + unaryExpression(); + } + break; + default: + throw new NoViableAltException(this); + } + } + setState(55); + _errHandler.sync(this); + _la = _input.LA(1); } } } @@ -387,17 +323,17 @@ public class FilterQueryParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(65); + setState(57); _errHandler.sync(this); _la = _input.LA(1); if (_la==NOT) { { - setState(64); + setState(56); match(NOT); } } - setState(67); + setState(59); primary(); } } @@ -428,6 +364,12 @@ public class FilterQueryParser extends Parser { public FullTextContext fullText() { return getRuleContext(FullTextContext.class,0); } + public KeyContext key() { + return getRuleContext(KeyContext.class,0); + } + public ValueContext value() { + return getRuleContext(ValueContext.class,0); + } public PrimaryContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @@ -438,46 +380,55 @@ public class FilterQueryParser extends Parser { PrimaryContext _localctx = new PrimaryContext(_ctx, getState()); enterRule(_localctx, 10, RULE_primary); try { - setState(76); + setState(70); _errHandler.sync(this); - switch (_input.LA(1)) { - case LPAREN: + switch ( getInterpreter().adaptivePredict(_input,4,_ctx) ) { + case 1: enterOuterAlt(_localctx, 1); { - setState(69); + setState(61); match(LPAREN); - setState(70); + setState(62); orExpression(); - setState(71); + setState(63); match(RPAREN); } break; - case KEY: + case 2: enterOuterAlt(_localctx, 2); { - setState(73); + setState(65); comparison(); } break; - case HAS: - case HASANY: - case HASALL: - case HASNONE: + case 3: enterOuterAlt(_localctx, 3); { - setState(74); + setState(66); functionCall(); } break; - case QUOTED_TEXT: + case 4: enterOuterAlt(_localctx, 4); { - setState(75); + setState(67); fullText(); } break; - default: - throw new NoViableAltException(this); + case 5: + enterOuterAlt(_localctx, 5); + { + setState(68); + key(); + } + break; + case 6: + enterOuterAlt(_localctx, 6); + { + setState(69); + value(); + } + break; } } catch (RecognitionException re) { @@ -511,11 +462,9 @@ public class FilterQueryParser extends Parser { public TerminalNode GE() { return getToken(FilterQueryParser.GE, 0); } public TerminalNode LIKE() { return getToken(FilterQueryParser.LIKE, 0); } public TerminalNode ILIKE() { return getToken(FilterQueryParser.ILIKE, 0); } - public TerminalNode NOT_LIKE() { return getToken(FilterQueryParser.NOT_LIKE, 0); } - public TerminalNode NOT_ILIKE() { return getToken(FilterQueryParser.NOT_ILIKE, 0); } + public TerminalNode NOT() { return getToken(FilterQueryParser.NOT, 0); } public TerminalNode BETWEEN() { return getToken(FilterQueryParser.BETWEEN, 0); } public TerminalNode AND() { return getToken(FilterQueryParser.AND, 0); } - public TerminalNode NOT_BETWEEN() { return getToken(FilterQueryParser.NOT_BETWEEN, 0); } public InClauseContext inClause() { return getRuleContext(InClauseContext.class,0); } @@ -523,11 +472,8 @@ public class FilterQueryParser extends Parser { return getRuleContext(NotInClauseContext.class,0); } public TerminalNode EXISTS() { return getToken(FilterQueryParser.EXISTS, 0); } - public TerminalNode NOT_EXISTS() { return getToken(FilterQueryParser.NOT_EXISTS, 0); } public TerminalNode REGEXP() { return getToken(FilterQueryParser.REGEXP, 0); } - public TerminalNode NOT_REGEXP() { return getToken(FilterQueryParser.NOT_REGEXP, 0); } public TerminalNode CONTAINS() { return getToken(FilterQueryParser.CONTAINS, 0); } - public TerminalNode NOT_CONTAINS() { return getToken(FilterQueryParser.NOT_CONTAINS, 0); } public ComparisonContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @@ -539,26 +485,26 @@ public class FilterQueryParser extends Parser { enterRule(_localctx, 12, RULE_comparison); int _la; try { - setState(150); + setState(149); _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,7,_ctx) ) { + switch ( getInterpreter().adaptivePredict(_input,5,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(78); + setState(72); key(); - setState(79); + setState(73); match(EQUALS); - setState(80); + setState(74); value(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(82); + setState(76); key(); - setState(83); + setState(77); _la = _input.LA(1); if ( !(_la==NOT_EQUALS || _la==NEQ) ) { _errHandler.recoverInline(this); @@ -568,60 +514,60 @@ public class FilterQueryParser extends Parser { _errHandler.reportMatch(this); consume(); } - setState(84); + setState(78); value(); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(86); + setState(80); key(); - setState(87); + setState(81); match(LT); - setState(88); + setState(82); value(); } break; case 4: enterOuterAlt(_localctx, 4); { - setState(90); + setState(84); key(); - setState(91); + setState(85); match(LE); - setState(92); + setState(86); value(); } break; case 5: enterOuterAlt(_localctx, 5); { - setState(94); + setState(88); key(); - setState(95); + setState(89); match(GT); - setState(96); + setState(90); value(); } break; case 6: enterOuterAlt(_localctx, 6); { - setState(98); + setState(92); key(); - setState(99); + setState(93); match(GE); - setState(100); + setState(94); value(); } break; case 7: enterOuterAlt(_localctx, 7); { - setState(102); + setState(96); key(); - setState(103); + setState(97); _la = _input.LA(1); if ( !(_la==LIKE || _la==ILIKE) ) { _errHandler.recoverInline(this); @@ -631,18 +577,20 @@ public class FilterQueryParser extends Parser { _errHandler.reportMatch(this); consume(); } - setState(104); + setState(98); value(); } break; case 8: enterOuterAlt(_localctx, 8); { - setState(106); + setState(100); key(); - setState(107); + setState(101); + match(NOT); + setState(102); _la = _input.LA(1); - if ( !(_la==NOT_LIKE || _la==NOT_ILIKE) ) { + if ( !(_la==LIKE || _la==ILIKE) ) { _errHandler.recoverInline(this); } else { @@ -650,117 +598,125 @@ public class FilterQueryParser extends Parser { _errHandler.reportMatch(this); consume(); } - setState(108); + setState(103); value(); } break; case 9: enterOuterAlt(_localctx, 9); { - setState(110); + setState(105); key(); - setState(111); + setState(106); match(BETWEEN); - setState(112); + setState(107); value(); - setState(113); + setState(108); match(AND); - setState(114); + setState(109); value(); } break; case 10: enterOuterAlt(_localctx, 10); { - setState(116); + setState(111); key(); - setState(117); - match(NOT_BETWEEN); - setState(118); + setState(112); + match(NOT); + setState(113); + match(BETWEEN); + setState(114); value(); - setState(119); + setState(115); match(AND); - setState(120); + setState(116); value(); } break; case 11: enterOuterAlt(_localctx, 11); { - setState(122); + setState(118); key(); - setState(123); + setState(119); inClause(); } break; case 12: enterOuterAlt(_localctx, 12); { - setState(125); + setState(121); key(); - setState(126); + setState(122); notInClause(); } break; case 13: enterOuterAlt(_localctx, 13); { - setState(128); + setState(124); key(); - setState(129); + setState(125); match(EXISTS); } break; case 14: enterOuterAlt(_localctx, 14); { - setState(131); + setState(127); key(); - setState(132); - match(NOT_EXISTS); + setState(128); + match(NOT); + setState(129); + match(EXISTS); } break; case 15: enterOuterAlt(_localctx, 15); { - setState(134); + setState(131); key(); - setState(135); + setState(132); match(REGEXP); - setState(136); + setState(133); value(); } break; case 16: enterOuterAlt(_localctx, 16); { - setState(138); + setState(135); key(); - setState(139); - match(NOT_REGEXP); - setState(140); + setState(136); + match(NOT); + setState(137); + match(REGEXP); + setState(138); value(); } break; case 17: enterOuterAlt(_localctx, 17); { - setState(142); + setState(140); key(); - setState(143); + setState(141); match(CONTAINS); - setState(144); + setState(142); value(); } break; case 18: enterOuterAlt(_localctx, 18); { - setState(146); + setState(144); key(); + setState(145); + match(NOT); + setState(146); + match(CONTAINS); setState(147); - match(NOT_CONTAINS); - setState(148); value(); } break; @@ -787,6 +743,9 @@ public class FilterQueryParser extends Parser { public TerminalNode RPAREN() { return getToken(FilterQueryParser.RPAREN, 0); } public TerminalNode LBRACK() { return getToken(FilterQueryParser.LBRACK, 0); } public TerminalNode RBRACK() { return getToken(FilterQueryParser.RBRACK, 0); } + public ValueContext value() { + return getRuleContext(ValueContext.class,0); + } public InClauseContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @@ -797,35 +756,44 @@ public class FilterQueryParser extends Parser { InClauseContext _localctx = new InClauseContext(_ctx, getState()); enterRule(_localctx, 14, RULE_inClause); try { - setState(162); + setState(163); _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,8,_ctx) ) { + switch ( getInterpreter().adaptivePredict(_input,6,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(152); + setState(151); match(IN); - setState(153); + setState(152); match(LPAREN); - setState(154); + setState(153); valueList(); - setState(155); + setState(154); match(RPAREN); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(157); + setState(156); match(IN); - setState(158); + setState(157); match(LBRACK); - setState(159); + setState(158); valueList(); - setState(160); + setState(159); match(RBRACK); } break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(161); + match(IN); + setState(162); + value(); + } + break; } } catch (RecognitionException re) { @@ -841,7 +809,8 @@ public class FilterQueryParser extends Parser { @SuppressWarnings("CheckReturnValue") public static class NotInClauseContext extends ParserRuleContext { - public TerminalNode NOT_IN() { return getToken(FilterQueryParser.NOT_IN, 0); } + public TerminalNode NOT() { return getToken(FilterQueryParser.NOT, 0); } + public TerminalNode IN() { return getToken(FilterQueryParser.IN, 0); } public TerminalNode LPAREN() { return getToken(FilterQueryParser.LPAREN, 0); } public ValueListContext valueList() { return getRuleContext(ValueListContext.class,0); @@ -849,6 +818,9 @@ public class FilterQueryParser extends Parser { public TerminalNode RPAREN() { return getToken(FilterQueryParser.RPAREN, 0); } public TerminalNode LBRACK() { return getToken(FilterQueryParser.LBRACK, 0); } public TerminalNode RBRACK() { return getToken(FilterQueryParser.RBRACK, 0); } + public ValueContext value() { + return getRuleContext(ValueContext.class,0); + } public NotInClauseContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @@ -859,35 +831,50 @@ public class FilterQueryParser extends Parser { NotInClauseContext _localctx = new NotInClauseContext(_ctx, getState()); enterRule(_localctx, 16, RULE_notInClause); try { - setState(174); + setState(180); _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,9,_ctx) ) { + switch ( getInterpreter().adaptivePredict(_input,7,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(164); - match(NOT_IN); setState(165); - match(LPAREN); + match(NOT); setState(166); - valueList(); + match(IN); setState(167); + match(LPAREN); + setState(168); + valueList(); + setState(169); match(RPAREN); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(169); - match(NOT_IN); - setState(170); - match(LBRACK); setState(171); - valueList(); + match(NOT); setState(172); + match(IN); + setState(173); + match(LBRACK); + setState(174); + valueList(); + setState(175); match(RBRACK); } break; + case 3: + enterOuterAlt(_localctx, 3); + { + setState(177); + match(NOT); + setState(178); + match(IN); + setState(179); + value(); + } + break; } } catch (RecognitionException re) { @@ -926,21 +913,21 @@ public class FilterQueryParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(176); + setState(182); value(); - setState(181); + setState(187); _errHandler.sync(this); _la = _input.LA(1); while (_la==COMMA) { { { - setState(177); + setState(183); match(COMMA); - setState(178); + setState(184); value(); } } - setState(183); + setState(189); _errHandler.sync(this); _la = _input.LA(1); } @@ -960,6 +947,7 @@ public class FilterQueryParser extends Parser { @SuppressWarnings("CheckReturnValue") public static class FullTextContext extends ParserRuleContext { public TerminalNode QUOTED_TEXT() { return getToken(FilterQueryParser.QUOTED_TEXT, 0); } + public TerminalNode FREETEXT() { return getToken(FilterQueryParser.FREETEXT, 0); } public FullTextContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @@ -969,11 +957,20 @@ public class FilterQueryParser extends Parser { public final FullTextContext fullText() throws RecognitionException { FullTextContext _localctx = new FullTextContext(_ctx, getState()); enterRule(_localctx, 20, RULE_fullText); + int _la; try { enterOuterAlt(_localctx, 1); { - setState(184); - match(QUOTED_TEXT); + setState(190); + _la = _input.LA(1); + if ( !(_la==QUOTED_TEXT || _la==FREETEXT) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } } } catch (RecognitionException re) { @@ -997,7 +994,6 @@ public class FilterQueryParser extends Parser { public TerminalNode HAS() { return getToken(FilterQueryParser.HAS, 0); } public TerminalNode HASANY() { return getToken(FilterQueryParser.HASANY, 0); } public TerminalNode HASALL() { return getToken(FilterQueryParser.HASALL, 0); } - public TerminalNode HASNONE() { return getToken(FilterQueryParser.HASNONE, 0); } public FunctionCallContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @@ -1011,9 +1007,9 @@ public class FilterQueryParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(186); + setState(192); _la = _input.LA(1); - if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 16106127360L) != 0)) ) { + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 58720256L) != 0)) ) { _errHandler.recoverInline(this); } else { @@ -1021,11 +1017,11 @@ public class FilterQueryParser extends Parser { _errHandler.reportMatch(this); consume(); } - setState(187); + setState(193); match(LPAREN); - setState(188); + setState(194); functionParamList(); - setState(189); + setState(195); match(RPAREN); } } @@ -1065,21 +1061,21 @@ public class FilterQueryParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(191); + setState(197); functionParam(); - setState(196); + setState(202); _errHandler.sync(this); _la = _input.LA(1); while (_la==COMMA) { { { - setState(192); + setState(198); match(COMMA); - setState(193); + setState(199); functionParam(); } } - setState(198); + setState(204); _errHandler.sync(this); _la = _input.LA(1); } @@ -1117,27 +1113,27 @@ public class FilterQueryParser extends Parser { FunctionParamContext _localctx = new FunctionParamContext(_ctx, getState()); enterRule(_localctx, 26, RULE_functionParam); try { - setState(202); + setState(208); _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,12,_ctx) ) { + switch ( getInterpreter().adaptivePredict(_input,10,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(199); + setState(205); key(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(200); + setState(206); value(); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(201); + setState(207); array(); } break; @@ -1173,11 +1169,11 @@ public class FilterQueryParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(204); + setState(210); match(LBRACK); - setState(205); + setState(211); valueList(); - setState(206); + setState(212); match(RBRACK); } } @@ -1211,9 +1207,9 @@ public class FilterQueryParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(208); + setState(214); _la = _input.LA(1); - if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 257698037760L) != 0)) ) { + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 1006632960L) != 0)) ) { _errHandler.recoverInline(this); } else { @@ -1249,7 +1245,7 @@ public class FilterQueryParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(210); + setState(216); match(KEY); } } @@ -1265,140 +1261,145 @@ public class FilterQueryParser extends Parser { } public static final String _serializedATN = - "\u0004\u0001&\u00d5\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001\u0002"+ - "\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004\u0002"+ - "\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007\u0002"+ - "\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b\u0002"+ - "\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002\u000f\u0007\u000f"+ - "\u0002\u0010\u0007\u0010\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000"+ - "\u0005\u0000\'\b\u0000\n\u0000\f\u0000*\t\u0000\u0001\u0000\u0001\u0000"+ - "\u0001\u0001\u0001\u0001\u0001\u0002\u0001\u0002\u0001\u0002\u0005\u0002"+ - "3\b\u0002\n\u0002\f\u00026\t\u0002\u0001\u0003\u0001\u0003\u0001\u0003"+ - "\u0001\u0003\u0005\u0003<\b\u0003\n\u0003\f\u0003?\t\u0003\u0001\u0004"+ - "\u0003\u0004B\b\u0004\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005"+ - "\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0003\u0005"+ - "M\b\u0005\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+ - "\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+ - "\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+ - "\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+ - "\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+ - "\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+ - "\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+ - "\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+ - "\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+ - "\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+ - "\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+ - "\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+ - "\u0001\u0006\u0003\u0006\u0097\b\u0006\u0001\u0007\u0001\u0007\u0001\u0007"+ - "\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007"+ - "\u0001\u0007\u0003\u0007\u00a3\b\u0007\u0001\b\u0001\b\u0001\b\u0001\b"+ - "\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0003\b\u00af\b\b\u0001"+ - "\t\u0001\t\u0001\t\u0005\t\u00b4\b\t\n\t\f\t\u00b7\t\t\u0001\n\u0001\n"+ - "\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\f\u0001"+ - "\f\u0001\f\u0005\f\u00c3\b\f\n\f\f\f\u00c6\t\f\u0001\r\u0001\r\u0001\r"+ - "\u0003\r\u00cb\b\r\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001"+ - "\u000f\u0001\u000f\u0001\u0010\u0001\u0010\u0001\u0010\u0000\u0000\u0011"+ - "\u0000\u0002\u0004\u0006\b\n\f\u000e\u0010\u0012\u0014\u0016\u0018\u001a"+ - "\u001c\u001e \u0000\u0006\u0001\u0000\u001c\u001d\u0001\u0000\u0007\b"+ - "\u0002\u0000\r\r\u000f\u000f\u0002\u0000\u000e\u000e\u0010\u0010\u0001"+ - "\u0000\u001e!\u0001\u0000\"%\u00e3\u0000\"\u0001\u0000\u0000\u0000\u0002"+ - "-\u0001\u0000\u0000\u0000\u0004/\u0001\u0000\u0000\u0000\u00067\u0001"+ - "\u0000\u0000\u0000\bA\u0001\u0000\u0000\u0000\nL\u0001\u0000\u0000\u0000"+ - "\f\u0096\u0001\u0000\u0000\u0000\u000e\u00a2\u0001\u0000\u0000\u0000\u0010"+ - "\u00ae\u0001\u0000\u0000\u0000\u0012\u00b0\u0001\u0000\u0000\u0000\u0014"+ - "\u00b8\u0001\u0000\u0000\u0000\u0016\u00ba\u0001\u0000\u0000\u0000\u0018"+ - "\u00bf\u0001\u0000\u0000\u0000\u001a\u00ca\u0001\u0000\u0000\u0000\u001c"+ - "\u00cc\u0001\u0000\u0000\u0000\u001e\u00d0\u0001\u0000\u0000\u0000 \u00d2"+ - "\u0001\u0000\u0000\u0000\"(\u0003\u0002\u0001\u0000#$\u0007\u0000\u0000"+ - "\u0000$\'\u0003\u0002\u0001\u0000%\'\u0003\u0002\u0001\u0000&#\u0001\u0000"+ - "\u0000\u0000&%\u0001\u0000\u0000\u0000\'*\u0001\u0000\u0000\u0000(&\u0001"+ - "\u0000\u0000\u0000()\u0001\u0000\u0000\u0000)+\u0001\u0000\u0000\u0000"+ - "*(\u0001\u0000\u0000\u0000+,\u0005\u0000\u0000\u0001,\u0001\u0001\u0000"+ - "\u0000\u0000-.\u0003\u0004\u0002\u0000.\u0003\u0001\u0000\u0000\u0000"+ - "/4\u0003\u0006\u0003\u000001\u0005\u001d\u0000\u000013\u0003\u0006\u0003"+ - "\u000020\u0001\u0000\u0000\u000036\u0001\u0000\u0000\u000042\u0001\u0000"+ - "\u0000\u000045\u0001\u0000\u0000\u00005\u0005\u0001\u0000\u0000\u0000"+ - "64\u0001\u0000\u0000\u00007=\u0003\b\u0004\u000089\u0005\u001c\u0000\u0000"+ - "9<\u0003\b\u0004\u0000:<\u0003\b\u0004\u0000;8\u0001\u0000\u0000\u0000"+ - ";:\u0001\u0000\u0000\u0000\u0001\u0000\u0000\u0000>\u0007\u0001\u0000\u0000\u0000?=\u0001"+ - "\u0000\u0000\u0000@B\u0005\u001b\u0000\u0000A@\u0001\u0000\u0000\u0000"+ - "AB\u0001\u0000\u0000\u0000BC\u0001\u0000\u0000\u0000CD\u0003\n\u0005\u0000"+ - "D\t\u0001\u0000\u0000\u0000EF\u0005\u0001\u0000\u0000FG\u0003\u0004\u0002"+ - "\u0000GH\u0005\u0002\u0000\u0000HM\u0001\u0000\u0000\u0000IM\u0003\f\u0006"+ - "\u0000JM\u0003\u0016\u000b\u0000KM\u0003\u0014\n\u0000LE\u0001\u0000\u0000"+ - "\u0000LI\u0001\u0000\u0000\u0000LJ\u0001\u0000\u0000\u0000LK\u0001\u0000"+ - "\u0000\u0000M\u000b\u0001\u0000\u0000\u0000NO\u0003 \u0010\u0000OP\u0005"+ - "\u0006\u0000\u0000PQ\u0003\u001e\u000f\u0000Q\u0097\u0001\u0000\u0000"+ - "\u0000RS\u0003 \u0010\u0000ST\u0007\u0001\u0000\u0000TU\u0003\u001e\u000f"+ - "\u0000U\u0097\u0001\u0000\u0000\u0000VW\u0003 \u0010\u0000WX\u0005\t\u0000"+ - "\u0000XY\u0003\u001e\u000f\u0000Y\u0097\u0001\u0000\u0000\u0000Z[\u0003"+ - " \u0010\u0000[\\\u0005\n\u0000\u0000\\]\u0003\u001e\u000f\u0000]\u0097"+ - "\u0001\u0000\u0000\u0000^_\u0003 \u0010\u0000_`\u0005\u000b\u0000\u0000"+ - "`a\u0003\u001e\u000f\u0000a\u0097\u0001\u0000\u0000\u0000bc\u0003 \u0010"+ - "\u0000cd\u0005\f\u0000\u0000de\u0003\u001e\u000f\u0000e\u0097\u0001\u0000"+ - "\u0000\u0000fg\u0003 \u0010\u0000gh\u0007\u0002\u0000\u0000hi\u0003\u001e"+ - "\u000f\u0000i\u0097\u0001\u0000\u0000\u0000jk\u0003 \u0010\u0000kl\u0007"+ - "\u0003\u0000\u0000lm\u0003\u001e\u000f\u0000m\u0097\u0001\u0000\u0000"+ - "\u0000no\u0003 \u0010\u0000op\u0005\u0011\u0000\u0000pq\u0003\u001e\u000f"+ - "\u0000qr\u0005\u001c\u0000\u0000rs\u0003\u001e\u000f\u0000s\u0097\u0001"+ - "\u0000\u0000\u0000tu\u0003 \u0010\u0000uv\u0005\u0012\u0000\u0000vw\u0003"+ - "\u001e\u000f\u0000wx\u0005\u001c\u0000\u0000xy\u0003\u001e\u000f\u0000"+ - "y\u0097\u0001\u0000\u0000\u0000z{\u0003 \u0010\u0000{|\u0003\u000e\u0007"+ - "\u0000|\u0097\u0001\u0000\u0000\u0000}~\u0003 \u0010\u0000~\u007f\u0003"+ - "\u0010\b\u0000\u007f\u0097\u0001\u0000\u0000\u0000\u0080\u0081\u0003 "+ - "\u0010\u0000\u0081\u0082\u0005\u0013\u0000\u0000\u0082\u0097\u0001\u0000"+ - "\u0000\u0000\u0083\u0084\u0003 \u0010\u0000\u0084\u0085\u0005\u0014\u0000"+ - "\u0000\u0085\u0097\u0001\u0000\u0000\u0000\u0086\u0087\u0003 \u0010\u0000"+ - "\u0087\u0088\u0005\u0015\u0000\u0000\u0088\u0089\u0003\u001e\u000f\u0000"+ - "\u0089\u0097\u0001\u0000\u0000\u0000\u008a\u008b\u0003 \u0010\u0000\u008b"+ - "\u008c\u0005\u0016\u0000\u0000\u008c\u008d\u0003\u001e\u000f\u0000\u008d"+ - "\u0097\u0001\u0000\u0000\u0000\u008e\u008f\u0003 \u0010\u0000\u008f\u0090"+ - "\u0005\u0017\u0000\u0000\u0090\u0091\u0003\u001e\u000f\u0000\u0091\u0097"+ - "\u0001\u0000\u0000\u0000\u0092\u0093\u0003 \u0010\u0000\u0093\u0094\u0005"+ - "\u0018\u0000\u0000\u0094\u0095\u0003\u001e\u000f\u0000\u0095\u0097\u0001"+ - "\u0000\u0000\u0000\u0096N\u0001\u0000\u0000\u0000\u0096R\u0001\u0000\u0000"+ - "\u0000\u0096V\u0001\u0000\u0000\u0000\u0096Z\u0001\u0000\u0000\u0000\u0096"+ - "^\u0001\u0000\u0000\u0000\u0096b\u0001\u0000\u0000\u0000\u0096f\u0001"+ - "\u0000\u0000\u0000\u0096j\u0001\u0000\u0000\u0000\u0096n\u0001\u0000\u0000"+ - "\u0000\u0096t\u0001\u0000\u0000\u0000\u0096z\u0001\u0000\u0000\u0000\u0096"+ - "}\u0001\u0000\u0000\u0000\u0096\u0080\u0001\u0000\u0000\u0000\u0096\u0083"+ - "\u0001\u0000\u0000\u0000\u0096\u0086\u0001\u0000\u0000\u0000\u0096\u008a"+ - "\u0001\u0000\u0000\u0000\u0096\u008e\u0001\u0000\u0000\u0000\u0096\u0092"+ - "\u0001\u0000\u0000\u0000\u0097\r\u0001\u0000\u0000\u0000\u0098\u0099\u0005"+ - "\u0019\u0000\u0000\u0099\u009a\u0005\u0001\u0000\u0000\u009a\u009b\u0003"+ - "\u0012\t\u0000\u009b\u009c\u0005\u0002\u0000\u0000\u009c\u00a3\u0001\u0000"+ - "\u0000\u0000\u009d\u009e\u0005\u0019\u0000\u0000\u009e\u009f\u0005\u0003"+ - "\u0000\u0000\u009f\u00a0\u0003\u0012\t\u0000\u00a0\u00a1\u0005\u0004\u0000"+ - "\u0000\u00a1\u00a3\u0001\u0000\u0000\u0000\u00a2\u0098\u0001\u0000\u0000"+ - "\u0000\u00a2\u009d\u0001\u0000\u0000\u0000\u00a3\u000f\u0001\u0000\u0000"+ - "\u0000\u00a4\u00a5\u0005\u001a\u0000\u0000\u00a5\u00a6\u0005\u0001\u0000"+ - "\u0000\u00a6\u00a7\u0003\u0012\t\u0000\u00a7\u00a8\u0005\u0002\u0000\u0000"+ - "\u00a8\u00af\u0001\u0000\u0000\u0000\u00a9\u00aa\u0005\u001a\u0000\u0000"+ - "\u00aa\u00ab\u0005\u0003\u0000\u0000\u00ab\u00ac\u0003\u0012\t\u0000\u00ac"+ - "\u00ad\u0005\u0004\u0000\u0000\u00ad\u00af\u0001\u0000\u0000\u0000\u00ae"+ - "\u00a4\u0001\u0000\u0000\u0000\u00ae\u00a9\u0001\u0000\u0000\u0000\u00af"+ - "\u0011\u0001\u0000\u0000\u0000\u00b0\u00b5\u0003\u001e\u000f\u0000\u00b1"+ - "\u00b2\u0005\u0005\u0000\u0000\u00b2\u00b4\u0003\u001e\u000f\u0000\u00b3"+ - "\u00b1\u0001\u0000\u0000\u0000\u00b4\u00b7\u0001\u0000\u0000\u0000\u00b5"+ - "\u00b3\u0001\u0000\u0000\u0000\u00b5\u00b6\u0001\u0000\u0000\u0000\u00b6"+ - "\u0013\u0001\u0000\u0000\u0000\u00b7\u00b5\u0001\u0000\u0000\u0000\u00b8"+ - "\u00b9\u0005$\u0000\u0000\u00b9\u0015\u0001\u0000\u0000\u0000\u00ba\u00bb"+ - "\u0007\u0004\u0000\u0000\u00bb\u00bc\u0005\u0001\u0000\u0000\u00bc\u00bd"+ - "\u0003\u0018\f\u0000\u00bd\u00be\u0005\u0002\u0000\u0000\u00be\u0017\u0001"+ - "\u0000\u0000\u0000\u00bf\u00c4\u0003\u001a\r\u0000\u00c0\u00c1\u0005\u0005"+ - "\u0000\u0000\u00c1\u00c3\u0003\u001a\r\u0000\u00c2\u00c0\u0001\u0000\u0000"+ - "\u0000\u00c3\u00c6\u0001\u0000\u0000\u0000\u00c4\u00c2\u0001\u0000\u0000"+ - "\u0000\u00c4\u00c5\u0001\u0000\u0000\u0000\u00c5\u0019\u0001\u0000\u0000"+ - "\u0000\u00c6\u00c4\u0001\u0000\u0000\u0000\u00c7\u00cb\u0003 \u0010\u0000"+ - "\u00c8\u00cb\u0003\u001e\u000f\u0000\u00c9\u00cb\u0003\u001c\u000e\u0000"+ - "\u00ca\u00c7\u0001\u0000\u0000\u0000\u00ca\u00c8\u0001\u0000\u0000\u0000"+ - "\u00ca\u00c9\u0001\u0000\u0000\u0000\u00cb\u001b\u0001\u0000\u0000\u0000"+ - "\u00cc\u00cd\u0005\u0003\u0000\u0000\u00cd\u00ce\u0003\u0012\t\u0000\u00ce"+ - "\u00cf\u0005\u0004\u0000\u0000\u00cf\u001d\u0001\u0000\u0000\u0000\u00d0"+ - "\u00d1\u0007\u0005\u0000\u0000\u00d1\u001f\u0001\u0000\u0000\u0000\u00d2"+ - "\u00d3\u0005%\u0000\u0000\u00d3!\u0001\u0000\u0000\u0000\r&(4;=AL\u0096"+ - "\u00a2\u00ae\u00b5\u00c4\u00ca"; + "\u0004\u0001\u001f\u00db\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001"+ + "\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004"+ + "\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007"+ + "\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b"+ + "\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002\u000f\u0007"+ + "\u000f\u0002\u0010\u0007\u0010\u0001\u0000\u0001\u0000\u0001\u0000\u0001"+ + "\u0001\u0001\u0001\u0001\u0002\u0001\u0002\u0001\u0002\u0005\u0002+\b"+ + "\u0002\n\u0002\f\u0002.\t\u0002\u0001\u0003\u0001\u0003\u0001\u0003\u0001"+ + "\u0003\u0005\u00034\b\u0003\n\u0003\f\u00037\t\u0003\u0001\u0004\u0003"+ + "\u0004:\b\u0004\u0001\u0004\u0001\u0004\u0001\u0005\u0001\u0005\u0001"+ + "\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001"+ + "\u0005\u0003\u0005G\b\u0005\u0001\u0006\u0001\u0006\u0001\u0006\u0001"+ + "\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001"+ + "\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001"+ + "\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001"+ + "\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001"+ + "\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001"+ + "\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001"+ + "\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001"+ + "\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001"+ + "\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001"+ + "\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001"+ + "\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001"+ + "\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001"+ + "\u0006\u0001\u0006\u0003\u0006\u0096\b\u0006\u0001\u0007\u0001\u0007\u0001"+ + "\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001"+ + "\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0003\u0007\u00a4\b\u0007\u0001"+ + "\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001"+ + "\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0003\b\u00b5\b\b\u0001\t\u0001"+ + "\t\u0001\t\u0005\t\u00ba\b\t\n\t\f\t\u00bd\t\t\u0001\n\u0001\n\u0001\u000b"+ + "\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\f\u0001\f\u0001"+ + "\f\u0005\f\u00c9\b\f\n\f\f\f\u00cc\t\f\u0001\r\u0001\r\u0001\r\u0003\r"+ + "\u00d1\b\r\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000f"+ + "\u0001\u000f\u0001\u0010\u0001\u0010\u0001\u0010\u0000\u0000\u0011\u0000"+ + "\u0002\u0004\u0006\b\n\f\u000e\u0010\u0012\u0014\u0016\u0018\u001a\u001c"+ + "\u001e \u0000\u0005\u0001\u0000\u0007\b\u0001\u0000\r\u000e\u0002\u0000"+ + "\u001c\u001c\u001f\u001f\u0001\u0000\u0017\u0019\u0001\u0000\u001a\u001d"+ + "\u00eb\u0000\"\u0001\u0000\u0000\u0000\u0002%\u0001\u0000\u0000\u0000"+ + "\u0004\'\u0001\u0000\u0000\u0000\u0006/\u0001\u0000\u0000\u0000\b9\u0001"+ + "\u0000\u0000\u0000\nF\u0001\u0000\u0000\u0000\f\u0095\u0001\u0000\u0000"+ + "\u0000\u000e\u00a3\u0001\u0000\u0000\u0000\u0010\u00b4\u0001\u0000\u0000"+ + "\u0000\u0012\u00b6\u0001\u0000\u0000\u0000\u0014\u00be\u0001\u0000\u0000"+ + "\u0000\u0016\u00c0\u0001\u0000\u0000\u0000\u0018\u00c5\u0001\u0000\u0000"+ + "\u0000\u001a\u00d0\u0001\u0000\u0000\u0000\u001c\u00d2\u0001\u0000\u0000"+ + "\u0000\u001e\u00d6\u0001\u0000\u0000\u0000 \u00d8\u0001\u0000\u0000\u0000"+ + "\"#\u0003\u0002\u0001\u0000#$\u0005\u0000\u0000\u0001$\u0001\u0001\u0000"+ + "\u0000\u0000%&\u0003\u0004\u0002\u0000&\u0003\u0001\u0000\u0000\u0000"+ + "\',\u0003\u0006\u0003\u0000()\u0005\u0016\u0000\u0000)+\u0003\u0006\u0003"+ + "\u0000*(\u0001\u0000\u0000\u0000+.\u0001\u0000\u0000\u0000,*\u0001\u0000"+ + "\u0000\u0000,-\u0001\u0000\u0000\u0000-\u0005\u0001\u0000\u0000\u0000"+ + ".,\u0001\u0000\u0000\u0000/5\u0003\b\u0004\u000001\u0005\u0015\u0000\u0000"+ + "14\u0003\b\u0004\u000024\u0003\b\u0004\u000030\u0001\u0000\u0000\u0000"+ + "32\u0001\u0000\u0000\u000047\u0001\u0000\u0000\u000053\u0001\u0000\u0000"+ + "\u000056\u0001\u0000\u0000\u00006\u0007\u0001\u0000\u0000\u000075\u0001"+ + "\u0000\u0000\u00008:\u0005\u0014\u0000\u000098\u0001\u0000\u0000\u0000"+ + "9:\u0001\u0000\u0000\u0000:;\u0001\u0000\u0000\u0000;<\u0003\n\u0005\u0000"+ + "<\t\u0001\u0000\u0000\u0000=>\u0005\u0001\u0000\u0000>?\u0003\u0004\u0002"+ + "\u0000?@\u0005\u0002\u0000\u0000@G\u0001\u0000\u0000\u0000AG\u0003\f\u0006"+ + "\u0000BG\u0003\u0016\u000b\u0000CG\u0003\u0014\n\u0000DG\u0003 \u0010"+ + "\u0000EG\u0003\u001e\u000f\u0000F=\u0001\u0000\u0000\u0000FA\u0001\u0000"+ + "\u0000\u0000FB\u0001\u0000\u0000\u0000FC\u0001\u0000\u0000\u0000FD\u0001"+ + "\u0000\u0000\u0000FE\u0001\u0000\u0000\u0000G\u000b\u0001\u0000\u0000"+ + "\u0000HI\u0003 \u0010\u0000IJ\u0005\u0006\u0000\u0000JK\u0003\u001e\u000f"+ + "\u0000K\u0096\u0001\u0000\u0000\u0000LM\u0003 \u0010\u0000MN\u0007\u0000"+ + "\u0000\u0000NO\u0003\u001e\u000f\u0000O\u0096\u0001\u0000\u0000\u0000"+ + "PQ\u0003 \u0010\u0000QR\u0005\t\u0000\u0000RS\u0003\u001e\u000f\u0000"+ + "S\u0096\u0001\u0000\u0000\u0000TU\u0003 \u0010\u0000UV\u0005\n\u0000\u0000"+ + "VW\u0003\u001e\u000f\u0000W\u0096\u0001\u0000\u0000\u0000XY\u0003 \u0010"+ + "\u0000YZ\u0005\u000b\u0000\u0000Z[\u0003\u001e\u000f\u0000[\u0096\u0001"+ + "\u0000\u0000\u0000\\]\u0003 \u0010\u0000]^\u0005\f\u0000\u0000^_\u0003"+ + "\u001e\u000f\u0000_\u0096\u0001\u0000\u0000\u0000`a\u0003 \u0010\u0000"+ + "ab\u0007\u0001\u0000\u0000bc\u0003\u001e\u000f\u0000c\u0096\u0001\u0000"+ + "\u0000\u0000de\u0003 \u0010\u0000ef\u0005\u0014\u0000\u0000fg\u0007\u0001"+ + "\u0000\u0000gh\u0003\u001e\u000f\u0000h\u0096\u0001\u0000\u0000\u0000"+ + "ij\u0003 \u0010\u0000jk\u0005\u000f\u0000\u0000kl\u0003\u001e\u000f\u0000"+ + "lm\u0005\u0015\u0000\u0000mn\u0003\u001e\u000f\u0000n\u0096\u0001\u0000"+ + "\u0000\u0000op\u0003 \u0010\u0000pq\u0005\u0014\u0000\u0000qr\u0005\u000f"+ + "\u0000\u0000rs\u0003\u001e\u000f\u0000st\u0005\u0015\u0000\u0000tu\u0003"+ + "\u001e\u000f\u0000u\u0096\u0001\u0000\u0000\u0000vw\u0003 \u0010\u0000"+ + "wx\u0003\u000e\u0007\u0000x\u0096\u0001\u0000\u0000\u0000yz\u0003 \u0010"+ + "\u0000z{\u0003\u0010\b\u0000{\u0096\u0001\u0000\u0000\u0000|}\u0003 \u0010"+ + "\u0000}~\u0005\u0010\u0000\u0000~\u0096\u0001\u0000\u0000\u0000\u007f"+ + "\u0080\u0003 \u0010\u0000\u0080\u0081\u0005\u0014\u0000\u0000\u0081\u0082"+ + "\u0005\u0010\u0000\u0000\u0082\u0096\u0001\u0000\u0000\u0000\u0083\u0084"+ + "\u0003 \u0010\u0000\u0084\u0085\u0005\u0011\u0000\u0000\u0085\u0086\u0003"+ + "\u001e\u000f\u0000\u0086\u0096\u0001\u0000\u0000\u0000\u0087\u0088\u0003"+ + " \u0010\u0000\u0088\u0089\u0005\u0014\u0000\u0000\u0089\u008a\u0005\u0011"+ + "\u0000\u0000\u008a\u008b\u0003\u001e\u000f\u0000\u008b\u0096\u0001\u0000"+ + "\u0000\u0000\u008c\u008d\u0003 \u0010\u0000\u008d\u008e\u0005\u0012\u0000"+ + "\u0000\u008e\u008f\u0003\u001e\u000f\u0000\u008f\u0096\u0001\u0000\u0000"+ + "\u0000\u0090\u0091\u0003 \u0010\u0000\u0091\u0092\u0005\u0014\u0000\u0000"+ + "\u0092\u0093\u0005\u0012\u0000\u0000\u0093\u0094\u0003\u001e\u000f\u0000"+ + "\u0094\u0096\u0001\u0000\u0000\u0000\u0095H\u0001\u0000\u0000\u0000\u0095"+ + "L\u0001\u0000\u0000\u0000\u0095P\u0001\u0000\u0000\u0000\u0095T\u0001"+ + "\u0000\u0000\u0000\u0095X\u0001\u0000\u0000\u0000\u0095\\\u0001\u0000"+ + "\u0000\u0000\u0095`\u0001\u0000\u0000\u0000\u0095d\u0001\u0000\u0000\u0000"+ + "\u0095i\u0001\u0000\u0000\u0000\u0095o\u0001\u0000\u0000\u0000\u0095v"+ + "\u0001\u0000\u0000\u0000\u0095y\u0001\u0000\u0000\u0000\u0095|\u0001\u0000"+ + "\u0000\u0000\u0095\u007f\u0001\u0000\u0000\u0000\u0095\u0083\u0001\u0000"+ + "\u0000\u0000\u0095\u0087\u0001\u0000\u0000\u0000\u0095\u008c\u0001\u0000"+ + "\u0000\u0000\u0095\u0090\u0001\u0000\u0000\u0000\u0096\r\u0001\u0000\u0000"+ + "\u0000\u0097\u0098\u0005\u0013\u0000\u0000\u0098\u0099\u0005\u0001\u0000"+ + "\u0000\u0099\u009a\u0003\u0012\t\u0000\u009a\u009b\u0005\u0002\u0000\u0000"+ + "\u009b\u00a4\u0001\u0000\u0000\u0000\u009c\u009d\u0005\u0013\u0000\u0000"+ + "\u009d\u009e\u0005\u0003\u0000\u0000\u009e\u009f\u0003\u0012\t\u0000\u009f"+ + "\u00a0\u0005\u0004\u0000\u0000\u00a0\u00a4\u0001\u0000\u0000\u0000\u00a1"+ + "\u00a2\u0005\u0013\u0000\u0000\u00a2\u00a4\u0003\u001e\u000f\u0000\u00a3"+ + "\u0097\u0001\u0000\u0000\u0000\u00a3\u009c\u0001\u0000\u0000\u0000\u00a3"+ + "\u00a1\u0001\u0000\u0000\u0000\u00a4\u000f\u0001\u0000\u0000\u0000\u00a5"+ + "\u00a6\u0005\u0014\u0000\u0000\u00a6\u00a7\u0005\u0013\u0000\u0000\u00a7"+ + "\u00a8\u0005\u0001\u0000\u0000\u00a8\u00a9\u0003\u0012\t\u0000\u00a9\u00aa"+ + "\u0005\u0002\u0000\u0000\u00aa\u00b5\u0001\u0000\u0000\u0000\u00ab\u00ac"+ + "\u0005\u0014\u0000\u0000\u00ac\u00ad\u0005\u0013\u0000\u0000\u00ad\u00ae"+ + "\u0005\u0003\u0000\u0000\u00ae\u00af\u0003\u0012\t\u0000\u00af\u00b0\u0005"+ + "\u0004\u0000\u0000\u00b0\u00b5\u0001\u0000\u0000\u0000\u00b1\u00b2\u0005"+ + "\u0014\u0000\u0000\u00b2\u00b3\u0005\u0013\u0000\u0000\u00b3\u00b5\u0003"+ + "\u001e\u000f\u0000\u00b4\u00a5\u0001\u0000\u0000\u0000\u00b4\u00ab\u0001"+ + "\u0000\u0000\u0000\u00b4\u00b1\u0001\u0000\u0000\u0000\u00b5\u0011\u0001"+ + "\u0000\u0000\u0000\u00b6\u00bb\u0003\u001e\u000f\u0000\u00b7\u00b8\u0005"+ + "\u0005\u0000\u0000\u00b8\u00ba\u0003\u001e\u000f\u0000\u00b9\u00b7\u0001"+ + "\u0000\u0000\u0000\u00ba\u00bd\u0001\u0000\u0000\u0000\u00bb\u00b9\u0001"+ + "\u0000\u0000\u0000\u00bb\u00bc\u0001\u0000\u0000\u0000\u00bc\u0013\u0001"+ + "\u0000\u0000\u0000\u00bd\u00bb\u0001\u0000\u0000\u0000\u00be\u00bf\u0007"+ + "\u0002\u0000\u0000\u00bf\u0015\u0001\u0000\u0000\u0000\u00c0\u00c1\u0007"+ + "\u0003\u0000\u0000\u00c1\u00c2\u0005\u0001\u0000\u0000\u00c2\u00c3\u0003"+ + "\u0018\f\u0000\u00c3\u00c4\u0005\u0002\u0000\u0000\u00c4\u0017\u0001\u0000"+ + "\u0000\u0000\u00c5\u00ca\u0003\u001a\r\u0000\u00c6\u00c7\u0005\u0005\u0000"+ + "\u0000\u00c7\u00c9\u0003\u001a\r\u0000\u00c8\u00c6\u0001\u0000\u0000\u0000"+ + "\u00c9\u00cc\u0001\u0000\u0000\u0000\u00ca\u00c8\u0001\u0000\u0000\u0000"+ + "\u00ca\u00cb\u0001\u0000\u0000\u0000\u00cb\u0019\u0001\u0000\u0000\u0000"+ + "\u00cc\u00ca\u0001\u0000\u0000\u0000\u00cd\u00d1\u0003 \u0010\u0000\u00ce"+ + "\u00d1\u0003\u001e\u000f\u0000\u00cf\u00d1\u0003\u001c\u000e\u0000\u00d0"+ + "\u00cd\u0001\u0000\u0000\u0000\u00d0\u00ce\u0001\u0000\u0000\u0000\u00d0"+ + "\u00cf\u0001\u0000\u0000\u0000\u00d1\u001b\u0001\u0000\u0000\u0000\u00d2"+ + "\u00d3\u0005\u0003\u0000\u0000\u00d3\u00d4\u0003\u0012\t\u0000\u00d4\u00d5"+ + "\u0005\u0004\u0000\u0000\u00d5\u001d\u0001\u0000\u0000\u0000\u00d6\u00d7"+ + "\u0007\u0004\u0000\u0000\u00d7\u001f\u0001\u0000\u0000\u0000\u00d8\u00d9"+ + "\u0005\u001d\u0000\u0000\u00d9!\u0001\u0000\u0000\u0000\u000b,359F\u0095"+ + "\u00a3\u00b4\u00bb\u00ca\u00d0"; public static final ATN _ATN = new ATNDeserializer().deserialize(_serializedATN.toCharArray()); static { diff --git a/frontend/src/query-grammar/FilterQuery.g4 b/frontend/src/query-grammar/FilterQuery.g4 index f63508008ad3..3a823281d0f4 100644 --- a/frontend/src/query-grammar/FilterQuery.g4 +++ b/frontend/src/query-grammar/FilterQuery.g4 @@ -5,33 +5,49 @@ grammar FilterQuery; */ query - : expression ( (AND | OR) expression | expression )* + : expression EOF ; +// Expression with standard boolean precedence: +// - parentheses > NOT > AND > OR +// - consecutive expressions with no AND/OR => implicit AND expression : orExpression ; +// OR expressions orExpression : andExpression ( OR andExpression )* ; +// AND expressions + optional chaining with implicit AND if no OR is present andExpression : unaryExpression ( AND unaryExpression | unaryExpression )* ; +// A unary expression handles optional NOT unaryExpression : NOT? primary ; +// Primary constructs: grouped expressions, a comparison (key op value), +// a function call, or a full-text string primary : LPAREN orExpression RPAREN | comparison | functionCall | fullText + | key + | value ; +/* + * Comparison-like filters + * + * Includes all operators: =, !=, <>, <, <=, >, >=, [NOT] LIKE, [NOT] ILIKE, + * [NOT] BETWEEN, [NOT] IN, [NOT] EXISTS, [NOT] REGEXP, [NOT] CONTAINS, etc. + */ comparison : key EQUALS value | key (NOT_EQUALS | NEQ) value @@ -39,42 +55,62 @@ comparison | key LE value | key GT value | key GE value + | key (LIKE | ILIKE) value - | key (NOT_LIKE | NOT_ILIKE) value + | key NOT (LIKE | ILIKE) value + | key BETWEEN value AND value - | key NOT_BETWEEN value AND value + | key NOT BETWEEN value AND value + | key inClause | key notInClause + | key EXISTS - | key NOT_EXISTS + | key NOT EXISTS + | key REGEXP value - | key NOT_REGEXP value + | key NOT REGEXP value + | key CONTAINS value - | key NOT_CONTAINS value + | key NOT CONTAINS value ; +// in(...) or in[...] inClause : IN LPAREN valueList RPAREN | IN LBRACK valueList RBRACK + | IN value ; notInClause - : NOT_IN LPAREN valueList RPAREN - | NOT_IN LBRACK valueList RBRACK + : NOT IN LPAREN valueList RPAREN + | NOT IN LBRACK valueList RBRACK + | NOT IN value ; +// List of values for in(...) or in[...] valueList : value ( COMMA value )* ; +// Full-text search: a standalone quoted string is allowed as a "primary" +// e.g. `"Waiting for response" http.status_code=200` fullText : QUOTED_TEXT + | FREETEXT ; +/* + * Function calls like: + * has(payload.user_ids, 123) + * hasAny(payload.user_ids, [123, 456]) + * ... + */ functionCall - : (HAS | HASANY | HASALL | HASNONE) LPAREN functionParamList RPAREN + : (HAS | HASANY | HASALL) LPAREN functionParamList RPAREN ; +// Function parameters can be keys, single scalar values, or arrays functionParamList : functionParam ( COMMA functionParam )* ; @@ -85,10 +121,15 @@ functionParam | array ; +// An array: [ item1, item2, item3 ] array : LBRACK valueList RBRACK ; +/* + * A 'value' can be a string literal (double or single-quoted), +// a numeric literal, boolean, or a "bare" token as needed. + */ value : QUOTED_TEXT | NUMBER @@ -96,10 +137,15 @@ value | KEY ; +/* + * A key can include letters, digits, underscores, dots, brackets + * E.g. service.name, query_log.query_duration_ms, proto.user_objects[].name + */ key : KEY ; + /* * Lexer Rules */ @@ -113,72 +159,69 @@ COMMA : ',' ; EQUALS : '=' | '==' ; NOT_EQUALS : '!=' ; -NEQ : '<>' ; -LT : '<' ; +NEQ : '<>' ; // alternate not-equals operator +LT : '<' ; LE : '<=' ; -GT : '>' ; -GE : '>=' ; +GT : '>' ; +GE : '>=' ; -// Multi-keyword operators +// Operators that are made of multiple keywords LIKE : [Ll][Ii][Kk][Ee] ; -NOT_LIKE : [Nn][Oo][Tt] '_' [Ll][Ii][Kk][Ee] ; ILIKE : [Ii][Ll][Ii][Kk][Ee] ; -NOT_ILIKE : [Nn][Oo][Tt] '_' [Ii][Ll][Ii][Kk][Ee] ; BETWEEN : [Bb][Ee][Tt][Ww][Ee][Ee][Nn] ; -NOT_BETWEEN : [Nn][Oo][Tt] '_' [Bb][Ee][Tt][Ww][Ee][Ee][Nn] ; - EXISTS : [Ee][Xx][Ii][Ss][Tt][Ss]? ; -NOT_EXISTS : [Nn][Oo][Tt] '-' [Ee][Xx][Ii][Ss][Tt][Ss]? ; - REGEXP : [Rr][Ee][Gg][Ee][Xx][Pp] ; -NOT_REGEXP : [Nn][Oo][Tt] '_' [Rr][Ee][Gg][Ee][Xx][Pp] ; - CONTAINS : [Cc][Oo][Nn][Tt][Aa][Ii][Nn][Ss]? ; -NOT_CONTAINS: [Nn][Oo][Tt] '_' [Cc][Oo][Nn][Tt][Aa][Ii][Nn][Ss]? ; - IN : [Ii][Nn] ; -NOT_IN : [Nn][Oo][Tt] '_' [Ii][Nn] ; // Boolean logic NOT : [Nn][Oo][Tt] ; AND : [Aa][Nn][Dd] ; OR : [Oo][Rr] ; -// Functions +// For easy referencing in function calls HAS : [Hh][Aa][Ss] ; HASANY : [Hh][Aa][Ss][Aa][Nn][Yy] ; HASALL : [Hh][Aa][Ss][Aa][Ll][Ll] ; -HASNONE : [Hh][Aa][Ss][Nn][Oo][Nn][Ee] ; -// Boolean values +// Potential boolean constants BOOL : [Tt][Rr][Uu][Ee] | [Ff][Aa][Ll][Ss][Ee] ; -// Numbers +fragment SIGN : [+-] ; + +// Numbers: optional sign, then digits, optional fractional part, +// optional scientific notation (handy for future use) NUMBER - : DIGIT+ ( '.' DIGIT+ )? + : SIGN? DIGIT+ ('.' DIGIT*)? ([eE] SIGN? DIGIT+)? // -10.25 42 +3.14 6.02e23 + | SIGN? '.' DIGIT+ ([eE] SIGN? DIGIT+)? // -.75 .5 -.5e-3 ; -// Quoted text +// Double/single-quoted text, capturing full text search strings, values, etc. QUOTED_TEXT - : ( '"' ( ~["\\] | '\\' . )* '"' // double-quoted - | '\'' ( ~['\\] | '\\' . )* '\'' // single-quoted - ) + : ( '"' ( ~["\\] | '\\' . )* '"' // double-quoted + | '\'' ( ~['\\] | '\\' . )* '\'' // single-quoted + ) ; -// Keys +fragment SEGMENT : [a-zA-Z$] [a-zA-Z0-9$_:\-]* ; +fragment EMPTY_BRACKS : '[' ']' ; +fragment OLD_JSON_BRACKS: '[' '*' ']'; + KEY - : [a-zA-Z0-9_] [a-zA-Z0-9_.[\]]* + : SEGMENT ( '.' SEGMENT | EMPTY_BRACKS | OLD_JSON_BRACKS)* ; -// Whitespace +// Ignore whitespace WS : [ \t\r\n]+ -> skip ; -// Digits fragment +// Digits used by NUMBER fragment DIGIT : [0-9] ; + +FREETEXT : (~[ \t\r\n=()'"<>!,[\]])+ ; diff --git a/frontend/src/types/antlrQueryTypes.ts b/frontend/src/types/antlrQueryTypes.ts index 7b4f02a96b2f..912dae47cfd4 100644 --- a/frontend/src/types/antlrQueryTypes.ts +++ b/frontend/src/types/antlrQueryTypes.ts @@ -16,6 +16,7 @@ export interface IQueryPair { key: string; operator: string; value?: string; + hasNegation?: boolean; position: { keyStart: number; keyEnd: number; @@ -23,6 +24,8 @@ export interface IQueryPair { operatorEnd: number; valueStart?: number; valueEnd?: number; + negationStart?: number; + negationEnd?: number; }; isComplete: boolean; // true if the pair has all three components } @@ -35,6 +38,7 @@ export interface IQueryContext { currentToken: string; isInValue: boolean; isInKey: boolean; + isInNegation: boolean; isInOperator: boolean; isInFunction: boolean; isInConjunction?: boolean; diff --git a/frontend/src/utils/tokenUtils.ts b/frontend/src/utils/tokenUtils.ts index c9f32c77450d..b8ebfbb07e2e 100644 --- a/frontend/src/utils/tokenUtils.ts +++ b/frontend/src/utils/tokenUtils.ts @@ -15,9 +15,7 @@ export function isOperatorToken(tokenType: number): boolean { FilterQueryLexer.GT, FilterQueryLexer.GE, FilterQueryLexer.LIKE, - FilterQueryLexer.NOT_LIKE, FilterQueryLexer.ILIKE, - FilterQueryLexer.NOT_ILIKE, FilterQueryLexer.BETWEEN, FilterQueryLexer.EXISTS, FilterQueryLexer.REGEXP, @@ -29,9 +27,7 @@ export function isOperatorToken(tokenType: number): boolean { // Helper function to check if a token is an operator which doesn't require a value export function isNonValueOperatorToken(tokenType: number): boolean { - return [FilterQueryLexer.NOT_EXISTS, FilterQueryLexer.EXISTS].includes( - tokenType, - ); + return [FilterQueryLexer.EXISTS].includes(tokenType); } // Helper function to check if a token is a value @@ -72,7 +68,6 @@ export function isFunctionToken(tokenType: number): boolean { FilterQueryLexer.HAS, FilterQueryLexer.HASANY, FilterQueryLexer.HASALL, - FilterQueryLexer.HASNONE, ].includes(tokenType); }