summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Wisselink <wisskid@users.noreply.github.com>2026-02-15 15:23:55 +0100
committerGitHub <noreply@github.com>2026-02-15 15:23:55 +0100
commit5487e31c4b3fcf7edc4e0da716ac24c9333ae3ba (patch)
tree1f7e24cff2d8d0c1ecbbb491ba3d5004fdd93b37
parent12ce28e26562c680bf2ae631c8c6135370222bbb (diff)
downloadsmarty-5487e31c4b3fcf7edc4e0da716ac24c9333ae3ba.tar.gz
smarty-5487e31c4b3fcf7edc4e0da716ac24c9333ae3ba.tar.bz2
smarty-5487e31c4b3fcf7edc4e0da716ac24c9333ae3ba.zip
Add support for Backed Enums (#1171)
* Add support for Backed Enums Fixes #1012 Also added docs (and docs for matches operator)
-rw-r--r--docs/designers/language-basic-syntax/language-syntax-operators.md114
-rw-r--r--docs/designers/language-variables/language-assigned-variables.md87
-rw-r--r--docs/features.md2
-rw-r--r--docs/index.md19
-rw-r--r--src/Parser/TemplateParser.php1148
-rw-r--r--src/Parser/TemplateParser.y5
-rw-r--r--tests/UnitTests/TemplateSource/StaticClass/StaticClassAccessTest.php19
7 files changed, 823 insertions, 571 deletions
diff --git a/docs/designers/language-basic-syntax/language-syntax-operators.md b/docs/designers/language-basic-syntax/language-syntax-operators.md
index 98a56538..965327c3 100644
--- a/docs/designers/language-basic-syntax/language-syntax-operators.md
+++ b/docs/designers/language-basic-syntax/language-syntax-operators.md
@@ -50,6 +50,120 @@ separated from surrounding elements by spaces. Note that items listed in
| is \[not\] odd by | | $a is not odd by $b | \[not\] an odd grouping | ($a / $b) % 2 != 0 |
| is in | | $a is in $b | exists in array | in_array($a, $b) |
| is \[not\] in | | $a is not in $b | does not exist in array | !in_array($a, $b) |
+| matches | | $a matches $b | regex pattern match | preg_match($b, $a) |
+
+## Regex Matching Operator
+
+The `matches` operator allows you to test if a string matches a regular expression pattern.
+
+### Basic Usage
+
+```smarty
+{if "hello" matches "/^[a-z]+$/"}
+ String matches the pattern!
+{/if}
+
+{if $email matches "/^[^@]+@[^@]+\.[^@]+$/"}
+ Valid email format
+{else}
+ Invalid email format
+{/if}
+```
+
+### Using Variables
+
+```smarty
+{$pattern = '/^[a-zA-Z0-9]{8,}$/'}
+{if $password matches $pattern}
+ Password meets requirements
+{else}
+ Password must be at least 8 alphanumeric characters
+{/if}
+```
+
+### Pattern Modifiers
+
+The `matches` operator supports all standard PHP regex modifiers:
+
+```smarty
+{* Case insensitive matching *}
+{if "HELLO" matches "/hello/i"}
+ Matches (case insensitive)
+{/if}
+
+{* Multiline mode *}
+{if "line1\nline2" matches "/line2$/m"}
+ Matches in multiline mode
+{/if}
+
+{* Dot matches newlines *}
+{if "hello\nworld" matches "/hello.world/s"}
+ Matches with dotall modifier
+{/if}
+```
+
+### Complex Conditions
+
+The `matches` operator can be combined with other operators:
+
+```smarty
+{if $username matches "/^[a-z]+$/" && $username|length > 3}
+ Valid username
+{else}
+ Username must be lowercase letters and at least 4 characters
+{/if}
+
+{if $input matches "/^[0-9]+$/" || $input matches "/^[a-z]+$/"}
+ Input is either numeric or lowercase letters
+{else}
+ Invalid input format
+{/if}
+```
+
+### Practical Examples
+
+**Email Validation:**
+```smarty
+{if $email matches "/^[^@\s]+@[^@\s]+\.[^@\s]+$/"}
+ Valid email address
+{else}
+ Please enter a valid email address
+{/if}
+```
+
+**Password Strength:**
+```smarty
+{if $password matches "/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$/"}
+ Strong password
+{else}
+ Password must contain uppercase, lowercase, numbers and be at least 8 characters
+{/if}
+```
+
+**URL Validation:**
+```smarty
+{if $url matches "/^https?:\/\/(www\.)?[a-z0-9\-]+(\.[a-z]{2,})+/i"}
+ Valid URL format
+{else}
+ Please enter a valid URL
+{/if}
+```
+
+**Numeric Validation:**
+```smarty
+{if $input matches "/^[0-9]+$/"}
+ Valid numeric input
+{else}
+ Please enter numbers only
+{/if}
+```
+
+### Notes
+
+- The `matches` operator uses PHP's `preg_match()` function internally
+- Pattern delimiters must be valid regex delimiters (typically `/`)
+- Invalid patterns will cause PHP warnings but won't break template execution
+- For complex regex patterns, consider using variables for better readability
## Ternary
You can use the `?:` (or ternary) operator to test one expression and present the value
diff --git a/docs/designers/language-variables/language-assigned-variables.md b/docs/designers/language-variables/language-assigned-variables.md
index 9465a89c..5dfa3648 100644
--- a/docs/designers/language-variables/language-assigned-variables.md
+++ b/docs/designers/language-variables/language-assigned-variables.md
@@ -123,4 +123,89 @@ this will output:
```html
name: Zaphod Beeblebrox<br />
email: zaphod@slartibartfast.example.com<br />
-``` \ No newline at end of file
+```
+
+## Backed Enums (PHP 8.1+)
+
+Smarty supports accessing properties of [backed enums](https://www.php.net/manual/en/language.enumerations.backed.php) introduced in PHP 8.1.
+
+### Accessing Enum Properties
+
+You can access the `name` and `value` properties of backed enum cases:
+
+```smarty
+{* Access enum case properties *}
+<option id="{MyEnum::Foo->name}">{MyEnum::Foo->value}</option>
+```
+
+### Complete Example
+
+```php
+<?php
+use Smarty\Smarty;
+
+// Define a backed enum
+enum Status: string {
+ case Active = 'active';
+ case Inactive = 'inactive';
+ case Pending = 'pending';
+}
+
+$smarty = new Smarty();
+$smarty->assign('currentStatus', Status::Active);
+$smarty->display('template.tpl');
+```
+
+`template.tpl`:
+
+```smarty
+{* Display enum properties *}
+Current status: {$currentStatus->name} (value: {$currentStatus->value})
+
+{* Use in HTML attributes *}
+<select name="status">
+ <option value="{Status::Active->value}" {if $currentStatus->name === 'Active'}selected{/if}>Active</option>
+ <option value="{Status::Inactive->value}" {if $currentStatus->name === 'Inactive'}selected{/if}>Inactive</option>
+ <option value="{Status::Pending->value}" {if $currentStatus->name === 'Pending'}selected{/if}>Pending</option>
+</select>
+```
+
+This would output:
+
+```html
+Current status: Active (value: active)
+
+<select name="status">
+ <option value="active" selected>Active</option>
+ <option value="inactive">Inactive</option>
+ <option value="pending">Pending</option>
+</select>
+```
+
+### Integer-backed Enums
+
+Integer-backed enums work the same way:
+
+```php
+<?php
+enum Priority: int {
+ case Low = 1;
+ case Medium = 2;
+ case High = 3;
+}
+
+$smarty->assign('priority', Priority::High);
+```
+
+```smarty
+{* Access integer enum properties *}
+Priority level: {$priority->value} ({$priority->name})
+```
+
+Output:
+
+```html
+Priority level: 3 (High)
+```
+
+> **Note**: Backed enum support requires PHP 8.1 or higher. The enum must be registered or available in the current namespace. \ No newline at end of file
diff --git a/docs/features.md b/docs/features.md
index f9a873be..bab9cd1e 100644
--- a/docs/features.md
+++ b/docs/features.md
@@ -22,6 +22,8 @@ Some of Smarty's features:
- [Template Inheritance](api/inheritance.md) for
easy management of template content.
- [Plugin](api/extending/introduction.md) architecture
+- Regex pattern matching with the [`matches`](designers/language-basic-syntax/language-syntax-operators.md#regex-matching-operator) operator
+- Support for PHP 8.1+ [backed enums](designers/language-variables/language-assigned-variables.md#backed-enums-php-81)
## Separation of presentation from application code
- This means templates can certainly contain logic under the condition
diff --git a/docs/index.md b/docs/index.md
index e187ffbe..63cf15e0 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -8,6 +8,25 @@ It allows you to write **templates**, using **variables**, **modifiers**, **func
<p>
The number of pixels is: {math equation="x * y" x=$height y=$width}.
</p>
+
+<p>
+ {if $email matches "/^[^@]+@[^@]+\.[^@]+$/"}
+ Valid email address
+ {else}
+ Please enter a valid email
+ {/if}
+</p>
+```
+```html
+<h1>Hello world</h1>
+
+<p>
+ The number of pixels is: 307200.
+</p>
+
+<p>
+ Valid email address
+</p>
```
When this template is rendered, with the value "Hello world" for the variable $title, 640 for $width,
diff --git a/src/Parser/TemplateParser.php b/src/Parser/TemplateParser.php
index 4a769ea8..6414d502 100644
--- a/src/Parser/TemplateParser.php
+++ b/src/Parser/TemplateParser.php
@@ -264,285 +264,285 @@ class TemplateParser
const TP_ARRAYOPEN = 58;
const TP_QUOTE = 59;
const TP_BACKTICK = 60;
- const YY_NO_ACTION = 551;
- const YY_ACCEPT_ACTION = 550;
- const YY_ERROR_ACTION = 549;
+ const YY_NO_ACTION = 553;
+ const YY_ACCEPT_ACTION = 552;
+ const YY_ERROR_ACTION = 551;
- const YY_SZ_ACTTAB = 2726;
+ const YY_SZ_ACTTAB = 2723;
public static $yy_action = array(
- 31, 47, 22, 289, 41, 14, 48, 251, 252, 253,
- 1, 15, 141, 241, 206, 204, 6, 88, 204, 226,
- 243, 203, 114, 109, 405, 204, 221, 265, 222, 104,
- 228, 405, 21, 405, 224, 44, 405, 30, 45, 46,
- 282, 230, 405, 286, 405, 207, 405, 54, 4, 14,
- 302, 184, 334, 310, 229, 15, 5, 86, 251, 252,
- 253, 1, 104, 138, 399, 197, 240, 6, 88, 517,
- 226, 550, 101, 114, 152, 257, 399, 221, 265, 222,
- 143, 212, 399, 21, 260, 452, 44, 13, 143, 45,
- 46, 282, 230, 204, 239, 13, 207, 452, 54, 4,
- 333, 302, 204, 40, 261, 367, 155, 5, 86, 251,
- 252, 253, 1, 142, 102, 271, 87, 367, 6, 88,
- 309, 226, 155, 367, 114, 319, 16, 220, 221, 265,
- 222, 273, 228, 182, 21, 310, 142, 44, 235, 97,
- 45, 46, 282, 230, 174, 286, 272, 207, 54, 54,
- 4, 302, 302, 250, 181, 220, 310, 179, 5, 86,
- 251, 252, 253, 1, 20, 140, 196, 206, 275, 6,
- 88, 54, 226, 315, 302, 114, 188, 264, 452, 221,
- 265, 222, 204, 228, 276, 21, 146, 237, 44, 188,
- 452, 45, 46, 282, 230, 330, 286, 3, 207, 104,
- 54, 4, 145, 302, 302, 288, 98, 311, 25, 5,
- 86, 251, 252, 253, 1, 268, 140, 133, 198, 366,
- 6, 88, 26, 226, 302, 366, 114, 108, 117, 452,
- 221, 265, 222, 33, 228, 233, 21, 162, 53, 44,
- 302, 452, 45, 46, 282, 230, 104, 286, 37, 207,
- 104, 54, 4, 326, 302, 156, 204, 261, 366, 144,
- 5, 86, 251, 252, 253, 1, 268, 139, 401, 206,
- 366, 6, 88, 302, 226, 117, 366, 114, 154, 117,
- 401, 221, 265, 222, 259, 228, 401, 11, 260, 53,
- 44, 204, 24, 45, 46, 282, 230, 204, 286, 161,
- 207, 261, 54, 4, 181, 302, 310, 158, 261, 398,
- 261, 5, 86, 251, 252, 253, 1, 260, 140, 160,
- 193, 398, 6, 88, 36, 226, 273, 398, 114, 260,
- 241, 113, 221, 265, 222, 91, 217, 343, 21, 340,
- 109, 44, 18, 187, 45, 46, 282, 230, 15, 286,
- 241, 207, 472, 54, 4, 187, 302, 242, 268, 472,
- 109, 176, 5, 86, 251, 252, 253, 1, 32, 140,
- 147, 191, 92, 6, 88, 263, 226, 302, 19, 114,
- 260, 53, 262, 221, 265, 222, 163, 228, 328, 21,
- 7, 149, 44, 188, 204, 45, 46, 282, 230, 150,
- 286, 109, 207, 167, 54, 4, 268, 302, 180, 260,
- 231, 170, 472, 5, 86, 251, 252, 253, 1, 472,
- 140, 260, 206, 9, 6, 88, 183, 226, 310, 53,
- 114, 319, 169, 220, 221, 265, 222, 185, 192, 249,
- 21, 325, 294, 44, 295, 317, 45, 46, 282, 230,
- 173, 286, 187, 207, 133, 54, 4, 34, 302, 100,
- 260, 177, 218, 201, 5, 86, 251, 252, 253, 1,
- 23, 142, 303, 206, 40, 6, 88, 488, 90, 321,
- 488, 114, 17, 264, 488, 221, 265, 222, 342, 228,
- 268, 21, 8, 188, 49, 248, 249, 45, 46, 282,
- 230, 267, 286, 9, 207, 322, 54, 4, 93, 302,
- 299, 452, 454, 53, 454, 5, 86, 251, 252, 253,
- 1, 202, 142, 452, 206, 157, 6, 88, 456, 95,
- 456, 453, 114, 223, 10, 260, 221, 265, 222, 229,
- 228, 99, 21, 453, 175, 44, 118, 329, 45, 46,
- 282, 230, 23, 286, 335, 207, 178, 54, 4, 247,
- 302, 188, 164, 35, 165, 186, 5, 86, 254, 292,
- 219, 220, 256, 255, 94, 111, 279, 195, 105, 85,
- 115, 266, 123, 274, 103, 281, 229, 277, 278, 283,
- 159, 229, 7, 284, 96, 285, 208, 287, 297, 293,
- 260, 300, 298, 301, 292, 219, 220, 256, 89, 94,
- 111, 238, 194, 105, 60, 341, 37, 166, 344, 103,
- 168, 331, 277, 278, 38, 332, 188, 321, 321, 321,
- 285, 208, 287, 321, 293, 321, 300, 298, 301, 292,
- 321, 220, 258, 321, 116, 111, 321, 195, 105, 85,
- 321, 321, 263, 321, 103, 19, 321, 277, 278, 262,
- 321, 321, 321, 321, 321, 285, 208, 287, 321, 293,
- 321, 300, 298, 301, 292, 321, 220, 321, 112, 116,
- 321, 321, 205, 121, 72, 321, 321, 321, 321, 103,
- 321, 232, 277, 278, 42, 43, 290, 12, 321, 321,
- 285, 208, 287, 321, 293, 321, 300, 298, 301, 321,
- 321, 304, 305, 306, 307, 308, 292, 321, 220, 211,
- 324, 116, 321, 321, 205, 121, 72, 14, 321, 488,
- 321, 103, 488, 15, 277, 278, 488, 472, 42, 43,
- 290, 12, 285, 208, 287, 321, 293, 321, 300, 298,
- 301, 321, 321, 321, 321, 304, 305, 306, 307, 308,
- 321, 210, 324, 472, 321, 321, 472, 292, 488, 220,
- 472, 321, 110, 321, 321, 205, 124, 51, 321, 122,
- 263, 321, 103, 19, 321, 277, 278, 262, 321, 321,
- 321, 321, 321, 285, 208, 287, 321, 293, 321, 300,
- 298, 301, 292, 321, 220, 321, 321, 116, 321, 321,
- 205, 124, 67, 132, 321, 321, 236, 103, 321, 225,
- 277, 278, 321, 103, 321, 321, 321, 321, 285, 208,
- 287, 321, 293, 321, 300, 298, 301, 321, 321, 321,
- 300, 298, 301, 292, 216, 220, 321, 321, 116, 321,
- 321, 205, 124, 67, 321, 321, 321, 321, 103, 321,
- 321, 277, 278, 321, 321, 321, 321, 321, 321, 285,
- 208, 287, 321, 293, 321, 300, 298, 301, 292, 321,
- 220, 321, 321, 116, 321, 209, 205, 121, 72, 321,
- 321, 321, 321, 103, 321, 488, 277, 278, 488, 321,
- 321, 321, 488, 321, 285, 208, 287, 321, 293, 321,
- 300, 298, 301, 321, 321, 321, 321, 321, 292, 321,
- 220, 321, 321, 116, 323, 321, 205, 124, 78, 321,
- 321, 321, 321, 103, 488, 321, 277, 278, 321, 321,
- 321, 321, 321, 321, 285, 208, 287, 321, 293, 213,
- 215, 298, 301, 292, 321, 220, 321, 321, 110, 321,
- 321, 205, 124, 58, 321, 242, 321, 321, 103, 321,
- 321, 277, 278, 321, 321, 263, 321, 321, 19, 285,
- 208, 287, 262, 293, 321, 300, 298, 301, 321, 321,
- 292, 14, 220, 153, 321, 116, 321, 15, 205, 120,
- 62, 321, 321, 321, 321, 103, 321, 321, 277, 278,
- 321, 321, 321, 321, 321, 321, 285, 208, 287, 321,
- 293, 321, 300, 298, 301, 292, 321, 220, 321, 321,
- 116, 321, 321, 200, 119, 59, 321, 321, 321, 321,
- 103, 321, 321, 277, 278, 321, 321, 321, 321, 321,
- 321, 285, 208, 287, 321, 293, 321, 300, 298, 301,
- 321, 321, 292, 321, 220, 321, 321, 116, 321, 321,
- 205, 106, 84, 321, 321, 321, 321, 103, 321, 321,
- 277, 278, 321, 321, 321, 321, 321, 321, 285, 208,
- 287, 321, 293, 321, 300, 298, 301, 292, 321, 220,
- 321, 321, 116, 321, 321, 205, 107, 83, 321, 321,
- 321, 321, 103, 321, 321, 277, 278, 321, 321, 321,
- 321, 321, 321, 285, 208, 287, 321, 293, 321, 300,
- 298, 301, 321, 321, 292, 321, 220, 321, 321, 116,
- 321, 321, 205, 124, 55, 321, 321, 321, 321, 103,
- 321, 321, 277, 278, 321, 321, 321, 321, 321, 321,
- 285, 208, 287, 321, 293, 321, 300, 298, 301, 292,
- 321, 220, 321, 321, 116, 321, 321, 205, 124, 66,
- 321, 321, 321, 321, 103, 321, 321, 277, 278, 321,
- 321, 321, 321, 321, 321, 285, 208, 287, 321, 293,
- 321, 300, 298, 301, 321, 321, 292, 321, 220, 321,
- 321, 116, 321, 321, 205, 106, 56, 321, 321, 321,
- 321, 103, 321, 321, 277, 278, 321, 321, 321, 321,
- 321, 321, 285, 208, 287, 321, 293, 321, 300, 298,
- 301, 292, 321, 220, 321, 321, 116, 321, 321, 205,
- 124, 65, 321, 321, 321, 321, 103, 321, 321, 277,
- 278, 321, 321, 321, 321, 321, 321, 285, 208, 287,
- 321, 293, 321, 300, 298, 301, 321, 321, 292, 321,
- 220, 321, 321, 116, 321, 321, 205, 124, 57, 321,
- 321, 321, 321, 103, 321, 321, 277, 278, 321, 321,
- 321, 321, 321, 321, 285, 208, 287, 321, 293, 321,
- 300, 298, 301, 292, 321, 220, 321, 321, 116, 321,
- 321, 205, 124, 58, 321, 321, 321, 321, 103, 321,
- 321, 277, 278, 321, 321, 321, 321, 321, 321, 285,
- 208, 287, 321, 293, 321, 300, 298, 301, 321, 321,
- 292, 321, 220, 321, 321, 116, 321, 321, 205, 124,
- 68, 321, 321, 321, 321, 103, 321, 321, 277, 278,
- 321, 321, 321, 321, 321, 321, 285, 208, 287, 321,
- 293, 321, 300, 298, 301, 292, 321, 220, 321, 321,
- 116, 321, 321, 205, 124, 69, 321, 321, 321, 321,
- 103, 321, 321, 277, 278, 321, 321, 321, 321, 321,
- 321, 285, 208, 287, 321, 293, 321, 300, 298, 301,
- 321, 321, 292, 321, 220, 321, 321, 116, 321, 321,
- 205, 124, 70, 321, 321, 321, 321, 103, 321, 321,
- 277, 278, 321, 321, 321, 321, 321, 321, 285, 208,
- 287, 321, 293, 321, 300, 298, 301, 292, 321, 220,
- 321, 321, 116, 321, 321, 205, 124, 71, 321, 321,
- 321, 321, 103, 321, 321, 277, 278, 321, 321, 321,
- 321, 321, 321, 285, 208, 287, 321, 293, 321, 300,
- 298, 301, 321, 321, 292, 321, 220, 321, 321, 116,
- 321, 321, 205, 124, 73, 321, 321, 321, 321, 103,
- 321, 321, 277, 278, 321, 321, 321, 321, 321, 321,
- 285, 208, 287, 321, 293, 321, 300, 298, 301, 292,
- 321, 220, 321, 321, 116, 321, 321, 199, 124, 61,
- 321, 321, 321, 321, 103, 321, 321, 277, 278, 321,
- 321, 321, 321, 321, 321, 285, 208, 287, 321, 293,
- 321, 300, 298, 301, 321, 321, 292, 321, 220, 321,
- 321, 116, 321, 321, 205, 124, 74, 321, 321, 321,
- 321, 103, 321, 321, 277, 278, 321, 321, 321, 321,
- 321, 321, 285, 208, 287, 321, 293, 321, 300, 298,
- 301, 292, 321, 220, 321, 321, 116, 321, 321, 205,
- 124, 75, 321, 321, 321, 321, 103, 321, 321, 277,
- 278, 321, 321, 321, 321, 321, 321, 285, 208, 287,
- 321, 293, 321, 300, 298, 301, 321, 321, 292, 321,
- 220, 321, 321, 116, 321, 321, 205, 124, 76, 321,
- 321, 321, 321, 103, 321, 321, 277, 278, 321, 321,
- 321, 321, 321, 321, 285, 208, 287, 321, 293, 321,
- 300, 298, 301, 292, 321, 220, 321, 321, 116, 321,
- 321, 205, 124, 77, 321, 321, 321, 321, 103, 321,
- 321, 277, 278, 321, 321, 321, 321, 321, 321, 285,
- 208, 287, 321, 293, 321, 300, 298, 301, 321, 321,
- 292, 321, 220, 321, 321, 116, 321, 321, 205, 124,
- 63, 321, 321, 321, 321, 103, 321, 321, 277, 278,
- 321, 321, 321, 321, 321, 321, 285, 208, 287, 321,
- 293, 321, 300, 298, 301, 292, 321, 220, 321, 321,
- 116, 321, 321, 205, 124, 64, 321, 321, 321, 321,
- 103, 321, 321, 277, 278, 321, 321, 321, 321, 321,
- 321, 285, 208, 287, 321, 293, 321, 300, 298, 301,
- 321, 321, 292, 321, 220, 321, 321, 116, 321, 321,
- 205, 124, 79, 321, 321, 321, 321, 103, 321, 321,
- 277, 278, 321, 321, 321, 321, 321, 321, 285, 208,
- 287, 321, 293, 321, 214, 298, 301, 292, 321, 220,
- 321, 321, 116, 321, 321, 205, 124, 80, 321, 321,
- 321, 321, 103, 321, 321, 277, 278, 321, 321, 321,
- 321, 321, 321, 285, 208, 287, 321, 293, 321, 300,
- 298, 301, 321, 321, 292, 321, 220, 321, 321, 116,
- 321, 321, 205, 124, 81, 321, 321, 321, 321, 103,
- 321, 321, 277, 278, 321, 321, 321, 321, 321, 321,
- 285, 208, 287, 321, 293, 321, 300, 298, 301, 292,
- 321, 220, 321, 321, 116, 321, 321, 205, 124, 82,
- 321, 321, 321, 321, 103, 321, 321, 277, 278, 321,
- 321, 321, 321, 321, 321, 285, 208, 287, 321, 293,
- 321, 300, 298, 301, 321, 321, 292, 321, 220, 321,
- 321, 116, 321, 321, 205, 124, 50, 321, 321, 321,
- 321, 103, 321, 321, 277, 278, 321, 321, 321, 321,
- 321, 321, 285, 208, 287, 321, 293, 321, 300, 298,
- 301, 292, 321, 220, 321, 321, 116, 321, 321, 205,
- 124, 52, 321, 321, 321, 321, 103, 321, 321, 277,
- 278, 321, 321, 321, 321, 321, 321, 285, 208, 287,
- 321, 293, 321, 300, 298, 301, 321, 321, 292, 321,
- 220, 321, 321, 116, 321, 321, 205, 137, 321, 321,
- 321, 321, 292, 103, 220, 321, 321, 116, 321, 321,
- 205, 130, 338, 321, 285, 208, 287, 103, 293, 321,
- 300, 298, 301, 321, 321, 321, 291, 321, 285, 208,
- 287, 321, 293, 320, 300, 298, 301, 321, 321, 251,
- 252, 253, 2, 321, 318, 321, 321, 321, 6, 88,
- 321, 321, 321, 321, 114, 321, 321, 151, 221, 265,
- 222, 321, 321, 321, 39, 321, 14, 42, 43, 290,
- 12, 321, 15, 321, 321, 321, 321, 42, 43, 290,
- 12, 321, 321, 321, 304, 305, 306, 307, 308, 313,
- 27, 321, 321, 320, 304, 305, 306, 307, 308, 251,
- 252, 253, 2, 321, 318, 321, 321, 321, 6, 88,
- 263, 321, 321, 19, 114, 321, 321, 262, 221, 265,
- 222, 336, 42, 43, 290, 12, 14, 42, 43, 290,
- 12, 321, 15, 321, 321, 321, 321, 321, 321, 304,
- 305, 306, 307, 308, 304, 305, 306, 307, 308, 314,
- 27, 316, 321, 244, 245, 246, 136, 227, 321, 251,
- 252, 253, 1, 321, 488, 321, 321, 488, 6, 88,
- 3, 488, 472, 321, 114, 321, 280, 321, 221, 265,
- 222, 292, 321, 220, 321, 321, 116, 321, 321, 205,
- 135, 321, 321, 321, 321, 321, 103, 321, 472, 321,
- 321, 472, 321, 488, 321, 472, 321, 285, 208, 287,
- 321, 293, 321, 300, 298, 301, 321, 292, 321, 220,
- 171, 321, 116, 321, 321, 205, 125, 321, 321, 321,
- 260, 321, 103, 47, 22, 289, 41, 321, 48, 321,
- 321, 321, 321, 285, 208, 287, 321, 293, 321, 300,
- 298, 301, 321, 292, 321, 220, 321, 148, 116, 321,
- 321, 205, 126, 321, 321, 321, 321, 260, 103, 321,
- 47, 22, 289, 41, 321, 48, 321, 321, 321, 285,
- 208, 287, 321, 293, 321, 300, 298, 301, 321, 292,
- 321, 220, 321, 172, 116, 321, 321, 205, 127, 321,
- 321, 321, 321, 260, 103, 321, 47, 22, 289, 41,
- 132, 48, 321, 270, 321, 285, 208, 287, 321, 293,
- 103, 300, 298, 301, 321, 292, 321, 220, 321, 321,
- 116, 321, 269, 205, 128, 321, 321, 300, 298, 301,
- 103, 321, 321, 321, 321, 321, 321, 321, 321, 321,
- 321, 285, 208, 287, 321, 293, 321, 300, 298, 301,
- 321, 292, 321, 220, 321, 321, 116, 321, 321, 205,
- 129, 321, 321, 321, 321, 321, 103, 321, 321, 321,
- 321, 321, 321, 321, 321, 321, 321, 285, 208, 287,
- 321, 293, 321, 300, 298, 301, 321, 292, 321, 220,
- 321, 321, 116, 321, 204, 205, 131, 321, 321, 321,
- 321, 321, 103, 321, 321, 321, 370, 321, 321, 321,
- 234, 321, 321, 285, 208, 287, 321, 293, 14, 300,
- 298, 301, 321, 292, 15, 220, 414, 452, 116, 321,
- 321, 205, 134, 321, 321, 321, 321, 321, 103, 452,
- 321, 321, 321, 321, 321, 321, 321, 321, 321, 285,
- 208, 287, 321, 293, 321, 300, 298, 301, 452, 321,
- 414, 414, 414, 414, 321, 321, 321, 321, 321, 321,
- 452, 321, 321, 321, 321, 321, 321, 414, 414, 414,
- 414, 414, 227, 321, 321, 321, 321, 321, 321, 488,
- 321, 321, 488, 321, 321, 227, 488, 472, 321, 321,
- 321, 280, 488, 321, 321, 488, 321, 321, 36, 488,
- 472, 321, 321, 321, 280, 321, 321, 321, 321, 321,
- 321, 321, 337, 472, 321, 321, 472, 321, 488, 321,
- 472, 296, 321, 321, 321, 321, 472, 321, 321, 472,
- 321, 488, 321, 472, 29, 42, 43, 290, 12, 321,
- 312, 321, 321, 321, 321, 321, 321, 321, 321, 321,
- 321, 321, 304, 305, 306, 307, 308, 42, 43, 290,
- 12, 321, 321, 42, 43, 290, 12, 189, 42, 43,
- 290, 12, 327, 190, 304, 305, 306, 307, 308, 339,
- 304, 305, 306, 307, 308, 304, 305, 306, 307, 308,
- 42, 43, 290, 12, 321, 321, 42, 43, 290, 12,
- 321, 321, 42, 43, 290, 12, 321, 304, 305, 306,
- 307, 308, 321, 304, 305, 306, 307, 308, 227, 304,
- 305, 306, 307, 308, 28, 488, 321, 321, 488, 321,
- 321, 488, 488, 472, 488, 321, 321, 280, 488, 472,
- 321, 321, 321, 280, 321, 321, 321, 321, 321, 321,
- 321, 321, 321, 321, 321, 321, 321, 321, 321, 472,
- 321, 321, 472, 321, 488, 472, 472, 321, 472, 321,
- 488, 321, 472, 321, 42, 43, 290, 12, 321, 321,
- 321, 321, 321, 321, 321, 321, 321, 321, 321, 321,
- 321, 304, 305, 306, 307, 308,
+ 30, 47, 22, 292, 41, 14, 48, 252, 253, 254,
+ 1, 15, 142, 242, 208, 206, 6, 88, 206, 228,
+ 244, 205, 114, 109, 406, 206, 223, 266, 224, 103,
+ 230, 406, 21, 406, 226, 44, 406, 29, 45, 46,
+ 283, 232, 406, 287, 406, 209, 406, 54, 4, 14,
+ 304, 186, 333, 290, 231, 15, 5, 86, 252, 253,
+ 254, 1, 103, 139, 400, 199, 241, 6, 88, 518,
+ 228, 552, 101, 114, 153, 258, 400, 223, 266, 224,
+ 144, 213, 400, 21, 261, 453, 44, 13, 144, 45,
+ 46, 283, 232, 206, 240, 13, 209, 453, 54, 4,
+ 332, 304, 206, 40, 262, 368, 156, 5, 86, 252,
+ 253, 254, 1, 143, 102, 272, 87, 368, 6, 88,
+ 310, 228, 103, 368, 114, 319, 156, 222, 223, 266,
+ 224, 274, 230, 184, 21, 290, 143, 44, 235, 10,
+ 45, 46, 283, 232, 175, 287, 273, 209, 54, 54,
+ 4, 304, 304, 251, 183, 222, 290, 180, 5, 86,
+ 252, 253, 254, 1, 20, 141, 198, 208, 276, 6,
+ 88, 54, 228, 315, 304, 114, 190, 265, 453, 223,
+ 266, 224, 206, 230, 277, 21, 147, 238, 44, 190,
+ 453, 45, 46, 283, 232, 329, 287, 3, 209, 103,
+ 54, 4, 146, 304, 304, 289, 98, 311, 23, 5,
+ 86, 252, 253, 254, 1, 269, 141, 134, 200, 367,
+ 6, 88, 25, 228, 304, 367, 114, 108, 117, 453,
+ 223, 266, 224, 34, 230, 233, 21, 167, 53, 44,
+ 304, 453, 45, 46, 283, 232, 103, 287, 37, 209,
+ 103, 54, 4, 336, 304, 157, 206, 262, 367, 145,
+ 5, 86, 252, 253, 254, 1, 269, 140, 402, 208,
+ 367, 6, 88, 304, 228, 117, 367, 114, 155, 117,
+ 402, 223, 266, 224, 260, 230, 402, 11, 261, 53,
+ 44, 206, 24, 45, 46, 283, 232, 206, 287, 166,
+ 209, 262, 54, 4, 183, 304, 290, 163, 262, 399,
+ 262, 5, 86, 252, 253, 254, 1, 261, 141, 165,
+ 195, 399, 6, 88, 36, 228, 274, 399, 114, 261,
+ 242, 113, 223, 266, 224, 91, 219, 344, 21, 341,
+ 109, 44, 18, 189, 45, 46, 283, 232, 15, 287,
+ 242, 209, 473, 54, 4, 189, 304, 243, 269, 473,
+ 109, 177, 5, 86, 252, 253, 254, 1, 33, 141,
+ 148, 193, 92, 6, 88, 264, 228, 304, 19, 114,
+ 261, 53, 263, 223, 266, 224, 159, 230, 327, 21,
+ 10, 150, 44, 190, 206, 45, 46, 283, 232, 151,
+ 287, 109, 209, 161, 54, 4, 269, 304, 182, 261,
+ 118, 171, 168, 5, 86, 252, 253, 254, 1, 16,
+ 141, 261, 208, 8, 6, 88, 181, 228, 290, 53,
+ 114, 319, 97, 222, 223, 266, 224, 185, 194, 290,
+ 21, 325, 297, 44, 298, 317, 45, 46, 283, 232,
+ 174, 287, 473, 209, 134, 54, 4, 189, 304, 473,
+ 261, 178, 220, 203, 5, 86, 252, 253, 254, 1,
+ 187, 143, 250, 208, 40, 6, 88, 489, 90, 321,
+ 489, 114, 17, 265, 489, 223, 266, 224, 343, 230,
+ 269, 21, 291, 190, 49, 249, 250, 45, 46, 283,
+ 232, 268, 287, 8, 209, 322, 54, 4, 7, 304,
+ 204, 453, 31, 53, 100, 5, 86, 252, 253, 254,
+ 1, 93, 143, 453, 208, 162, 6, 88, 455, 95,
+ 455, 454, 114, 225, 9, 261, 223, 266, 224, 231,
+ 230, 99, 21, 454, 176, 44, 119, 328, 45, 46,
+ 283, 232, 457, 287, 457, 209, 169, 54, 4, 170,
+ 304, 190, 32, 32, 334, 335, 5, 86, 179, 295,
+ 221, 222, 257, 248, 94, 111, 255, 197, 105, 85,
+ 35, 256, 231, 188, 104, 115, 267, 278, 279, 284,
+ 164, 124, 275, 280, 96, 286, 210, 288, 282, 296,
+ 261, 302, 301, 303, 295, 221, 222, 257, 231, 94,
+ 111, 300, 196, 105, 60, 285, 89, 239, 342, 104,
+ 158, 160, 278, 279, 37, 330, 190, 345, 331, 38,
+ 286, 210, 288, 322, 296, 322, 302, 301, 303, 295,
+ 322, 222, 259, 322, 116, 111, 322, 197, 105, 85,
+ 322, 322, 264, 322, 104, 19, 322, 278, 279, 263,
+ 322, 322, 322, 322, 322, 286, 210, 288, 322, 296,
+ 322, 302, 301, 303, 295, 322, 222, 322, 112, 116,
+ 322, 322, 207, 121, 71, 322, 322, 322, 322, 104,
+ 322, 234, 278, 279, 42, 43, 293, 12, 322, 322,
+ 286, 210, 288, 322, 296, 322, 302, 301, 303, 322,
+ 322, 305, 306, 307, 308, 309, 295, 322, 222, 212,
+ 324, 116, 322, 322, 207, 121, 71, 14, 322, 489,
+ 322, 104, 489, 15, 278, 279, 489, 473, 42, 43,
+ 293, 12, 286, 210, 288, 322, 296, 322, 302, 301,
+ 303, 322, 322, 322, 322, 305, 306, 307, 308, 309,
+ 322, 211, 324, 473, 322, 322, 473, 295, 489, 222,
+ 473, 322, 110, 322, 322, 207, 125, 51, 322, 123,
+ 264, 322, 104, 19, 322, 278, 279, 263, 322, 322,
+ 322, 322, 322, 286, 210, 288, 322, 296, 322, 302,
+ 301, 303, 295, 322, 222, 322, 322, 116, 322, 322,
+ 207, 125, 67, 133, 322, 322, 236, 104, 322, 227,
+ 278, 279, 322, 104, 322, 322, 322, 322, 286, 210,
+ 288, 322, 296, 322, 302, 301, 303, 322, 322, 322,
+ 302, 301, 303, 295, 217, 222, 322, 322, 116, 322,
+ 322, 207, 121, 71, 322, 322, 322, 322, 104, 322,
+ 322, 278, 279, 322, 322, 322, 322, 322, 322, 286,
+ 210, 288, 322, 296, 322, 302, 301, 303, 295, 322,
+ 222, 322, 322, 116, 322, 322, 207, 125, 77, 323,
+ 322, 322, 322, 104, 322, 322, 278, 279, 322, 322,
+ 322, 322, 322, 322, 286, 210, 288, 322, 296, 214,
+ 216, 301, 303, 322, 322, 295, 322, 222, 322, 322,
+ 116, 322, 322, 207, 125, 67, 322, 322, 322, 322,
+ 104, 322, 322, 278, 279, 322, 322, 322, 322, 322,
+ 322, 286, 210, 288, 322, 296, 322, 302, 301, 303,
+ 295, 322, 222, 322, 322, 110, 322, 218, 207, 125,
+ 58, 322, 243, 322, 322, 104, 322, 322, 278, 279,
+ 322, 322, 264, 322, 322, 19, 286, 210, 288, 263,
+ 296, 322, 302, 301, 303, 322, 322, 295, 14, 222,
+ 154, 322, 116, 322, 15, 207, 122, 62, 322, 322,
+ 489, 322, 104, 489, 322, 278, 279, 489, 322, 322,
+ 322, 322, 322, 286, 210, 288, 322, 296, 322, 302,
+ 301, 303, 295, 322, 222, 322, 322, 116, 322, 322,
+ 202, 120, 59, 322, 322, 322, 322, 104, 322, 489,
+ 278, 279, 322, 322, 322, 322, 322, 322, 286, 210,
+ 288, 322, 296, 322, 302, 301, 303, 322, 322, 295,
+ 322, 222, 322, 322, 116, 322, 322, 207, 106, 84,
+ 322, 322, 322, 322, 104, 322, 322, 278, 279, 322,
+ 322, 322, 322, 322, 322, 286, 210, 288, 322, 296,
+ 322, 302, 301, 303, 295, 322, 222, 322, 322, 116,
+ 322, 322, 207, 107, 83, 322, 322, 322, 322, 104,
+ 322, 322, 278, 279, 322, 322, 322, 322, 322, 322,
+ 286, 210, 288, 322, 296, 322, 302, 301, 303, 322,
+ 322, 295, 322, 222, 322, 322, 116, 322, 322, 207,
+ 125, 55, 322, 322, 322, 322, 104, 322, 322, 278,
+ 279, 322, 322, 322, 322, 322, 322, 286, 210, 288,
+ 322, 296, 322, 302, 301, 303, 295, 322, 222, 322,
+ 322, 116, 322, 322, 207, 125, 66, 322, 322, 322,
+ 322, 104, 322, 322, 278, 279, 322, 322, 322, 322,
+ 322, 322, 286, 210, 288, 322, 296, 322, 302, 301,
+ 303, 322, 322, 295, 322, 222, 322, 322, 116, 322,
+ 322, 207, 106, 56, 322, 322, 322, 322, 104, 322,
+ 322, 278, 279, 322, 322, 322, 322, 322, 322, 286,
+ 210, 288, 322, 296, 322, 302, 301, 303, 295, 322,
+ 222, 322, 322, 116, 322, 322, 207, 125, 65, 322,
+ 322, 322, 322, 104, 322, 322, 278, 279, 322, 322,
+ 322, 322, 322, 322, 286, 210, 288, 322, 296, 322,
+ 302, 301, 303, 322, 322, 295, 322, 222, 322, 322,
+ 116, 322, 322, 207, 125, 57, 322, 322, 322, 322,
+ 104, 322, 322, 278, 279, 322, 322, 322, 322, 322,
+ 322, 286, 210, 288, 322, 296, 322, 302, 301, 303,
+ 295, 322, 222, 322, 322, 116, 322, 322, 207, 125,
+ 58, 322, 322, 322, 322, 104, 322, 322, 278, 279,
+ 322, 322, 322, 322, 322, 322, 286, 210, 288, 322,
+ 296, 322, 302, 301, 303, 322, 322, 295, 322, 222,
+ 322, 322, 116, 322, 322, 207, 125, 68, 322, 322,
+ 322, 322, 104, 322, 322, 278, 279, 322, 322, 322,
+ 322, 322, 322, 286, 210, 288, 322, 296, 322, 302,
+ 301, 303, 295, 322, 222, 322, 322, 116, 322, 322,
+ 207, 125, 69, 322, 322, 322, 322, 104, 322, 322,
+ 278, 279, 322, 322, 322, 322, 322, 322, 286, 210,
+ 288, 322, 296, 322, 302, 301, 303, 322, 322, 295,
+ 322, 222, 322, 322, 116, 322, 322, 207, 125, 70,
+ 322, 322, 322, 322, 104, 322, 322, 278, 279, 322,
+ 322, 322, 322, 322, 322, 286, 210, 288, 322, 296,
+ 322, 302, 301, 303, 295, 322, 222, 322, 322, 116,
+ 322, 322, 207, 125, 72, 322, 322, 322, 322, 104,
+ 322, 322, 278, 279, 322, 322, 322, 322, 322, 322,
+ 286, 210, 288, 322, 296, 322, 302, 301, 303, 322,
+ 322, 295, 322, 222, 322, 322, 116, 322, 322, 201,
+ 125, 61, 322, 322, 322, 322, 104, 322, 322, 278,
+ 279, 322, 322, 322, 322, 322, 322, 286, 210, 288,
+ 322, 296, 322, 302, 301, 303, 295, 322, 222, 322,
+ 322, 116, 322, 322, 207, 125, 73, 322, 322, 322,
+ 322, 104, 322, 322, 278, 279, 322, 322, 322, 322,
+ 322, 322, 286, 210, 288, 322, 296, 322, 302, 301,
+ 303, 322, 322, 295, 322, 222, 322, 322, 116, 322,
+ 322, 207, 125, 74, 322, 322, 322, 322, 104, 322,
+ 322, 278, 279, 322, 322, 322, 322, 322, 322, 286,
+ 210, 288, 322, 296, 322, 302, 301, 303, 295, 322,
+ 222, 322, 322, 116, 322, 322, 207, 125, 75, 322,
+ 322, 322, 322, 104, 322, 322, 278, 279, 322, 322,
+ 322, 322, 322, 322, 286, 210, 288, 322, 296, 322,
+ 302, 301, 303, 322, 322, 295, 322, 222, 322, 322,
+ 116, 322, 322, 207, 125, 76, 322, 322, 322, 322,
+ 104, 322, 322, 278, 279, 322, 322, 322, 322, 322,
+ 322, 286, 210, 288, 322, 296, 322, 302, 301, 303,
+ 295, 322, 222, 322, 322, 116, 322, 322, 207, 125,
+ 78, 322, 322, 322, 322, 104, 322, 322, 278, 279,
+ 322, 322, 322, 322, 322, 322, 286, 210, 288, 322,
+ 296, 322, 215, 301, 303, 322, 322, 295, 322, 222,
+ 322, 322, 116, 322, 322, 207, 125, 79, 322, 322,
+ 322, 322, 104, 322, 322, 278, 279, 322, 322, 322,
+ 322, 322, 322, 286, 210, 288, 322, 296, 322, 302,
+ 301, 303, 295, 322, 222, 322, 322, 116, 322, 322,
+ 207, 125, 63, 322, 322, 322, 322, 104, 322, 322,
+ 278, 279, 322, 322, 322, 322, 322, 322, 286, 210,
+ 288, 322, 296, 322, 302, 301, 303, 322, 322, 295,
+ 322, 222, 322, 322, 116, 322, 322, 207, 125, 64,
+ 322, 322, 322, 322, 104, 322, 322, 278, 279, 322,
+ 322, 322, 322, 322, 322, 286, 210, 288, 322, 296,
+ 322, 302, 301, 303, 295, 322, 222, 322, 322, 116,
+ 322, 322, 207, 125, 80, 322, 322, 322, 322, 104,
+ 322, 322, 278, 279, 322, 322, 322, 322, 322, 322,
+ 286, 210, 288, 322, 296, 322, 302, 301, 303, 322,
+ 322, 295, 322, 222, 322, 322, 116, 322, 322, 207,
+ 125, 81, 322, 322, 322, 322, 104, 322, 322, 278,
+ 279, 322, 322, 322, 322, 322, 322, 286, 210, 288,
+ 322, 296, 322, 302, 301, 303, 295, 322, 222, 322,
+ 322, 116, 322, 322, 207, 125, 82, 322, 322, 322,
+ 322, 104, 322, 322, 278, 279, 322, 322, 322, 322,
+ 322, 322, 286, 210, 288, 322, 296, 322, 302, 301,
+ 303, 322, 322, 295, 322, 222, 322, 322, 116, 322,
+ 322, 207, 125, 50, 322, 322, 322, 322, 104, 322,
+ 322, 278, 279, 322, 322, 322, 322, 322, 322, 286,
+ 210, 288, 322, 296, 322, 302, 301, 303, 295, 322,
+ 222, 322, 322, 116, 322, 322, 207, 125, 52, 322,
+ 322, 322, 322, 104, 322, 322, 278, 279, 322, 322,
+ 322, 322, 322, 322, 286, 210, 288, 322, 296, 322,
+ 302, 301, 303, 322, 322, 295, 322, 222, 322, 322,
+ 116, 322, 322, 207, 138, 322, 322, 322, 322, 295,
+ 104, 222, 322, 322, 116, 322, 322, 207, 131, 339,
+ 322, 286, 210, 288, 104, 296, 322, 302, 301, 303,
+ 322, 322, 322, 294, 322, 286, 210, 288, 322, 296,
+ 320, 302, 301, 303, 322, 322, 252, 253, 254, 2,
+ 322, 318, 322, 322, 322, 6, 88, 322, 322, 322,
+ 322, 114, 322, 322, 152, 223, 266, 224, 322, 322,
+ 322, 39, 322, 14, 42, 43, 293, 12, 322, 15,
+ 322, 322, 322, 322, 42, 43, 293, 12, 322, 322,
+ 322, 305, 306, 307, 308, 309, 313, 26, 322, 322,
+ 320, 305, 306, 307, 308, 309, 252, 253, 254, 2,
+ 322, 318, 322, 322, 322, 6, 88, 264, 322, 322,
+ 19, 114, 322, 322, 263, 223, 266, 224, 337, 42,
+ 43, 293, 12, 14, 42, 43, 293, 12, 322, 15,
+ 322, 322, 322, 322, 322, 322, 305, 306, 307, 308,
+ 309, 305, 306, 307, 308, 309, 314, 26, 316, 322,
+ 245, 246, 247, 137, 229, 322, 252, 253, 254, 1,
+ 322, 489, 322, 322, 489, 6, 88, 3, 489, 473,
+ 322, 114, 322, 281, 322, 223, 266, 224, 295, 322,
+ 222, 322, 322, 116, 322, 322, 207, 136, 322, 322,
+ 322, 322, 322, 104, 322, 473, 322, 322, 473, 322,
+ 489, 322, 473, 322, 286, 210, 288, 322, 296, 322,
+ 302, 301, 303, 322, 295, 322, 222, 172, 322, 116,
+ 322, 322, 207, 126, 322, 322, 322, 261, 322, 104,
+ 47, 22, 292, 41, 322, 48, 322, 322, 322, 322,
+ 286, 210, 288, 322, 296, 322, 302, 301, 303, 322,
+ 295, 322, 222, 322, 149, 116, 322, 322, 207, 127,
+ 322, 322, 322, 322, 261, 104, 322, 47, 22, 292,
+ 41, 322, 48, 322, 322, 322, 286, 210, 288, 322,
+ 296, 322, 302, 301, 303, 322, 295, 322, 222, 322,
+ 173, 116, 322, 322, 207, 128, 322, 322, 322, 322,
+ 261, 104, 322, 47, 22, 292, 41, 133, 48, 322,
+ 271, 322, 286, 210, 288, 322, 296, 104, 302, 301,
+ 303, 322, 295, 322, 222, 322, 322, 116, 322, 270,
+ 207, 129, 322, 322, 302, 301, 303, 104, 322, 322,
+ 322, 322, 322, 322, 322, 322, 322, 322, 286, 210,
+ 288, 322, 296, 322, 302, 301, 303, 322, 295, 322,
+ 222, 322, 322, 116, 322, 322, 207, 130, 322, 322,
+ 322, 322, 322, 104, 322, 322, 322, 322, 322, 322,
+ 322, 322, 322, 322, 286, 210, 288, 322, 296, 322,
+ 302, 301, 303, 322, 295, 322, 222, 322, 322, 116,
+ 322, 206, 207, 132, 322, 322, 322, 322, 322, 104,
+ 322, 322, 322, 371, 322, 322, 322, 237, 322, 322,
+ 286, 210, 288, 322, 296, 14, 302, 301, 303, 322,
+ 295, 15, 222, 415, 453, 116, 322, 322, 207, 135,
+ 322, 322, 322, 322, 322, 104, 453, 322, 322, 322,
+ 322, 322, 322, 322, 322, 322, 286, 210, 288, 322,
+ 296, 322, 302, 301, 303, 453, 322, 415, 415, 415,
+ 415, 322, 322, 322, 322, 322, 322, 453, 322, 322,
+ 322, 322, 322, 322, 415, 415, 415, 415, 415, 229,
+ 322, 322, 322, 322, 322, 322, 489, 322, 322, 489,
+ 322, 322, 229, 489, 473, 322, 322, 322, 281, 489,
+ 322, 322, 489, 322, 322, 36, 489, 473, 322, 322,
+ 322, 281, 322, 322, 322, 322, 322, 322, 322, 338,
+ 473, 322, 322, 473, 322, 489, 322, 473, 299, 322,
+ 322, 322, 322, 473, 322, 322, 473, 322, 489, 322,
+ 473, 28, 42, 43, 293, 12, 322, 312, 322, 322,
+ 322, 322, 322, 322, 322, 322, 322, 322, 322, 305,
+ 306, 307, 308, 309, 42, 43, 293, 12, 322, 322,
+ 42, 43, 293, 12, 191, 42, 43, 293, 12, 326,
+ 192, 305, 306, 307, 308, 309, 340, 305, 306, 307,
+ 308, 309, 305, 306, 307, 308, 309, 42, 43, 293,
+ 12, 322, 322, 42, 43, 293, 12, 322, 322, 42,
+ 43, 293, 12, 322, 305, 306, 307, 308, 309, 322,
+ 305, 306, 307, 308, 309, 229, 305, 306, 307, 308,
+ 309, 27, 489, 322, 322, 489, 322, 322, 489, 489,
+ 473, 489, 322, 322, 281, 489, 473, 322, 322, 322,
+ 281, 322, 322, 322, 322, 322, 322, 322, 322, 322,
+ 322, 322, 322, 322, 322, 322, 473, 322, 322, 473,
+ 322, 489, 473, 473, 322, 473, 322, 489, 322, 473,
+ 322, 42, 43, 293, 12, 322, 322, 322, 322, 322,
+ 322, 322, 322, 322, 322, 322, 322, 322, 305, 306,
+ 307, 308, 309,
);
public static $yy_lookahead = array(
2, 86, 87, 88, 89, 25, 91, 9, 10, 11,
@@ -557,8 +557,8 @@ public static $yy_action = array(
41, 42, 43, 1, 45, 50, 47, 46, 49, 50,
51, 52, 1, 2, 103, 13, 101, 58, 59, 9,
10, 11, 12, 14, 14, 16, 16, 25, 18, 19,
- 70, 21, 101, 31, 24, 66, 20, 68, 28, 29,
- 30, 102, 32, 104, 34, 106, 14, 37, 16, 33,
+ 70, 21, 17, 31, 24, 66, 101, 68, 28, 29,
+ 30, 102, 32, 104, 34, 106, 14, 37, 16, 34,
40, 41, 42, 43, 77, 45, 47, 47, 49, 49,
50, 52, 52, 66, 104, 68, 106, 77, 58, 59,
9, 10, 11, 12, 12, 14, 14, 16, 16, 18,
@@ -586,28 +586,28 @@ public static $yy_action = array(
83, 44, 16, 28, 29, 30, 101, 32, 51, 34,
34, 71, 37, 109, 1, 40, 41, 42, 43, 73,
45, 81, 47, 101, 49, 50, 21, 52, 14, 83,
- 16, 73, 43, 58, 59, 9, 10, 11, 12, 50,
+ 16, 73, 101, 58, 59, 9, 10, 11, 12, 20,
14, 83, 16, 33, 18, 19, 104, 21, 106, 44,
- 24, 66, 101, 68, 28, 29, 30, 6, 32, 8,
+ 24, 66, 33, 68, 28, 29, 30, 104, 32, 106,
34, 51, 95, 37, 51, 60, 40, 41, 42, 43,
- 73, 45, 109, 47, 107, 49, 50, 33, 52, 35,
+ 73, 45, 43, 47, 107, 49, 50, 109, 52, 50,
83, 77, 64, 65, 58, 59, 9, 10, 11, 12,
- 33, 14, 35, 16, 2, 18, 19, 9, 113, 114,
+ 6, 14, 8, 16, 2, 18, 19, 9, 113, 114,
12, 24, 15, 110, 16, 28, 29, 30, 21, 32,
- 21, 34, 34, 109, 37, 7, 8, 40, 41, 42,
- 43, 16, 45, 33, 47, 35, 49, 50, 101, 52,
- 106, 34, 33, 44, 35, 58, 59, 9, 10, 11,
- 12, 65, 14, 46, 16, 73, 18, 19, 33, 77,
+ 21, 34, 106, 109, 37, 7, 8, 40, 41, 42,
+ 43, 16, 45, 33, 47, 35, 49, 50, 34, 52,
+ 65, 34, 33, 44, 35, 58, 59, 9, 10, 11,
+ 12, 101, 14, 46, 16, 73, 18, 19, 33, 77,
35, 34, 24, 48, 34, 83, 28, 29, 30, 43,
32, 82, 34, 46, 82, 37, 46, 51, 40, 41,
- 42, 43, 33, 45, 35, 47, 82, 49, 50, 7,
- 52, 109, 101, 15, 101, 16, 58, 59, 13, 66,
- 67, 68, 69, 13, 71, 72, 14, 74, 75, 76,
- 16, 16, 16, 16, 81, 16, 43, 84, 85, 32,
- 73, 43, 34, 32, 77, 92, 93, 94, 16, 96,
- 83, 98, 99, 100, 66, 67, 68, 69, 16, 71,
- 72, 16, 74, 75, 76, 16, 15, 49, 35, 81,
- 49, 51, 84, 85, 22, 51, 109, 115, 115, 115,
+ 42, 43, 33, 45, 35, 47, 101, 49, 50, 101,
+ 52, 109, 33, 33, 35, 35, 58, 59, 82, 66,
+ 67, 68, 69, 7, 71, 72, 13, 74, 75, 76,
+ 15, 13, 43, 16, 81, 16, 16, 84, 85, 32,
+ 73, 16, 16, 14, 77, 92, 93, 94, 16, 96,
+ 83, 98, 99, 100, 66, 67, 68, 69, 43, 71,
+ 72, 16, 74, 75, 76, 32, 16, 16, 16, 81,
+ 49, 49, 84, 85, 15, 51, 109, 35, 51, 22,
92, 93, 94, 115, 96, 115, 98, 99, 100, 66,
115, 68, 69, 115, 71, 72, 115, 74, 75, 76,
115, 115, 9, 115, 81, 12, 115, 84, 85, 16,
@@ -633,244 +633,244 @@ public static $yy_action = array(
115, 74, 75, 76, 115, 115, 115, 115, 81, 115,
115, 84, 85, 115, 115, 115, 115, 115, 115, 92,
93, 94, 115, 96, 115, 98, 99, 100, 66, 115,
- 68, 115, 115, 71, 115, 108, 74, 75, 76, 115,
- 115, 115, 115, 81, 115, 9, 84, 85, 12, 115,
- 115, 115, 16, 115, 92, 93, 94, 115, 96, 115,
- 98, 99, 100, 115, 115, 115, 115, 115, 66, 115,
- 68, 115, 115, 71, 112, 115, 74, 75, 76, 115,
- 115, 115, 115, 81, 48, 115, 84, 85, 115, 115,
+ 68, 115, 115, 71, 115, 115, 74, 75, 76, 112,
+ 115, 115, 115, 81, 115, 115, 84, 85, 115, 115,
115, 115, 115, 115, 92, 93, 94, 115, 96, 97,
- 98, 99, 100, 66, 115, 68, 115, 115, 71, 115,
- 115, 74, 75, 76, 115, 78, 115, 115, 81, 115,
- 115, 84, 85, 115, 115, 9, 115, 115, 12, 92,
- 93, 94, 16, 96, 115, 98, 99, 100, 115, 115,
- 66, 25, 68, 27, 115, 71, 115, 31, 74, 75,
- 76, 115, 115, 115, 115, 81, 115, 115, 84, 85,
- 115, 115, 115, 115, 115, 115, 92, 93, 94, 115,
- 96, 115, 98, 99, 100, 66, 115, 68, 115, 115,
+ 98, 99, 100, 115, 115, 66, 115, 68, 115, 115,
71, 115, 115, 74, 75, 76, 115, 115, 115, 115,
81, 115, 115, 84, 85, 115, 115, 115, 115, 115,
115, 92, 93, 94, 115, 96, 115, 98, 99, 100,
- 115, 115, 66, 115, 68, 115, 115, 71, 115, 115,
- 74, 75, 76, 115, 115, 115, 115, 81, 115, 115,
- 84, 85, 115, 115, 115, 115, 115, 115, 92, 93,
- 94, 115, 96, 115, 98, 99, 100, 66, 115, 68,
- 115, 115, 71, 115, 115, 74, 75, 76, 115, 115,
- 115, 115, 81, 115, 115, 84, 85, 115, 115, 115,
+ 66, 115, 68, 115, 115, 71, 115, 108, 74, 75,
+ 76, 115, 78, 115, 115, 81, 115, 115, 84, 85,
+ 115, 115, 9, 115, 115, 12, 92, 93, 94, 16,
+ 96, 115, 98, 99, 100, 115, 115, 66, 25, 68,
+ 27, 115, 71, 115, 31, 74, 75, 76, 115, 115,
+ 9, 115, 81, 12, 115, 84, 85, 16, 115, 115,
115, 115, 115, 92, 93, 94, 115, 96, 115, 98,
- 99, 100, 115, 115, 66, 115, 68, 115, 115, 71,
- 115, 115, 74, 75, 76, 115, 115, 115, 115, 81,
- 115, 115, 84, 85, 115, 115, 115, 115, 115, 115,
- 92, 93, 94, 115, 96, 115, 98, 99, 100, 66,
+ 99, 100, 66, 115, 68, 115, 115, 71, 115, 115,
+ 74, 75, 76, 115, 115, 115, 115, 81, 115, 48,
+ 84, 85, 115, 115, 115, 115, 115, 115, 92, 93,
+ 94, 115, 96, 115, 98, 99, 100, 115, 115, 66,
115, 68, 115, 115, 71, 115, 115, 74, 75, 76,
115, 115, 115, 115, 81, 115, 115, 84, 85, 115,
115, 115, 115, 115, 115, 92, 93, 94, 115, 96,
- 115, 98, 99, 100, 115, 115, 66, 115, 68, 115,
+ 115, 98, 99, 100, 66, 115, 68, 115, 115, 71,
+ 115, 115, 74, 75, 76, 115, 115, 115, 115, 81,
+ 115, 115, 84, 85, 115, 115, 115, 115, 115, 115,
+ 92, 93, 94, 115, 96, 115, 98, 99, 100, 115,
+ 115, 66, 115, 68, 115, 115, 71, 115, 115, 74,
+ 75, 76, 115, 115, 115, 115, 81, 115, 115, 84,
+ 85, 115, 115, 115, 115, 115, 115, 92, 93, 94,
+ 115, 96, 115, 98, 99, 100, 66, 115, 68, 115,
115, 71, 115, 115, 74, 75, 76, 115, 115, 115,
115, 81, 115, 115, 84, 85, 115, 115, 115, 115,
115, 115, 92, 93, 94, 115, 96, 115, 98, 99,
- 100, 66, 115, 68, 115, 115, 71, 115, 115, 74,
- 75, 76, 115, 115, 115, 115, 81, 115, 115, 84,
- 85, 115, 115, 115, 115, 115, 115, 92, 93, 94,
- 115, 96, 115, 98, 99, 100, 115, 115, 66, 115,
+ 100, 115, 115, 66, 115, 68, 115, 115, 71, 115,
+ 115, 74, 75, 76, 115, 115, 115, 115, 81, 115,
+ 115, 84, 85, 115, 115, 115, 115, 115, 115, 92,
+ 93, 94, 115, 96, 115, 98, 99, 100, 66, 115,
68, 115, 115, 71, 115, 115, 74, 75, 76, 115,
115, 115, 115, 81, 115, 115, 84, 85, 115, 115,
115, 115, 115, 115, 92, 93, 94, 115, 96, 115,
- 98, 99, 100, 66, 115, 68, 115, 115, 71, 115,
- 115, 74, 75, 76, 115, 115, 115, 115, 81, 115,
- 115, 84, 85, 115, 115, 115, 115, 115, 115, 92,
- 93, 94, 115, 96, 115, 98, 99, 100, 115, 115,
- 66, 115, 68, 115, 115, 71, 115, 115, 74, 75,
- 76, 115, 115, 115, 115, 81, 115, 115, 84, 85,
- 115, 115, 115, 115, 115, 115, 92, 93, 94, 115,
- 96, 115, 98, 99, 100, 66, 115, 68, 115, 115,
+ 98, 99, 100, 115, 115, 66, 115, 68, 115, 115,
71, 115, 115, 74, 75, 76, 115, 115, 115, 115,
81, 115, 115, 84, 85, 115, 115, 115, 115, 115,
115, 92, 93, 94, 115, 96, 115, 98, 99, 100,
- 115, 115, 66, 115, 68, 115, 115, 71, 115, 115,
- 74, 75, 76, 115, 115, 115, 115, 81, 115, 115,
- 84, 85, 115, 115, 115, 115, 115, 115, 92, 93,
- 94, 115, 96, 115, 98, 99, 100, 66, 115, 68,
+ 66, 115, 68, 115, 115, 71, 115, 115, 74, 75,
+ 76, 115, 115, 115, 115, 81, 115, 115, 84, 85,
+ 115, 115, 115, 115, 115, 115, 92, 93, 94, 115,
+ 96, 115, 98, 99, 100, 115, 115, 66, 115, 68,
115, 115, 71, 115, 115, 74, 75, 76, 115, 115,
115, 115, 81, 115, 115, 84, 85, 115, 115, 115,
115, 115, 115, 92, 93, 94, 115, 96, 115, 98,
- 99, 100, 115, 115, 66, 115, 68, 115, 115, 71,
- 115, 115, 74, 75, 76, 115, 115, 115, 115, 81,
- 115, 115, 84, 85, 115, 115, 115, 115, 115, 115,
- 92, 93, 94, 115, 96, 115, 98, 99, 100, 66,
+ 99, 100, 66, 115, 68, 115, 115, 71, 115, 115,
+ 74, 75, 76, 115, 115, 115, 115, 81, 115, 115,
+ 84, 85, 115, 115, 115, 115, 115, 115, 92, 93,
+ 94, 115, 96, 115, 98, 99, 100, 115, 115, 66,
115, 68, 115, 115, 71, 115, 115, 74, 75, 76,
115, 115, 115, 115, 81, 115, 115, 84, 85, 115,
115, 115, 115, 115, 115, 92, 93, 94, 115, 96,
- 115, 98, 99, 100, 115, 115, 66, 115, 68, 115,
+ 115, 98, 99, 100, 66, 115, 68, 115, 115, 71,
+ 115, 115, 74, 75, 76, 115, 115, 115, 115, 81,
+ 115, 115, 84, 85, 115, 115, 115, 115, 115, 115,
+ 92, 93, 94, 115, 96, 115, 98, 99, 100, 115,
+ 115, 66, 115, 68, 115, 115, 71, 115, 115, 74,
+ 75, 76, 115, 115, 115, 115, 81, 115, 115, 84,
+ 85, 115, 115, 115, 115, 115, 115, 92, 93, 94,
+ 115, 96, 115, 98, 99, 100, 66, 115, 68, 115,
115, 71, 115, 115, 74, 75, 76, 115, 115, 115,
115, 81, 115, 115, 84, 85, 115, 115, 115, 115,
115, 115, 92, 93, 94, 115, 96, 115, 98, 99,
- 100, 66, 115, 68, 115, 115, 71, 115, 115, 74,
- 75, 76, 115, 115, 115, 115, 81, 115, 115, 84,
- 85, 115, 115, 115, 115, 115, 115, 92, 93, 94,
- 115, 96, 115, 98, 99, 100, 115, 115, 66, 115,
+ 100, 115, 115, 66, 115, 68, 115, 115, 71, 115,
+ 115, 74, 75, 76, 115, 115, 115, 115, 81, 115,
+ 115, 84, 85, 115, 115, 115, 115, 115, 115, 92,
+ 93, 94, 115, 96, 115, 98, 99, 100, 66, 115,
68, 115, 115, 71, 115, 115, 74, 75, 76, 115,
115, 115, 115, 81, 115, 115, 84, 85, 115, 115,
115, 115, 115, 115, 92, 93, 94, 115, 96, 115,
- 98, 99, 100, 66, 115, 68, 115, 115, 71, 115,
- 115, 74, 75, 76, 115, 115, 115, 115, 81, 115,
- 115, 84, 85, 115, 115, 115, 115, 115, 115, 92,
- 93, 94, 115, 96, 115, 98, 99, 100, 115, 115,
- 66, 115, 68, 115, 115, 71, 115, 115, 74, 75,
- 76, 115, 115, 115, 115, 81, 115, 115, 84, 85,
- 115, 115, 115, 115, 115, 115, 92, 93, 94, 115,
- 96, 115, 98, 99, 100, 66, 115, 68, 115, 115,
+ 98, 99, 100, 115, 115, 66, 115, 68, 115, 115,
71, 115, 115, 74, 75, 76, 115, 115, 115, 115,
81, 115, 115, 84, 85, 115, 115, 115, 115, 115,
115, 92, 93, 94, 115, 96, 115, 98, 99, 100,
- 115, 115, 66, 115, 68, 115, 115, 71, 115, 115,
- 74, 75, 76, 115, 115, 115, 115, 81, 115, 115,
- 84, 85, 115, 115, 115, 115, 115, 115, 92, 93,
- 94, 115, 96, 115, 98, 99, 100, 66, 115, 68,
+ 66, 115, 68, 115, 115, 71, 115, 115, 74, 75,
+ 76, 115, 115, 115, 115, 81, 115, 115, 84, 85,
+ 115, 115, 115, 115, 115, 115, 92, 93, 94, 115,
+ 96, 115, 98, 99, 100, 115, 115, 66, 115, 68,
115, 115, 71, 115, 115, 74, 75, 76, 115, 115,
115, 115, 81, 115, 115, 84, 85, 115, 115, 115,
115, 115, 115, 92, 93, 94, 115, 96, 115, 98,
- 99, 100, 115, 115, 66, 115, 68, 115, 115, 71,
- 115, 115, 74, 75, 76, 115, 115, 115, 115, 81,
- 115, 115, 84, 85, 115, 115, 115, 115, 115, 115,
- 92, 93, 94, 115, 96, 115, 98, 99, 100, 66,
+ 99, 100, 66, 115, 68, 115, 115, 71, 115, 115,
+ 74, 75, 76, 115, 115, 115, 115, 81, 115, 115,
+ 84, 85, 115, 115, 115, 115, 115, 115, 92, 93,
+ 94, 115, 96, 115, 98, 99, 100, 115, 115, 66,
115, 68, 115, 115, 71, 115, 115, 74, 75, 76,
115, 115, 115, 115, 81, 115, 115, 84, 85, 115,
115, 115, 115, 115, 115, 92, 93, 94, 115, 96,
- 115, 98, 99, 100, 115, 115, 66, 115, 68, 115,
+ 115, 98, 99, 100, 66, 115, 68, 115, 115, 71,
+ 115, 115, 74, 75, 76, 115, 115, 115, 115, 81,
+ 115, 115, 84, 85, 115, 115, 115, 115, 115, 115,
+ 92, 93, 94, 115, 96, 115, 98, 99, 100, 115,
+ 115, 66, 115, 68, 115, 115, 71, 115, 115, 74,
+ 75, 76, 115, 115, 115, 115, 81, 115, 115, 84,
+ 85, 115, 115, 115, 115, 115, 115, 92, 93, 94,
+ 115, 96, 115, 98, 99, 100, 66, 115, 68, 115,
115, 71, 115, 115, 74, 75, 76, 115, 115, 115,
115, 81, 115, 115, 84, 85, 115, 115, 115, 115,
115, 115, 92, 93, 94, 115, 96, 115, 98, 99,
- 100, 66, 115, 68, 115, 115, 71, 115, 115, 74,
- 75, 76, 115, 115, 115, 115, 81, 115, 115, 84,
- 85, 115, 115, 115, 115, 115, 115, 92, 93, 94,
- 115, 96, 115, 98, 99, 100, 115, 115, 66, 115,
+ 100, 115, 115, 66, 115, 68, 115, 115, 71, 115,
+ 115, 74, 75, 76, 115, 115, 115, 115, 81, 115,
+ 115, 84, 85, 115, 115, 115, 115, 115, 115, 92,
+ 93, 94, 115, 96, 115, 98, 99, 100, 66, 115,
+ 68, 115, 115, 71, 115, 115, 74, 75, 76, 115,
+ 115, 115, 115, 81, 115, 115, 84, 85, 115, 115,
+ 115, 115, 115, 115, 92, 93, 94, 115, 96, 115,
+ 98, 99, 100, 115, 115, 66, 115, 68, 115, 115,
+ 71, 115, 115, 74, 75, 115, 115, 115, 115, 66,
+ 81, 68, 115, 115, 71, 115, 115, 74, 75, 90,
+ 115, 92, 93, 94, 81, 96, 115, 98, 99, 100,
+ 115, 115, 115, 90, 115, 92, 93, 94, 115, 96,
+ 3, 98, 99, 100, 115, 115, 9, 10, 11, 12,
+ 115, 14, 115, 115, 115, 18, 19, 115, 115, 115,
+ 115, 24, 115, 115, 26, 28, 29, 30, 115, 115,
+ 115, 23, 115, 25, 36, 37, 38, 39, 115, 31,
+ 115, 115, 115, 115, 36, 37, 38, 39, 115, 115,
+ 115, 53, 54, 55, 56, 57, 59, 60, 115, 115,
+ 3, 53, 54, 55, 56, 57, 9, 10, 11, 12,
+ 115, 14, 115, 115, 115, 18, 19, 9, 115, 115,
+ 12, 24, 115, 115, 16, 28, 29, 30, 35, 36,
+ 37, 38, 39, 25, 36, 37, 38, 39, 115, 31,
+ 115, 115, 115, 115, 115, 115, 53, 54, 55, 56,
+ 57, 53, 54, 55, 56, 57, 59, 60, 60, 115,
+ 3, 4, 5, 6, 2, 115, 9, 10, 11, 12,
+ 115, 9, 115, 115, 12, 18, 19, 15, 16, 17,
+ 115, 24, 115, 21, 115, 28, 29, 30, 66, 115,
68, 115, 115, 71, 115, 115, 74, 75, 115, 115,
- 115, 115, 66, 81, 68, 115, 115, 71, 115, 115,
- 74, 75, 90, 115, 92, 93, 94, 81, 96, 115,
- 98, 99, 100, 115, 115, 115, 90, 115, 92, 93,
- 94, 115, 96, 3, 98, 99, 100, 115, 115, 9,
- 10, 11, 12, 115, 14, 115, 115, 115, 18, 19,
- 115, 115, 115, 115, 24, 115, 115, 26, 28, 29,
- 30, 115, 115, 115, 23, 115, 25, 36, 37, 38,
- 39, 115, 31, 115, 115, 115, 115, 36, 37, 38,
- 39, 115, 115, 115, 53, 54, 55, 56, 57, 59,
- 60, 115, 115, 3, 53, 54, 55, 56, 57, 9,
- 10, 11, 12, 115, 14, 115, 115, 115, 18, 19,
- 9, 115, 115, 12, 24, 115, 115, 16, 28, 29,
- 30, 35, 36, 37, 38, 39, 25, 36, 37, 38,
- 39, 115, 31, 115, 115, 115, 115, 115, 115, 53,
- 54, 55, 56, 57, 53, 54, 55, 56, 57, 59,
- 60, 60, 115, 3, 4, 5, 6, 2, 115, 9,
- 10, 11, 12, 115, 9, 115, 115, 12, 18, 19,
- 15, 16, 17, 115, 24, 115, 21, 115, 28, 29,
- 30, 66, 115, 68, 115, 115, 71, 115, 115, 74,
- 75, 115, 115, 115, 115, 115, 81, 115, 43, 115,
- 115, 46, 115, 48, 115, 50, 115, 92, 93, 94,
- 115, 96, 115, 98, 99, 100, 115, 66, 115, 68,
- 73, 115, 71, 115, 115, 74, 75, 115, 115, 115,
- 83, 115, 81, 86, 87, 88, 89, 115, 91, 115,
- 115, 115, 115, 92, 93, 94, 115, 96, 115, 98,
- 99, 100, 115, 66, 115, 68, 115, 73, 71, 115,
- 115, 74, 75, 115, 115, 115, 115, 83, 81, 115,
- 86, 87, 88, 89, 115, 91, 115, 115, 115, 92,
- 93, 94, 115, 96, 115, 98, 99, 100, 115, 66,
- 115, 68, 115, 73, 71, 115, 115, 74, 75, 115,
- 115, 115, 115, 83, 81, 115, 86, 87, 88, 89,
- 71, 91, 115, 74, 115, 92, 93, 94, 115, 96,
- 81, 98, 99, 100, 115, 66, 115, 68, 115, 115,
- 71, 115, 93, 74, 75, 115, 115, 98, 99, 100,
- 81, 115, 115, 115, 115, 115, 115, 115, 115, 115,
- 115, 92, 93, 94, 115, 96, 115, 98, 99, 100,
- 115, 66, 115, 68, 115, 115, 71, 115, 115, 74,
- 75, 115, 115, 115, 115, 115, 81, 115, 115, 115,
- 115, 115, 115, 115, 115, 115, 115, 92, 93, 94,
- 115, 96, 115, 98, 99, 100, 115, 66, 115, 68,
- 115, 115, 71, 115, 1, 74, 75, 115, 115, 115,
- 115, 115, 81, 115, 115, 115, 13, 115, 115, 115,
- 17, 115, 115, 92, 93, 94, 115, 96, 25, 98,
- 99, 100, 115, 66, 31, 68, 2, 34, 71, 115,
- 115, 74, 75, 115, 115, 115, 115, 115, 81, 46,
- 115, 115, 115, 115, 115, 115, 115, 115, 115, 92,
- 93, 94, 115, 96, 115, 98, 99, 100, 34, 115,
- 36, 37, 38, 39, 115, 115, 115, 115, 115, 115,
- 46, 115, 115, 115, 115, 115, 115, 53, 54, 55,
- 56, 57, 2, 115, 115, 115, 115, 115, 115, 9,
- 115, 115, 12, 115, 115, 2, 16, 17, 115, 115,
- 115, 21, 9, 115, 115, 12, 115, 115, 15, 16,
- 17, 115, 115, 115, 21, 115, 115, 115, 115, 115,
- 115, 115, 13, 43, 115, 115, 46, 115, 48, 115,
- 50, 51, 115, 115, 115, 115, 43, 115, 115, 46,
- 115, 48, 115, 50, 2, 36, 37, 38, 39, 115,
- 13, 115, 115, 115, 115, 115, 115, 115, 115, 115,
- 115, 115, 53, 54, 55, 56, 57, 36, 37, 38,
- 39, 115, 115, 36, 37, 38, 39, 13, 36, 37,
- 38, 39, 51, 13, 53, 54, 55, 56, 57, 13,
- 53, 54, 55, 56, 57, 53, 54, 55, 56, 57,
- 36, 37, 38, 39, 115, 115, 36, 37, 38, 39,
- 115, 115, 36, 37, 38, 39, 115, 53, 54, 55,
- 56, 57, 115, 53, 54, 55, 56, 57, 2, 53,
- 54, 55, 56, 57, 2, 9, 115, 115, 12, 115,
- 115, 9, 16, 17, 12, 115, 115, 21, 16, 17,
- 115, 115, 115, 21, 115, 115, 115, 115, 115, 115,
- 115, 115, 115, 115, 115, 115, 115, 115, 115, 43,
- 115, 115, 46, 115, 48, 43, 50, 115, 46, 115,
- 48, 115, 50, 115, 36, 37, 38, 39, 115, 115,
- 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
- 115, 53, 54, 55, 56, 57,
+ 115, 115, 115, 81, 115, 43, 115, 115, 46, 115,
+ 48, 115, 50, 115, 92, 93, 94, 115, 96, 115,
+ 98, 99, 100, 115, 66, 115, 68, 73, 115, 71,
+ 115, 115, 74, 75, 115, 115, 115, 83, 115, 81,
+ 86, 87, 88, 89, 115, 91, 115, 115, 115, 115,
+ 92, 93, 94, 115, 96, 115, 98, 99, 100, 115,
+ 66, 115, 68, 115, 73, 71, 115, 115, 74, 75,
+ 115, 115, 115, 115, 83, 81, 115, 86, 87, 88,
+ 89, 115, 91, 115, 115, 115, 92, 93, 94, 115,
+ 96, 115, 98, 99, 100, 115, 66, 115, 68, 115,
+ 73, 71, 115, 115, 74, 75, 115, 115, 115, 115,
+ 83, 81, 115, 86, 87, 88, 89, 71, 91, 115,
+ 74, 115, 92, 93, 94, 115, 96, 81, 98, 99,
+ 100, 115, 66, 115, 68, 115, 115, 71, 115, 93,
+ 74, 75, 115, 115, 98, 99, 100, 81, 115, 115,
+ 115, 115, 115, 115, 115, 115, 115, 115, 92, 93,
+ 94, 115, 96, 115, 98, 99, 100, 115, 66, 115,
+ 68, 115, 115, 71, 115, 115, 74, 75, 115, 115,
+ 115, 115, 115, 81, 115, 115, 115, 115, 115, 115,
+ 115, 115, 115, 115, 92, 93, 94, 115, 96, 115,
+ 98, 99, 100, 115, 66, 115, 68, 115, 115, 71,
+ 115, 1, 74, 75, 115, 115, 115, 115, 115, 81,
+ 115, 115, 115, 13, 115, 115, 115, 17, 115, 115,
+ 92, 93, 94, 115, 96, 25, 98, 99, 100, 115,
+ 66, 31, 68, 2, 34, 71, 115, 115, 74, 75,
+ 115, 115, 115, 115, 115, 81, 46, 115, 115, 115,
+ 115, 115, 115, 115, 115, 115, 92, 93, 94, 115,
+ 96, 115, 98, 99, 100, 34, 115, 36, 37, 38,
+ 39, 115, 115, 115, 115, 115, 115, 46, 115, 115,
+ 115, 115, 115, 115, 53, 54, 55, 56, 57, 2,
+ 115, 115, 115, 115, 115, 115, 9, 115, 115, 12,
+ 115, 115, 2, 16, 17, 115, 115, 115, 21, 9,
+ 115, 115, 12, 115, 115, 15, 16, 17, 115, 115,
+ 115, 21, 115, 115, 115, 115, 115, 115, 115, 13,
+ 43, 115, 115, 46, 115, 48, 115, 50, 51, 115,
+ 115, 115, 115, 43, 115, 115, 46, 115, 48, 115,
+ 50, 2, 36, 37, 38, 39, 115, 13, 115, 115,
+ 115, 115, 115, 115, 115, 115, 115, 115, 115, 53,
+ 54, 55, 56, 57, 36, 37, 38, 39, 115, 115,
+ 36, 37, 38, 39, 13, 36, 37, 38, 39, 51,
+ 13, 53, 54, 55, 56, 57, 13, 53, 54, 55,
+ 56, 57, 53, 54, 55, 56, 57, 36, 37, 38,
+ 39, 115, 115, 36, 37, 38, 39, 115, 115, 36,
+ 37, 38, 39, 115, 53, 54, 55, 56, 57, 115,
+ 53, 54, 55, 56, 57, 2, 53, 54, 55, 56,
+ 57, 2, 9, 115, 115, 12, 115, 115, 9, 16,
+ 17, 12, 115, 115, 21, 16, 17, 115, 115, 115,
+ 21, 115, 115, 115, 115, 115, 115, 115, 115, 115,
+ 115, 115, 115, 115, 115, 115, 43, 115, 115, 46,
+ 115, 48, 43, 50, 115, 46, 115, 48, 115, 50,
+ 115, 36, 37, 38, 39, 115, 115, 115, 115, 115,
+ 115, 115, 115, 115, 115, 115, 115, 115, 53, 54,
+ 55, 56, 57,
);
const YY_SHIFT_USE_DFLT = -21;
- const YY_SHIFT_MAX = 243;
+ const YY_SHIFT_MAX = 244;
public static $yy_shift_ofst = array(
- -21, 100, 100, 151, 202, 202, 253, 151, 151, 202,
+ -21, 100, 100, 151, 202, 202, 253, 151, 202, 151,
151, 253, -2, 49, 304, 151, 151, 151, 304, 151,
- 151, 151, 151, 151, 151, 151, 151, 151, 355, 151,
+ 151, 151, 151, 151, 151, 151, 151, 355, 151, 151,
151, 151, 151, 151, 151, 151, 406, 151, 151, 151,
457, 508, 508, 508, 508, 508, 508, 508, 508, 508,
- 2051, 702, 702, 99, 122, 658, 2041, 2529, 2096, 2551,
- 2557, 2101, 2562, 2584, 2590, 2596, 2668, 2668, 2668, 2668,
- 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668, 2668,
- 2668, 2668, 2668, 2668, 2668, 2668, 2040, 2413, 172, 24,
- 2100, 966, 2111, 45, 182, 24, 24, 172, 172, 101,
- 12, 2160, 2165, 643, 221, 92, 255, 296, 366, 366,
- 233, -20, 188, -20, 317, 17, 229, 394, 394, 393,
- 290, 181, -20, 14, 14, 14, 14, 14, 14, 14,
- 14, 14, 12, 12, 68, 14, -21, -21, 2500, 2513,
- 2646, 2652, 720, 152, 771, 468, 309, -20, -20, 467,
- -20, 325, -20, 325, -20, 37, 37, -20, -20, -20,
- -20, 37, 356, 37, 37, 37, 369, 37, 369, 37,
- -20, -20, -20, -20, 14, 472, 14, 14, 472, 14,
- 458, 12, 12, 12, 12, -21, -21, -21, -21, -21,
- -21, 2444, 11, 51, 194, 245, 886, 144, 195, 385,
- 337, 431, 488, 106, 485, 469, 477, 497, 500, 437,
- 470, 390, 496, 424, 479, 495, 519, 548, 552, 555,
- 560, 549, 564, 565, 566, 567, 562, 569, 543, 557,
- 561, 558, 582, 458, 592, 568, 571, 595, 570, 574,
- 599, 601, 583, 602,
+ 2048, 702, 702, 99, 122, 658, 2038, 2526, 2093, 2548,
+ 2554, 2098, 2559, 2581, 2587, 2593, 2665, 2665, 2665, 2665,
+ 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665, 2665,
+ 2665, 2665, 2665, 2665, 2665, 2665, 2037, 2410, 172, 24,
+ 2097, 963, 2108, 45, 182, 24, 24, 172, 172, 101,
+ 12, 2157, 2162, 221, 643, 92, 255, 296, 366, 366,
+ 233, -20, 188, -20, 317, 17, 229, 394, 105, 394,
+ 393, 181, 290, -20, 14, 14, 14, 14, 14, 14,
+ 14, 14, 14, 12, 12, 68, 14, -21, -21, 2497,
+ 2510, 2643, 2649, 720, 152, 771, 468, 309, -20, -20,
+ 467, -20, 325, -20, 325, -20, 37, 37, 409, 37,
+ 409, 37, -20, -20, -20, -20, 37, 356, 37, 37,
+ 37, -20, -20, -20, -20, 14, 472, 14, 14, 472,
+ 14, 12, 474, 12, 12, 12, 12, -21, -21, -21,
+ -21, -21, -21, 2441, 11, 51, 194, 245, 991, 144,
+ 195, 385, 337, 464, 488, 399, 485, 469, 477, 497,
+ 500, 470, 390, 496, 479, 495, 519, 529, 530, 565,
+ 566, 563, 568, 567, 569, 570, 575, 576, 579, 582,
+ 539, 557, 583, 474, 595, 571, 572, 600, 601, 574,
+ 577, 602, 609, 592, 607,
);
const YY_REDUCE_USE_DFLT = -86;
- const YY_REDUCE_MAX = 190;
+ const YY_REDUCE_MAX = 192;
public static $yy_reduce_ofst = array(
9, 503, 538, 573, 608, 650, 701, 736, 777, 812,
- 852, 887, 924, 959, 996, 1031, 1068, 1103, 1140, 1175,
- 1212, 1247, 1284, 1319, 1356, 1391, 1428, 1463, 1500, 1535,
- 1572, 1607, 1644, 1679, 1716, 1751, 1788, 1823, 1860, 1895,
- 1932, 1946, 2125, 2161, 2197, 2233, 2269, 2305, 2341, 2377,
- 2157, 2194, 2230, 2249, 742, -85, -85, -85, -85, -85,
+ 849, 884, 921, 956, 993, 1028, 1065, 1100, 1137, 1172,
+ 1209, 1244, 1281, 1316, 1353, 1388, 1425, 1460, 1497, 1532,
+ 1569, 1604, 1641, 1676, 1713, 1748, 1785, 1820, 1857, 1892,
+ 1929, 1943, 2122, 2158, 2194, 2230, 2266, 2302, 2338, 2374,
+ 2154, 2191, 2227, 2246, 742, -85, -85, -85, -85, -85,
-85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
-85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
-85, -85, -85, -85, -85, -85, 365, 452, -58, 517,
59, 1, 205, 29, 50, 234, 246, 259, 279, 67,
- -53, 87, 5, 154, 146, 80, 80, 80, 198, 154,
- 200, 297, 320, 326, 338, 284, 200, 110, 347, 80,
- 80, 80, 377, 384, 80, 80, 80, 80, 80, 80,
- 80, 80, 200, 322, 80, 80, 398, 80, 21, 21,
- 21, 21, 21, 178, 207, 21, 21, 201, 201, 251,
- 201, 254, 201, 291, 201, 224, 224, 201, 201, 201,
- 201, 224, 285, 224, 224, 224, 302, 224, 331, 224,
- 201, 201, 201, 201, 343, 373, 343, 343, 373, 343,
- 407, 404, 404, 404, 404, 456, 459, 462, 474, 461,
- 463,
+ -53, 87, 5, 146, 154, 80, 80, 80, 198, 154,
+ 200, 297, 320, 326, 338, 284, 200, 110, 322, 347,
+ 80, 80, 80, 377, 384, 80, 80, 80, 80, 80,
+ 80, 80, 80, 200, 333, 80, 80, 398, 80, 25,
+ 25, 25, 25, 25, 178, 207, 25, 25, 201, 201,
+ 251, 201, 254, 201, 291, 201, 224, 224, 285, 224,
+ 302, 224, 201, 201, 201, 201, 224, 311, 224, 224,
+ 224, 201, 201, 201, 201, 348, 373, 348, 348, 373,
+ 348, 386, 420, 386, 386, 386, 386, 445, 459, 462,
+ 486, 455, 458,
);
public static $yyExpectedTokens = array(
array(),
@@ -976,8 +976,8 @@ public static $yy_action = array(
array(17, ),
array(3, 4, 5, 6, 9, 10, 11, 12, 18, 19, 24, 28, 29, 30, ),
array(2, 9, 12, 15, 16, 17, 21, 43, 46, 48, 50, ),
- array(9, 12, 16, 48, ),
array(12, 14, 16, 52, ),
+ array(9, 12, 16, 48, ),
array(1, 13, 25, 31, ),
array(1, 13, 25, 31, ),
array(1, 13, 25, 31, ),
@@ -991,10 +991,11 @@ public static $yy_action = array(
array(1, 17, ),
array(17, 46, ),
array(14, 16, ),
+ array(17, 34, ),
array(14, 16, ),
array(1, 51, ),
- array(1, 2, ),
array(1, 27, ),
+ array(1, 2, ),
array(25, 31, ),
array(1, ),
array(1, ),
@@ -1030,6 +1031,10 @@ public static $yy_action = array(
array(25, 31, ),
array(43, 50, ),
array(43, 50, ),
+ array(43, 50, ),
+ array(43, 50, ),
+ array(43, 50, ),
+ array(43, 50, ),
array(25, 31, ),
array(25, 31, ),
array(25, 31, ),
@@ -1039,10 +1044,6 @@ public static $yy_action = array(
array(43, 50, ),
array(43, 50, ),
array(43, 50, ),
- array(43, 50, ),
- array(43, 50, ),
- array(43, 50, ),
- array(43, 50, ),
array(25, 31, ),
array(25, 31, ),
array(25, 31, ),
@@ -1053,6 +1054,7 @@ public static $yy_action = array(
array(1, ),
array(2, ),
array(1, ),
+ array(17, ),
array(34, ),
array(17, ),
array(17, ),
@@ -1083,13 +1085,13 @@ public static $yy_action = array(
array(34, 46, ),
array(34, 46, ),
array(33, 35, ),
- array(33, 35, ),
array(33, 51, ),
array(43, 51, ),
array(33, 35, ),
array(33, 35, ),
array(33, 35, ),
array(33, 35, ),
+ array(33, 35, ),
array(15, 43, ),
array(7, ),
array(13, ),
@@ -1106,11 +1108,10 @@ public static $yy_action = array(
array(32, ),
array(34, ),
array(16, ),
- array(34, ),
- array(16, ),
array(49, ),
array(49, ),
array(16, ),
+ array(16, ),
array(51, ),
array(51, ),
array(16, ),
@@ -1220,46 +1221,46 @@ public static $yy_action = array(
array(),
);
public static $yy_default = array(
- 355, 549, 549, 549, 534, 534, 549, 509, 509, 533,
- 458, 549, 549, 549, 549, 549, 549, 549, 549, 549,
- 549, 549, 549, 549, 549, 549, 549, 549, 549, 549,
- 549, 549, 549, 549, 549, 549, 549, 549, 549, 549,
- 549, 549, 549, 549, 549, 549, 549, 549, 549, 549,
- 395, 374, 395, 549, 549, 549, 400, 549, 549, 549,
- 368, 549, 549, 549, 549, 549, 379, 508, 418, 507,
- 426, 535, 537, 536, 425, 427, 424, 428, 457, 455,
- 402, 406, 407, 397, 400, 368, 549, 439, 549, 395,
- 549, 395, 395, 522, 460, 395, 395, 549, 549, 386,
- 495, 345, 459, 472, 549, 409, 409, 409, 472, 472,
- 460, 395, 549, 395, 395, 389, 460, 549, 549, 409,
- 409, 409, 376, 391, 409, 416, 430, 431, 432, 417,
- 422, 423, 460, 519, 430, 415, 353, 516, 459, 459,
- 459, 459, 459, 549, 474, 472, 488, 365, 375, 549,
- 378, 549, 383, 549, 384, 469, 470, 369, 371, 372,
- 373, 500, 472, 499, 502, 501, 463, 464, 465, 466,
- 385, 381, 382, 377, 387, 510, 390, 392, 511, 448,
- 472, 494, 523, 520, 496, 353, 515, 515, 515, 472,
- 472, 439, 435, 439, 429, 429, 473, 439, 439, 429,
- 429, 351, 549, 549, 549, 429, 439, 449, 549, 549,
- 549, 549, 435, 549, 467, 467, 549, 435, 549, 549,
- 549, 549, 549, 549, 549, 549, 549, 549, 435, 437,
- 549, 521, 549, 488, 549, 549, 549, 549, 549, 444,
- 549, 549, 549, 403, 346, 347, 348, 349, 350, 352,
- 354, 356, 357, 358, 359, 360, 361, 362, 364, 393,
- 394, 490, 491, 492, 514, 388, 512, 513, 433, 442,
- 443, 452, 453, 471, 475, 476, 477, 410, 411, 412,
- 413, 414, 434, 436, 438, 440, 444, 445, 446, 419,
- 420, 421, 447, 450, 451, 485, 483, 461, 462, 498,
- 467, 468, 489, 506, 524, 525, 526, 527, 528, 363,
- 497, 545, 546, 538, 539, 540, 543, 542, 544, 547,
- 548, 541, 530, 532, 531, 529, 503, 486, 484, 482,
- 479, 480, 481, 487, 504, 505, 441, 478, 518, 493,
- 488, 396, 380, 404, 408,
+ 356, 551, 551, 551, 536, 536, 551, 510, 535, 459,
+ 510, 551, 551, 551, 551, 551, 551, 551, 551, 551,
+ 551, 551, 551, 551, 551, 551, 551, 551, 551, 551,
+ 551, 551, 551, 551, 551, 551, 551, 551, 551, 551,
+ 551, 551, 551, 551, 551, 551, 551, 551, 551, 551,
+ 396, 375, 396, 551, 551, 551, 401, 551, 551, 551,
+ 369, 551, 551, 551, 551, 551, 380, 509, 419, 537,
+ 427, 539, 538, 426, 428, 425, 429, 458, 456, 508,
+ 403, 407, 408, 398, 401, 369, 551, 440, 551, 396,
+ 551, 396, 396, 524, 461, 396, 396, 551, 551, 387,
+ 496, 346, 460, 551, 473, 410, 410, 410, 473, 473,
+ 461, 396, 551, 396, 396, 390, 461, 551, 522, 551,
+ 410, 410, 410, 377, 392, 410, 417, 431, 432, 433,
+ 418, 423, 424, 461, 520, 431, 416, 354, 517, 460,
+ 460, 460, 460, 460, 551, 475, 473, 489, 366, 376,
+ 551, 379, 551, 384, 551, 385, 470, 471, 464, 465,
+ 466, 467, 370, 372, 373, 374, 501, 473, 500, 503,
+ 502, 386, 382, 383, 378, 388, 511, 391, 393, 512,
+ 449, 523, 473, 495, 525, 521, 497, 354, 516, 516,
+ 516, 473, 473, 440, 436, 440, 430, 430, 474, 440,
+ 440, 430, 430, 352, 551, 551, 551, 430, 440, 450,
+ 551, 551, 551, 436, 551, 468, 468, 551, 551, 436,
+ 551, 551, 551, 551, 551, 551, 551, 551, 551, 551,
+ 436, 438, 551, 489, 551, 551, 551, 551, 551, 551,
+ 445, 551, 551, 551, 404, 347, 348, 349, 350, 351,
+ 353, 355, 357, 358, 359, 360, 361, 362, 363, 365,
+ 394, 395, 491, 492, 493, 515, 389, 513, 514, 434,
+ 443, 444, 453, 454, 472, 476, 477, 478, 411, 412,
+ 413, 414, 415, 435, 437, 439, 441, 445, 446, 447,
+ 498, 499, 420, 421, 422, 448, 451, 452, 486, 484,
+ 462, 463, 468, 469, 490, 526, 527, 528, 529, 530,
+ 364, 547, 548, 540, 541, 542, 545, 544, 546, 549,
+ 550, 543, 532, 534, 533, 531, 487, 485, 483, 480,
+ 481, 482, 488, 505, 507, 506, 504, 442, 479, 519,
+ 494, 489, 397, 381, 405, 409,
);
const YYNOCODE = 116;
const YYSTACKDEPTH = 500;
- const YYNSTATE = 345;
- const YYNRULE = 204;
+ const YYNSTATE = 346;
+ const YYNRULE = 205;
const YYERRORSYMBOL = 61;
const YYERRSYMDT = 'yy0';
const YYFALLBACK = 0;
@@ -1498,6 +1499,7 @@ public static $yy_action = array(
'static_class_access ::= method',
'static_class_access ::= method objectchain',
'static_class_access ::= ID',
+ 'static_class_access ::= ID objectchain',
'static_class_access ::= DOLLARID arrayindex',
'static_class_access ::= DOLLARID arrayindex objectchain',
'lop ::= LOGOP',
@@ -2018,6 +2020,7 @@ public static $yy_action = array(
array( 0 => 95, 1 => 2 ),
array( 0 => 95, 1 => 1 ),
array( 0 => 95, 1 => 2 ),
+ array( 0 => 95, 1 => 2 ),
array( 0 => 95, 1 => 3 ),
array( 0 => 87, 1 => 1 ),
array( 0 => 87, 1 => 1 ),
@@ -2074,8 +2077,8 @@ public static $yy_action = array(
107 => 6,
123 => 6,
151 => 6,
- 186 => 6,
- 192 => 6,
+ 187 => 6,
+ 193 => 6,
7 => 7,
8 => 8,
150 => 8,
@@ -2186,7 +2189,7 @@ public static $yy_action = array(
124 => 124,
125 => 125,
127 => 127,
- 189 => 127,
+ 190 => 127,
128 => 128,
129 => 129,
130 => 130,
@@ -2204,7 +2207,7 @@ public static $yy_action = array(
142 => 142,
143 => 143,
144 => 144,
- 193 => 144,
+ 194 => 144,
145 => 145,
147 => 147,
148 => 148,
@@ -2235,21 +2238,22 @@ public static $yy_action = array(
182 => 182,
183 => 183,
184 => 184,
- 185 => 184,
- 187 => 187,
+ 185 => 185,
+ 186 => 185,
188 => 188,
- 190 => 190,
+ 189 => 189,
191 => 191,
- 194 => 194,
+ 192 => 192,
195 => 195,
196 => 196,
197 => 197,
- 200 => 197,
198 => 198,
201 => 198,
199 => 199,
- 202 => 202,
+ 202 => 199,
+ 200 => 200,
203 => 203,
+ 204 => 204,
);
// line 245 "src/Parser/TemplateParser.y"
public function yy_r0(){
@@ -2960,18 +2964,22 @@ public static $yy_action = array(
}
// line 1263 "src/Parser/TemplateParser.y"
public function yy_r177(){
- $this->_retvalue = array($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor, 'property');
+ $this->_retvalue = array($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor);
}
// line 1268 "src/Parser/TemplateParser.y"
public function yy_r178(){
- $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor, 'property');
+ $this->_retvalue = array($this->yystack[$this->yyidx + -1]->minor, $this->yystack[$this->yyidx + 0]->minor, 'property');
}
-// line 1274 "src/Parser/TemplateParser.y"
+// line 1273 "src/Parser/TemplateParser.y"
public function yy_r179(){
- $this->_retvalue = ' '. trim($this->yystack[$this->yyidx + 0]->minor) . ' ';
+ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor, $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor, 'property');
}
-// line 1278 "src/Parser/TemplateParser.y"
+// line 1279 "src/Parser/TemplateParser.y"
public function yy_r180(){
+ $this->_retvalue = ' '. trim($this->yystack[$this->yyidx + 0]->minor) . ' ';
+ }
+// line 1283 "src/Parser/TemplateParser.y"
+ public function yy_r181(){
static $lops = array(
'eq' => ' == ',
'ne' => ' != ',
@@ -2990,8 +2998,8 @@ public static $yy_action = array(
$op = strtolower(preg_replace('/\s*/', '', $this->yystack[$this->yyidx + 0]->minor));
$this->_retvalue = $lops[$op];
}
-// line 1297 "src/Parser/TemplateParser.y"
- public function yy_r181(){
+// line 1302 "src/Parser/TemplateParser.y"
+ public function yy_r182(){
static $tlops = array(
'isdivby' => array('op' => ' % ', 'pre' => '!('),
'isnotdivby' => array('op' => ' % ', 'pre' => '('),
@@ -3003,8 +3011,8 @@ public static $yy_action = array(
$op = strtolower(preg_replace('/\s*/', '', $this->yystack[$this->yyidx + 0]->minor));
$this->_retvalue = $tlops[$op];
}
-// line 1310 "src/Parser/TemplateParser.y"
- public function yy_r182(){
+// line 1315 "src/Parser/TemplateParser.y"
+ public function yy_r183(){
static $scond = array (
'iseven' => '!(1 & ',
'isnoteven' => '(1 & ',
@@ -3014,62 +3022,62 @@ public static $yy_action = array(
$op = strtolower(str_replace(' ', '', $this->yystack[$this->yyidx + 0]->minor));
$this->_retvalue = $scond[$op];
}
-// line 1321 "src/Parser/TemplateParser.y"
- public function yy_r183(){
+// line 1326 "src/Parser/TemplateParser.y"
+ public function yy_r184(){
$this->_retvalue = 'preg_match(';
}
-// line 1328 "src/Parser/TemplateParser.y"
- public function yy_r184(){
+// line 1333 "src/Parser/TemplateParser.y"
+ public function yy_r185(){
$this->_retvalue = 'array('.$this->yystack[$this->yyidx + -1]->minor.')';
}
-// line 1339 "src/Parser/TemplateParser.y"
- public function yy_r187(){
+// line 1344 "src/Parser/TemplateParser.y"
+ public function yy_r188(){
$this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor;
}
-// line 1343 "src/Parser/TemplateParser.y"
- public function yy_r188(){
+// line 1348 "src/Parser/TemplateParser.y"
+ public function yy_r189(){
$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.',';
}
-// line 1351 "src/Parser/TemplateParser.y"
- public function yy_r190(){
+// line 1356 "src/Parser/TemplateParser.y"
+ public function yy_r191(){
$this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'=>'.$this->yystack[$this->yyidx + 0]->minor;
}
-// line 1355 "src/Parser/TemplateParser.y"
- public function yy_r191(){
+// line 1360 "src/Parser/TemplateParser.y"
+ public function yy_r192(){
$this->_retvalue = '\''.$this->yystack[$this->yyidx + -2]->minor.'\'=>'.$this->yystack[$this->yyidx + 0]->minor;
}
-// line 1371 "src/Parser/TemplateParser.y"
- public function yy_r194(){
+// line 1376 "src/Parser/TemplateParser.y"
+ public function yy_r195(){
$this->compiler->leaveDoubleQuote();
$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor->to_smarty_php($this);
}
-// line 1377 "src/Parser/TemplateParser.y"
- public function yy_r195(){
+// line 1382 "src/Parser/TemplateParser.y"
+ public function yy_r196(){
$this->yystack[$this->yyidx + -1]->minor->append_subtree($this, $this->yystack[$this->yyidx + 0]->minor);
$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor;
}
-// line 1382 "src/Parser/TemplateParser.y"
- public function yy_r196(){
+// line 1387 "src/Parser/TemplateParser.y"
+ public function yy_r197(){
$this->_retvalue = new Dq($this, $this->yystack[$this->yyidx + 0]->minor);
}
-// line 1386 "src/Parser/TemplateParser.y"
- public function yy_r197(){
+// line 1391 "src/Parser/TemplateParser.y"
+ public function yy_r198(){
$this->_retvalue = new Code('(string)'.$this->yystack[$this->yyidx + -1]->minor);
}
-// line 1390 "src/Parser/TemplateParser.y"
- public function yy_r198(){
+// line 1395 "src/Parser/TemplateParser.y"
+ public function yy_r199(){
$this->_retvalue = new Code('(string)('.$this->yystack[$this->yyidx + -1]->minor.')');
}
-// line 1394 "src/Parser/TemplateParser.y"
- public function yy_r199(){
+// line 1399 "src/Parser/TemplateParser.y"
+ public function yy_r200(){
$this->_retvalue = new Code('(string)$_smarty_tpl->getValue(\''. substr($this->yystack[$this->yyidx + 0]->minor,1) .'\')');
}
-// line 1406 "src/Parser/TemplateParser.y"
- public function yy_r202(){
+// line 1411 "src/Parser/TemplateParser.y"
+ public function yy_r203(){
$this->_retvalue = new Tag($this, $this->yystack[$this->yyidx + 0]->minor);
}
-// line 1410 "src/Parser/TemplateParser.y"
- public function yy_r203(){
+// line 1415 "src/Parser/TemplateParser.y"
+ public function yy_r204(){
$this->_retvalue = new DqContent($this->yystack[$this->yyidx + 0]->minor);
}
diff --git a/src/Parser/TemplateParser.y b/src/Parser/TemplateParser.y
index e802fa3b..fecd247d 100644
--- a/src/Parser/TemplateParser.y
+++ b/src/Parser/TemplateParser.y
@@ -1259,6 +1259,11 @@ static_class_access(res) ::= ID(v). {
res = array(v, '');
}
+ // static class constant with object chain
+static_class_access(res) ::= ID(v) objectchain(oc). {
+ res = array(v, oc);
+}
+
// static class variables
static_class_access(res) ::= DOLLARID(v) arrayindex(a). {
res = array(v, a, 'property');
diff --git a/tests/UnitTests/TemplateSource/StaticClass/StaticClassAccessTest.php b/tests/UnitTests/TemplateSource/StaticClass/StaticClassAccessTest.php
index 7836172c..b3c231ac 100644
--- a/tests/UnitTests/TemplateSource/StaticClass/StaticClassAccessTest.php
+++ b/tests/UnitTests/TemplateSource/StaticClass/StaticClassAccessTest.php
@@ -64,6 +64,21 @@ class StaticClassAccessTest extends PHPUnit_Smarty
$this->assertEquals('3', $this->smarty->fetch($tpl));
}
+ /**
+ * test static class constant chain
+ */
+ public function testRegisteredBackedEnum()
+ {
+ if (PHP_VERSION_ID < 80100) {
+ $this->markTestSkipped('Enums only available after PHP >= 8.1');
+ return;
+ } else {
+ $this->smarty->registerClass('RegisteredBackedEnum', MyBackedEnum::class);
+ $tpl = $this->smarty->createTemplate('eval:{RegisteredBackedEnum::A->value}');
+ $this->assertEquals('3', $this->smarty->fetch($tpl));
+ }
+ }
+
/**
* test static class method
*/
@@ -134,3 +149,7 @@ class mystaticclass
return $i * $i;
}
}
+
+if (PHP_VERSION_ID >= 80100) {
+ eval('enum MyBackedEnum: int { case A = 3; }');
+} \ No newline at end of file