(param:A, ...param:B):B {}
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .meta.function.declaration.js
-// ^^^^^^^^ .storage.type.function.js
-// ^ .storage.modifier.js
-// ^ .punctuation.definition.template.parameters.begin.flow
-// ^ .entity.name.type.flow
-// ^ .punctuation.definition.template.parameters.flow
-// ^ .entity.name.type.flow
-// ^ .punctuation.definition.template.parameters.end.flow
-// ^ .punctuation.section.group.begin.js
-// ^^^^^ .variable.parameter.function.js
-// ^ .punctuation.binding.flow
-// ^ .entity.name.type.flow
-// ^ .punctuation.definition.function.parameters.js
-// ^^^ .keyword.operator.rest.js
-// ^^^^^ .variable.parameter.function.js
-// ^ .punctuation.binding.flow
-// ^ .entity.name.type.flow
-// ^ .punctuation.section.group.end.js
-// ^ .punctuation.binding.flow
-// ^ .entity.name.type.flow
-// ^ .punctuation.section.block.begin.js
-// ^ .punctuation.section.block.end.js
diff --git a/tests/old-tests/fjsx15/old_test_import.js b/tests/old-tests/fjsx15/old_test_import.js
deleted file mode 100644
index 31df77bb..00000000
--- a/tests/old-tests/fjsx15/old_test_import.js
+++ /dev/null
@@ -1,49 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.fjsx15.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-import '...'
-
-import { default as alias } from '...'
-
-import * from '...'
-import * as alias from '...'
-
-import target from '...'
-import target as alias from '...'
-
-import { target, target } from '...'
-import { target as alias, target as alias } from '...'
-
-import target, { target, target } from '...'
-import target as alias, { target as alias, target as alias } from '...'
-
-import type target from '...'
-import type target as alias from '...'
-
-import type { target, target } from '...'
-import type { target as alias, target as alias } from '...'
-
-import type target, { target, target } from '...'
-import type target as alias, { target as alias, target as alias } from '...'
-
-import typeof target from '...'
-import typeof { target } from '...'
-import typeof { target as alias } from '...'
-
-import { target, type target, typeof target } from '...'
-
-declare module "C" {
- import type { DT } from "D";
- export type CT = { D: DT };
-}
diff --git a/tests/old-tests/html5/attribute/old_test_data.html5 b/tests/old-tests/html5/attribute/old_test_data.html5
deleted file mode 100644
index 18b0461f..00000000
--- a/tests/old-tests/html5/attribute/old_test_data.html5
+++ /dev/null
@@ -1,17 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.html5.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/comment/old_test_phpdoc.php7 b/tests/old-tests/php7/comment/old_test_phpdoc.php7
deleted file mode 100644
index 29f25091..00000000
--- a/tests/old-tests/php7/comment/old_test_phpdoc.php7
+++ /dev/null
@@ -1,140 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/comment/old_test_phpunit.php7 b/tests/old-tests/php7/comment/old_test_phpunit.php7
deleted file mode 100644
index f7ac049a..00000000
--- a/tests/old-tests/php7/comment/old_test_phpunit.php7
+++ /dev/null
@@ -1,188 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/constant/old_test_normal.php7 b/tests/old-tests/php7/constant/old_test_normal.php7
deleted file mode 100644
index 613c3d34..00000000
--- a/tests/old-tests/php7/constant/old_test_normal.php7
+++ /dev/null
@@ -1,23 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/constant/support/old_test_array.php7 b/tests/old-tests/php7/constant/support/old_test_array.php7
deleted file mode 100644
index 399972ee..00000000
--- a/tests/old-tests/php7/constant/support/old_test_array.php7
+++ /dev/null
@@ -1,82 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/constant/support/old_test_core.php7 b/tests/old-tests/php7/constant/support/old_test_core.php7
deleted file mode 100644
index 6d36c439..00000000
--- a/tests/old-tests/php7/constant/support/old_test_core.php7
+++ /dev/null
@@ -1,124 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/constant/support/old_test_error.php7 b/tests/old-tests/php7/constant/support/old_test_error.php7
deleted file mode 100644
index bd11419b..00000000
--- a/tests/old-tests/php7/constant/support/old_test_error.php7
+++ /dev/null
@@ -1,61 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/constant/support/old_test_magic.php7 b/tests/old-tests/php7/constant/support/old_test_magic.php7
deleted file mode 100644
index 0a824dda..00000000
--- a/tests/old-tests/php7/constant/support/old_test_magic.php7
+++ /dev/null
@@ -1,48 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/constant/support/old_test_math-gmp.php7 b/tests/old-tests/php7/constant/support/old_test_math-gmp.php7
deleted file mode 100644
index 0b728e4c..00000000
--- a/tests/old-tests/php7/constant/support/old_test_math-gmp.php7
+++ /dev/null
@@ -1,43 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/constant/support/old_test_math.php7 b/tests/old-tests/php7/constant/support/old_test_math.php7
deleted file mode 100644
index 1ca9ab06..00000000
--- a/tests/old-tests/php7/constant/support/old_test_math.php7
+++ /dev/null
@@ -1,85 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/constant/support/old_test_output.php7 b/tests/old-tests/php7/constant/support/old_test_output.php7
deleted file mode 100644
index edf1fd88..00000000
--- a/tests/old-tests/php7/constant/support/old_test_output.php7
+++ /dev/null
@@ -1,49 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/constant/support/old_test_string.php7 b/tests/old-tests/php7/constant/support/old_test_string.php7
deleted file mode 100644
index f2c32bf6..00000000
--- a/tests/old-tests/php7/constant/support/old_test_string.php7
+++ /dev/null
@@ -1,100 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/function-call/old_test_normal.php7 b/tests/old-tests/php7/function-call/old_test_normal.php7
deleted file mode 100644
index b80e486f..00000000
--- a/tests/old-tests/php7/function-call/old_test_normal.php7
+++ /dev/null
@@ -1,29 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-myFunction();
-// ^ punctuation.definition.variable.begin.php.php7
-// ^^^^^^ variable.other.readwrite.php.php7
-// ^^ keyword.operator.other.member-access.php.php7
-// ^^^^^^^^^^ entity.name.function.php.php7
-?>
diff --git a/tests/old-tests/php7/function-call/support/old_test_array.php7 b/tests/old-tests/php7/function-call/support/old_test_array.php7
deleted file mode 100644
index 6c92a127..00000000
--- a/tests/old-tests/php7/function-call/support/old_test_array.php7
+++ /dev/null
@@ -1,250 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/function-call/support/old_test_class-object.php7 b/tests/old-tests/php7/function-call/support/old_test_class-object.php7
deleted file mode 100644
index 1fd1b0df..00000000
--- a/tests/old-tests/php7/function-call/support/old_test_class-object.php7
+++ /dev/null
@@ -1,67 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/function-call/support/old_test_core.php7 b/tests/old-tests/php7/function-call/support/old_test_core.php7
deleted file mode 100644
index f62f44eb..00000000
--- a/tests/old-tests/php7/function-call/support/old_test_core.php7
+++ /dev/null
@@ -1,175 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/function-call/support/old_test_directories.php7 b/tests/old-tests/php7/function-call/support/old_test_directories.php7
deleted file mode 100644
index 6c9f07f8..00000000
--- a/tests/old-tests/php7/function-call/support/old_test_directories.php7
+++ /dev/null
@@ -1,43 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/function-call/support/old_test_error.php7 b/tests/old-tests/php7/function-call/support/old_test_error.php7
deleted file mode 100644
index c518b7fb..00000000
--- a/tests/old-tests/php7/function-call/support/old_test_error.php7
+++ /dev/null
@@ -1,52 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/function-call/support/old_test_filesytem.php7 b/tests/old-tests/php7/function-call/support/old_test_filesytem.php7
deleted file mode 100644
index ed83c16b..00000000
--- a/tests/old-tests/php7/function-call/support/old_test_filesytem.php7
+++ /dev/null
@@ -1,259 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/function-call/support/old_test_math-gmp.php7 b/tests/old-tests/php7/function-call/support/old_test_math-gmp.php7
deleted file mode 100644
index dcebe859..00000000
--- a/tests/old-tests/php7/function-call/support/old_test_math-gmp.php7
+++ /dev/null
@@ -1,160 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/function-call/support/old_test_math.php7 b/tests/old-tests/php7/function-call/support/old_test_math.php7
deleted file mode 100644
index 9d201de2..00000000
--- a/tests/old-tests/php7/function-call/support/old_test_math.php7
+++ /dev/null
@@ -1,163 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/function-call/support/old_test_mb_string.php7 b/tests/old-tests/php7/function-call/support/old_test_mb_string.php7
deleted file mode 100644
index 6d6e886c..00000000
--- a/tests/old-tests/php7/function-call/support/old_test_mb_string.php7
+++ /dev/null
@@ -1,180 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/function-call/support/old_test_spl.php7 b/tests/old-tests/php7/function-call/support/old_test_spl.php7
deleted file mode 100644
index d171b7ed..00000000
--- a/tests/old-tests/php7/function-call/support/old_test_spl.php7
+++ /dev/null
@@ -1,58 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/function-call/support/old_test_string.php7 b/tests/old-tests/php7/function-call/support/old_test_string.php7
deleted file mode 100644
index 4fc5b4cb..00000000
--- a/tests/old-tests/php7/function-call/support/old_test_string.php7
+++ /dev/null
@@ -1,307 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/function-call/support/old_test_variable.php7 b/tests/old-tests/php7/function-call/support/old_test_variable.php7
deleted file mode 100644
index 4aa80822..00000000
--- a/tests/old-tests/php7/function-call/support/old_test_variable.php7
+++ /dev/null
@@ -1,115 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/literal/old_test_number.php7 b/tests/old-tests/php7/literal/old_test_number.php7
deleted file mode 100644
index ff919706..00000000
--- a/tests/old-tests/php7/literal/old_test_number.php7
+++ /dev/null
@@ -1,40 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/literal/string/old_test_double-quoted.php7 b/tests/old-tests/php7/literal/string/old_test_double-quoted.php7
deleted file mode 100644
index d4b9b4ff..00000000
--- a/tests/old-tests/php7/literal/string/old_test_double-quoted.php7
+++ /dev/null
@@ -1,83 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/literal/string/old_test_heredoc.php7 b/tests/old-tests/php7/literal/string/old_test_heredoc.php7
deleted file mode 100644
index a21dd71a..00000000
--- a/tests/old-tests/php7/literal/string/old_test_heredoc.php7
+++ /dev/null
@@ -1,82 +0,0 @@
-# SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-# Licensed under the Apache License, Version 2.0 (the “License”); you may not
-# use this file except in compliance with the License. You may obtain a copy of
-# the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations under
-# the License.
-
-
diff --git a/tests/old-tests/php7/literal/string/old_test_nowdoc.php7 b/tests/old-tests/php7/literal/string/old_test_nowdoc.php7
deleted file mode 100644
index 213d59e4..00000000
--- a/tests/old-tests/php7/literal/string/old_test_nowdoc.php7
+++ /dev/null
@@ -1,26 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/literal/string/old_test_single-quoted.php7 b/tests/old-tests/php7/literal/string/old_test_single-quoted.php7
deleted file mode 100644
index fdcc9fe1..00000000
--- a/tests/old-tests/php7/literal/string/old_test_single-quoted.php7
+++ /dev/null
@@ -1,29 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/old_test.php7 b/tests/old-tests/php7/old_test.php7
deleted file mode 100644
index 79124545..00000000
--- a/tests/old-tests/php7/old_test.php7
+++ /dev/null
@@ -1,31 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
-// ^^ embedded.php.php7
-// ^^ keyword.embedded.end.php.php7
-
- =
-// ^^^ embedded.short.php.php7
-// ^^^ keyword.embedded.begin.php.php7
- $var = 123;
-// ^^^^^^^^^^^ embedded.short.php.php7
- ?>
-// ^^ embedded.short.php.php7
-// ^^ keyword.embedded.end.php.php7
diff --git a/tests/old-tests/php7/old_test_class.php7 b/tests/old-tests/php7/old_test_class.php7
deleted file mode 100644
index 9d5b5096..00000000
--- a/tests/old-tests/php7/old_test_class.php7
+++ /dev/null
@@ -1,199 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/old_test_declare.php7 b/tests/old-tests/php7/old_test_declare.php7
deleted file mode 100644
index ba434f2b..00000000
--- a/tests/old-tests/php7/old_test_declare.php7
+++ /dev/null
@@ -1,32 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/old_test_function.php7 b/tests/old-tests/php7/old_test_function.php7
deleted file mode 100644
index 9095914a..00000000
--- a/tests/old-tests/php7/old_test_function.php7
+++ /dev/null
@@ -1,102 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/old_test_interface.php7 b/tests/old-tests/php7/old_test_interface.php7
deleted file mode 100644
index fb67aa01..00000000
--- a/tests/old-tests/php7/old_test_interface.php7
+++ /dev/null
@@ -1,106 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/old_test_language-construct.php7 b/tests/old-tests/php7/old_test_language-construct.php7
deleted file mode 100644
index 169a3e28..00000000
--- a/tests/old-tests/php7/old_test_language-construct.php7
+++ /dev/null
@@ -1,34 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/old_test_namespace.php7 b/tests/old-tests/php7/old_test_namespace.php7
deleted file mode 100644
index ab6490fe..00000000
--- a/tests/old-tests/php7/old_test_namespace.php7
+++ /dev/null
@@ -1,65 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/old_test_operator.php7 b/tests/old-tests/php7/old_test_operator.php7
deleted file mode 100644
index fc9e5a41..00000000
--- a/tests/old-tests/php7/old_test_operator.php7
+++ /dev/null
@@ -1,20 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/old_test_trait.php7 b/tests/old-tests/php7/old_test_trait.php7
deleted file mode 100644
index 405f422d..00000000
--- a/tests/old-tests/php7/old_test_trait.php7
+++ /dev/null
@@ -1,31 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/old_test_type.php7 b/tests/old-tests/php7/old_test_type.php7
deleted file mode 100644
index d9f34fa2..00000000
--- a/tests/old-tests/php7/old_test_type.php7
+++ /dev/null
@@ -1,115 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/old_test_use.php7 b/tests/old-tests/php7/old_test_use.php7
deleted file mode 100644
index 8f928325..00000000
--- a/tests/old-tests/php7/old_test_use.php7
+++ /dev/null
@@ -1,149 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-
diff --git a/tests/old-tests/php7/old_test_variable.php7 b/tests/old-tests/php7/old_test_variable.php7
deleted file mode 100644
index 3e95edd7..00000000
--- a/tests/old-tests/php7/old_test_variable.php7
+++ /dev/null
@@ -1,29 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.php7.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
-variable
-// ^ punctuation.definition.variable.begin.php.php7
-// ^^^^^^ variable.other.readwrite.php.php7
-// ^^ keyword.operator.other.member-access.php.php7
-// ^^^^^^^^ variable.other.readwrite.php.php7
- Type::$variable
-// ^^^^ entity.name.type.php.php7
-// ^^ keyword.operator.other.scope-resolution.php.php7
-// ^ punctuation.definition.variable.begin.php.php7
-// ^^^^^^^^ variable.other.readwrite.php.php7
-?>
diff --git a/tests/old-tests/scss3/selector/old_test_pseudo-class.scss b/tests/old-tests/scss3/selector/old_test_pseudo-class.scss
deleted file mode 100644
index 3d622b88..00000000
--- a/tests/old-tests/scss3/selector/old_test_pseudo-class.scss
+++ /dev/null
@@ -1,141 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.scss3.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http ://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
- :active
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :any
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^ .entity.name.selector.pseudo-class.scss.scss3
- :any-link
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :checked
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :default
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :dir()
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^ .entity.name.selector.pseudo-class.scss.scss3
-// ^ .punctuation.definition.selector.pseudo-class.arguments.begin.scss.scss3
-// ^ .punctuation.definition.selector.pseudo-class.arguments.end.scss.scss3
- :disabled
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :empty
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :enabled
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :first
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :first-child
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^^^^^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :first-of-type
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^^^^^^^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :fullscreen
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^^^^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :focus
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :hover
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :indeterminate
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^^^^^^^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :in-range
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :invalid
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :lang
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :last-child
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^^^^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :last-of-type
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^^^^^^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :left
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :link
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :not()
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^ .entity.name.selector.pseudo-class.scss.scss3
-// ^ .punctuation.definition.selector.pseudo-class.arguments.begin.scss.scss3
-// ^ .punctuation.definition.selector.pseudo-class.arguments.end.scss.scss3
- :nth-child
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^^^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :nth-last-child
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^^^^^^^^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :nth-last-of-type
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^^^^^^^^^^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :nth-of-type
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^^^^^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :only-child
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^^^^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :only-of-type
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^^^^^^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :optional
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :out-of-range
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^^^^^^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :read-only
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^^^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :read-write
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^^^^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :required
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :right
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :root
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :scope
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :target
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :valid
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^^ .entity.name.selector.pseudo-class.scss.scss3
- :visited
-// ^ .punctuation.definition.selector.pseudo-class.scss.scss3
-// ^^^^^^^ .entity.name.selector.pseudo-class.scss.scss3
diff --git a/tests/old-tests/scss3/selector/old_test_pseudo-element.scss b/tests/old-tests/scss3/selector/old_test_pseudo-element.scss
deleted file mode 100644
index 9a9a7eee..00000000
--- a/tests/old-tests/scss3/selector/old_test_pseudo-element.scss
+++ /dev/null
@@ -1,32 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.scss3.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http ://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
- ::after
-// ^^ .punctuation.definition.selector.pseudo-element.scss.scss3
-// ^^^^^ .entity.name.selector.pseudo-element.scss.scss3
- ::backdrop
-// ^^ .punctuation.definition.selector.pseudo-element.scss.scss3
-// ^^^^^^^^ .entity.name.selector.pseudo-element.scss.scss3
- ::before
-// ^^ .punctuation.definition.selector.pseudo-element.scss.scss3
-// ^^^^^^ .entity.name.selector.pseudo-element.scss.scss3
- ::first-letter
-// ^^ .punctuation.definition.selector.pseudo-element.scss.scss3
-// ^^^^^^^^^^^^ .entity.name.selector.pseudo-element.scss.scss3
- ::first-line
-// ^^ .punctuation.definition.selector.pseudo-element.scss.scss3
-// ^^^^^^^^^^ .entity.name.selector.pseudo-element.scss.scss3
- ::selection
-// ^^ .punctuation.definition.selector.pseudo-element.scss.scss3
-// ^^^^^^^^^ .entity.name.selector.pseudo-element.scss.scss3
diff --git a/tests/plugin/NaomiTestCase.py b/tests/plugin/NaomiTestCase.py
deleted file mode 100644
index 8df33c31..00000000
--- a/tests/plugin/NaomiTestCase.py
+++ /dev/null
@@ -1,51 +0,0 @@
-# Licensed under the Apache License, Version 2.0 (the “License”); you may not
-# use this file except in compliance with the License. You may obtain a copy of
-# the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations under
-# the License.
-
-from os.path import dirname, join
-from sublime import active_window, Region, set_clipboard
-from unittest import TestCase
-import sys
-
-
-class NaomiTestCase(TestCase):
- def loadFixture(self, *relative_path):
- if self.fixture_loaded:
- raise RuntimeError("Fixture already loaded.")
-
- base_path = dirname(sys.modules[self.__class__.__module__].__file__)
- full_path = join(base_path, *relative_path)
-
- # Load fixture.
- fixture_content = ""
- with open(full_path, "r") as file:
- fixture_content = file.read()
-
- self.setViewText(fixture_content)
- self.setCursorPosition(0)
- self.fixture_loaded = True
-
- def setCursorPosition(self, offset):
- self.view.sel().clear()
- self.view.sel().add(Region(offset))
-
- def setViewText(self, text):
- self.view.run_command("insert", {"characters": text})
-
- def setUp(self):
- set_clipboard("")
- self.view = active_window().new_file()
- self.view.set_scratch(True)
- self.fixture_loaded = False
-
- def tearDown(self):
- if self.view:
- self.view.close()
diff --git a/tests/plugin/__init__.py b/tests/plugin/__init__.py
deleted file mode 100644
index bf72dbf4..00000000
--- a/tests/plugin/__init__.py
+++ /dev/null
@@ -1,11 +0,0 @@
-# Licensed under the Apache License, Version 2.0 (the “License”); you may not
-# use this file except in compliance with the License. You may obtain a copy of
-# the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations under
-# the License.
diff --git a/tests/plugin/region/__init__.py b/tests/plugin/region/__init__.py
deleted file mode 100644
index bf72dbf4..00000000
--- a/tests/plugin/region/__init__.py
+++ /dev/null
@@ -1,11 +0,0 @@
-# Licensed under the Apache License, Version 2.0 (the “License”); you may not
-# use this file except in compliance with the License. You may obtain a copy of
-# the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations under
-# the License.
diff --git a/tests/plugin/region/scan/__init__.py b/tests/plugin/region/scan/__init__.py
deleted file mode 100644
index bf72dbf4..00000000
--- a/tests/plugin/region/scan/__init__.py
+++ /dev/null
@@ -1,11 +0,0 @@
-# Licensed under the Apache License, Version 2.0 (the “License”); you may not
-# use this file except in compliance with the License. You may obtain a copy of
-# the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations under
-# the License.
diff --git a/tests/plugin/region/scan/fixtures/lorem.txt b/tests/plugin/region/scan/fixtures/lorem.txt
deleted file mode 100644
index 826e8ffe..00000000
--- a/tests/plugin/region/scan/fixtures/lorem.txt
+++ /dev/null
@@ -1 +0,0 @@
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus blandit dui eu felis volutpat sodales. Vivamus quis porttitor augue. Integer posuere a diam in condimentum. Maecenas dignissim et orci at consectetur. Phasellus at nisi sodales, rutrum justo suscipit, volutpat lacus. Fusce dui tellus, rhoncus sed libero sit amet, fringilla elementum urna. Suspendisse potenti. Aliquam pharetra maximus varius. Aenean sed lacinia augue. Integer malesuada aliquam risus.
diff --git a/tests/plugin/region/scan/test_scan.py b/tests/plugin/region/scan/test_scan.py
deleted file mode 100644
index 1943efad..00000000
--- a/tests/plugin/region/scan/test_scan.py
+++ /dev/null
@@ -1,34 +0,0 @@
-# Licensed under the Apache License, Version 2.0 (the “License”); you may not
-# use this file except in compliance with the License. You may obtain a copy of
-# the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations under
-# the License.
-
-from ...NaomiTestCase import NaomiTestCase
-from Naomi.plugin.region.scan import scan
-
-
-def false_predicate(view, offset):
- return False
-
-
-def true_predicate(view, offset):
- return True
-
-
-class TestScanNoLimit(NaomiTestCase):
- def test_stop_at_the_beginning(self):
- self.loadFixture("fixtures", "lorem.txt")
- resulting_offset = scan(self.view, 0, false_predicate)
- self.assertEqual(resulting_offset, 0)
-
- def test_stop_at_the_last_char_pos(self):
- self.loadFixture("fixtures", "lorem.txt")
- resulting_offset = scan(self.view, 0, true_predicate)
- self.assertEqual(resulting_offset, self.view.size() - 1)
diff --git a/tests/syntaxes/css3/syntax_test_invalid_nest.css3 b/tests/syntaxes/css3/syntax_test_invalid_nest.css3
deleted file mode 100644
index 5cbecc5f..00000000
--- a/tests/syntaxes/css3/syntax_test_invalid_nest.css3
+++ /dev/null
@@ -1,35 +0,0 @@
-/* SYNTAX TEST "Packages/Naomi/syntaxes/naomi.css3.sublime-syntax" */
-
-/**
- * Licensed under the Apache License, Version 2.0 (the “License”); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-
-/**
- * The following examples are invalid, but the syntax must try to highlight them
- * as valid to simplify the integration with SASS, SCSS, etc...
- */
-
-.foo {
- color: red;
- .bar { color: blue; }
-}
-
-.foo {
- color: red;
- .bar & { color:blue; }
-}
-
-.foo {
- color: red;
- &.bar, .baz { color: blue; }
-}
diff --git a/tests/syntaxes/css3/syntax_test_nest.css3 b/tests/syntaxes/css3/syntax_test_nest.css3
deleted file mode 100644
index 41fb9304..00000000
--- a/tests/syntaxes/css3/syntax_test_nest.css3
+++ /dev/null
@@ -1,29 +0,0 @@
-/* SYNTAX TEST "Packages/Naomi/syntaxes/naomi.css3.sublime-syntax" */
-
-/**
- * Licensed under the Apache License, Version 2.0 (the “License”); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-
- .foo {
- color: blue;
-
- & > .bar { color: blue; }
-
- &.bar { color: blue; }
-
- & + .baz, &.qux { color: blue; }
-
- @nest .bar { color: blue; }
-
- @nest & > .bar { color: blue; }
- }
diff --git a/tests/syntaxes/css3/syntax_test_property.css3 b/tests/syntaxes/css3/syntax_test_property.css3
deleted file mode 100644
index 90a762f4..00000000
--- a/tests/syntaxes/css3/syntax_test_property.css3
+++ /dev/null
@@ -1,1986 +0,0 @@
-/* SYNTAX TEST "Packages/Naomi/syntaxes/naomi.css3.sublime-syntax" */
-
-/**
- * Licensed under the Apache License, Version 2.0 (the “License”); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-
-div {
- align-content:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- align-items:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- align-self:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- alignment-baseline:;
-/* ^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- all:;
-/* ^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- animation:;
-/* ^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- animation-delay:;
-/* ^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- animation-direction:;
-/* ^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- animation-duration:;
-/* ^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- animation-fill-mode:;
-/* ^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- animation-iteration-count:;
-/* ^^^^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- animation-name:;
-/* ^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- animation-play-state:;
-/* ^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- animation-timing-function:;
-/* ^^^^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- appearance:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- azimuth:;
-/* ^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- background:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- background-attachment:;
-/* ^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- background-blend-mode:;
-/* ^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- background-clip:;
-/* ^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- background-color:;
-/* ^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- background-image:;
-/* ^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- background-image-transform:;
-/* ^^^^^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- background-origin:;
-/* ^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- background-position:;
-/* ^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- background-repeat:;
-/* ^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- background-size:;
-/* ^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- baseline-shift:;
-/* ^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- block-size:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- block-step:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- block-step-align:;
-/* ^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- block-step-insert:;
-/* ^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- block-step-round:;
-/* ^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- block-step-size:;
-/* ^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- bookmark-label:;
-/* ^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- bookmark-level:;
-/* ^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- bookmark-state:;
-/* ^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border:;
-/* ^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-block:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-block-color:;
-/* ^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-block-end:;
-/* ^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-block-end-color:;
-/* ^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-block-end-style:;
-/* ^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-block-end-width:;
-/* ^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-block-start:;
-/* ^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-block-start-color:;
-/* ^^^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-block-start-style:;
-/* ^^^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-block-start-width:;
-/* ^^^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-block-style:;
-/* ^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-block-width:;
-/* ^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-bottom:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-bottom-color:;
-/* ^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-bottom-left-radius:;
-/* ^^^^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-bottom-right-radius:;
-/* ^^^^^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-bottom-style:;
-/* ^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-bottom-width:;
-/* ^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-boundary:;
-/* ^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-collapse:;
-/* ^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-color:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-image:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-image-outset:;
-/* ^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-image-repeat:;
-/* ^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-image-slice:;
-/* ^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-image-source:;
-/* ^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-image-transform:;
-/* ^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-image-width:;
-/* ^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-inline:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-inline-color:;
-/* ^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-inline-end:;
-/* ^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-inline-end-color:;
-/* ^^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-inline-end-style:;
-/* ^^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-inline-end-width:;
-/* ^^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-inline-start:;
-/* ^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-inline-start-color:;
-/* ^^^^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-inline-start-style:;
-/* ^^^^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-inline-start-width:;
-/* ^^^^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-inline-style:;
-/* ^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-inline-width:;
-/* ^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-left:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-left-color:;
-/* ^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-left-style:;
-/* ^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-left-width:;
-/* ^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-radius:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-right:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-right-color:;
-/* ^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-right-style:;
-/* ^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-right-width:;
-/* ^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-spacing:;
-/* ^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-style:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-top:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-top-color:;
-/* ^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-top-left-radius:;
-/* ^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-top-right-radius:;
-/* ^^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-top-style:;
-/* ^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-top-width:;
-/* ^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- border-width:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- bottom:;
-/* ^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- box-decoration-break:;
-/* ^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- box-shadow:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- box-sizing:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- box-snap:;
-/* ^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- break-after:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- break-before:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- break-inside:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- caption-side:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- caret:;
-/* ^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- caret-color:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- caret-shape:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- chains:;
-/* ^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- clear:;
-/* ^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- clip:;
-/* ^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- clip-path:;
-/* ^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- clip-rule:;
-/* ^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- color:;
-/* ^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- color-adjust:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- color-interpolation-filters:;
-/* ^^^^^^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- column-count:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- column-fill:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- column-gap:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- column-rule:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- column-rule-color:;
-/* ^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- column-rule-style:;
-/* ^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- column-rule-width:;
-/* ^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- column-span:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- column-width:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- columns:;
-/* ^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- contain:;
-/* ^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- content:;
-/* ^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- continue:;
-/* ^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- counter-increment:;
-/* ^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- counter-reset:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- counter-set:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- cue:;
-/* ^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- cue-after:;
-/* ^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- cue-before:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- cursor:;
-/* ^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- direction:;
-/* ^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- display:;
-/* ^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- dominant-baseline:;
-/* ^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- elevation:;
-/* ^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- empty-cells:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- fill:;
-/* ^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- fill-break:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- fill-color:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- fill-image:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- fill-opacity:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- fill-origin:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- fill-position:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- fill-repeat:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- fill-rule:;
-/* ^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- fill-size:;
-/* ^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- filter:;
-/* ^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- flex:;
-/* ^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- flex-basis:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- flex-direction:;
-/* ^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- flex-flow:;
-/* ^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- flex-grow:;
-/* ^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- flex-shrink:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- flex-wrap:;
-/* ^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- float:;
-/* ^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- float-defer:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- float-offset:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- float-reference:;
-/* ^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- flood-color:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- flood-opacity:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- flow:;
-/* ^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- flow-from:;
-/* ^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- flow-into:;
-/* ^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- font:;
-/* ^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- font-family:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- font-feature-settings:;
-/* ^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- font-kerning:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- font-language-override:;
-/* ^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- font-max-size:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- font-min-size:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- font-optical-sizing:;
-/* ^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- font-palette:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- font-presentation:;
-/* ^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- font-size:;
-/* ^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- font-size-adjust:;
-/* ^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- font-stretch:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- font-style:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- font-synthesis:;
-/* ^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- font-variant:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- font-variant-alternates:;
-/* ^^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- font-variant-caps:;
-/* ^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- font-variant-east-asian:;
-/* ^^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- font-variant-ligatures:;
-/* ^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- font-variant-numeric:;
-/* ^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- font-variant-position:;
-/* ^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- font-variation-settings:;
-/* ^^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- font-weight:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- footnote-display:;
-/* ^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- footnote-policy:;
-/* ^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- gap:;
-/* ^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- glyph-orientation-vertical:;
-/* ^^^^^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- grid:;
-/* ^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- grid-area:;
-/* ^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- grid-auto-columns:;
-/* ^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- grid-auto-flow:;
-/* ^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- grid-auto-rows:;
-/* ^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- grid-column:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- grid-column-end:;
-/* ^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- grid-column-start:;
-/* ^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- grid-row:;
-/* ^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- grid-row-end:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- grid-row-start:;
-/* ^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- grid-template:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- grid-template-areas:;
-/* ^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- grid-template-columns:;
-/* ^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- grid-template-rows:;
-/* ^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- hanging-punctuation:;
-/* ^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- height:;
-/* ^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- hyphenate-character:;
-/* ^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- hyphenate-limit-chars:;
-/* ^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- hyphenate-limit-last:;
-/* ^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- hyphenate-limit-lines:;
-/* ^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- hyphenate-limit-zone:;
-/* ^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- hyphens:;
-/* ^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- image-orientation:;
-/* ^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- image-resolution:;
-/* ^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- initial-letter:;
-/* ^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- initial-letter-align:;
-/* ^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- initial-letter-wrap:;
-/* ^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- inline-size:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- inset:;
-/* ^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- inset-block:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- inset-block-end:;
-/* ^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- inset-block-start:;
-/* ^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- inset-inline:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- inset-inline-end:;
-/* ^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- inset-inline-start:;
-/* ^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- isolation:;
-/* ^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- justify-content:;
-/* ^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- justify-items:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- justify-self:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- left:;
-/* ^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- letter-spacing:;
-/* ^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- lighting-color:;
-/* ^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- line-break:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- line-grid:;
-/* ^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- line-height:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- line-height-step:;
-/* ^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- line-snap:;
-/* ^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- list-style:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- list-style-image:;
-/* ^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- list-style-position:;
-/* ^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- list-style-type:;
-/* ^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- margin:;
-/* ^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- margin-block:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- margin-block-end:;
-/* ^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- margin-block-start:;
-/* ^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- margin-bottom:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- margin-inline:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- margin-inline-end:;
-/* ^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- margin-inline-start:;
-/* ^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- margin-left:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- margin-right:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- margin-top:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- marker:;
-/* ^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- marker-end:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- marker-knockout-left:;
-/* ^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- marker-knockout-right:;
-/* ^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- marker-mid:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- marker-pattern:;
-/* ^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- marker-segment:;
-/* ^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- marker-side:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- marker-start:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- marquee-direction:;
-/* ^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- marquee-loop:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- marquee-speed:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- marquee-style:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- mask:;
-/* ^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- mask-border:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- mask-border-mode:;
-/* ^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- mask-border-outset:;
-/* ^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- mask-border-repeat:;
-/* ^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- mask-border-slice:;
-/* ^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- mask-border-source:;
-/* ^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- mask-border-width:;
-/* ^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- mask-clip:;
-/* ^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- mask-composite:;
-/* ^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- mask-image:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- mask-mode:;
-/* ^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- mask-origin:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- mask-position:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- mask-repeat:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- mask-size:;
-/* ^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- mask-type:;
-/* ^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- max-block-size:;
-/* ^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- max-height:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- max-inline-size:;
-/* ^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- max-lines:;
-/* ^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- max-width:;
-/* ^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- min-block-size:;
-/* ^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- min-height:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- min-inline-size:;
-/* ^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- min-width:;
-/* ^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- mix-blend-mode:;
-/* ^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- nav-down:;
-/* ^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- nav-left:;
-/* ^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- nav-right:;
-/* ^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- nav-up:;
-/* ^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- object-fit:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- object-position:;
-/* ^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- offset:;
-/* ^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- offset-after:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- offset-anchor:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- offset-before:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- offset-distance:;
-/* ^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- offset-end:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- offset-path:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- offset-position:;
-/* ^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- offset-rotate:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- offset-start:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- opacity:;
-/* ^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- order:;
-/* ^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- orphans:;
-/* ^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- outline:;
-/* ^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- outline-color:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- outline-offset:;
-/* ^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- outline-style:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- outline-width:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- overflow:;
-/* ^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- overflow-style:;
-/* ^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- overflow-wrap:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- overflow-x:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- overflow-y:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- padding:;
-/* ^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- padding-block:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- padding-block-end:;
-/* ^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- padding-block-start:;
-/* ^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- padding-bottom:;
-/* ^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- padding-inline:;
-/* ^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- padding-inline-end:;
-/* ^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- padding-inline-start:;
-/* ^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- padding-left:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- padding-right:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- padding-top:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- page:;
-/* ^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- page-break-after:;
-/* ^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- page-break-before:;
-/* ^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- page-break-inside:;
-/* ^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- pause:;
-/* ^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- pause-after:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- pause-before:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- pitch:;
-/* ^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- pitch-range:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- place-content:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- place-items:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- place-self:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- play-during:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- position:;
-/* ^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- presentation-level:;
-/* ^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- quotes:;
-/* ^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- region-fragment:;
-/* ^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- resize:;
-/* ^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- rest:;
-/* ^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- rest-after:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- rest-before:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- richness:;
-/* ^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- right:;
-/* ^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- rotation:;
-/* ^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- rotation-point:;
-/* ^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- row-gap:;
-/* ^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- ruby-align:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- ruby-merge:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- ruby-position:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- running:;
-/* ^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- scroll-behavior:;
-/* ^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- scroll-margin:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- scroll-margin-block:;
-/* ^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- scroll-margin-block-end:;
-/* ^^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- scroll-margin-block-start:;
-/* ^^^^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- scroll-margin-bottom:;
-/* ^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- scroll-margin-inline:;
-/* ^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- scroll-margin-inline-end:;
-/* ^^^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- scroll-margin-inline-start:;
-/* ^^^^^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- scroll-margin-left:;
-/* ^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- scroll-margin-right:;
-/* ^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- scroll-margin-top:;
-/* ^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- scroll-padding:;
-/* ^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- scroll-padding-block:;
-/* ^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- scroll-padding-block-end:;
-/* ^^^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- scroll-padding-block-start:;
-/* ^^^^^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- scroll-padding-bottom:;
-/* ^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- scroll-padding-inline:;
-/* ^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- scroll-padding-inline-end:;
-/* ^^^^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- scroll-padding-inline-start:;
-/* ^^^^^^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- scroll-padding-left:;
-/* ^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- scroll-padding-right:;
-/* ^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- scroll-padding-top:;
-/* ^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- scroll-snap-align:;
-/* ^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- scroll-snap-stop:;
-/* ^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- scroll-snap-type:;
-/* ^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- scrollbar-gutter:;
-/* ^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- shape-image-threshold:;
-/* ^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- shape-inside:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- shape-margin:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- shape-outside:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- size:;
-/* ^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- speak:;
-/* ^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- speak-as:;
-/* ^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- speak-header:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- speak-numeral:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- speak-punctuation:;
-/* ^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- speech-rate:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- stress:;
-/* ^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- string-set:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- stroke:;
-/* ^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- stroke-align:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- stroke-alignment:;
-/* ^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- stroke-break:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- stroke-color:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- stroke-dash-corner:;
-/* ^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- stroke-dash-justify:;
-/* ^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- stroke-dashadjust:;
-/* ^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- stroke-dasharray:;
-/* ^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- stroke-dashcorner:;
-/* ^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- stroke-dashoffset:;
-/* ^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- stroke-image:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- stroke-linecap:;
-/* ^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- stroke-linejoin:;
-/* ^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- stroke-miterlimit:;
-/* ^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- stroke-opacity:;
-/* ^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- stroke-origin:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- stroke-position:;
-/* ^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- stroke-repeat:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- stroke-size:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- stroke-width:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- tab-size:;
-/* ^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- table-layout:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- text-align:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- text-align-all:;
-/* ^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- text-align-last:;
-/* ^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- text-combine-upright:;
-/* ^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- text-decoration:;
-/* ^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- text-decoration-color:;
-/* ^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- text-decoration-line:;
-/* ^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- text-decoration-skip:;
-/* ^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- text-decoration-style:;
-/* ^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- text-emphasis:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- text-emphasis-color:;
-/* ^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- text-emphasis-position:;
-/* ^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- text-emphasis-style:;
-/* ^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- text-indent:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- text-justify:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- text-orientation:;
-/* ^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- text-overflow:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- text-shadow:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- text-space-collapse:;
-/* ^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- text-space-trim:;
-/* ^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- text-spacing:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- text-transform:;
-/* ^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- text-underline-position:;
-/* ^^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- text-wrap:;
-/* ^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- top:;
-/* ^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- transform:;
-/* ^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- transform-box:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- transform-origin:;
-/* ^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- transition:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- transition-delay:;
-/* ^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- transition-duration:;
-/* ^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- transition-property:;
-/* ^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- transition-timing-function:;
-/* ^^^^^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- unicode-bidi:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- user-select:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- vertical-align:;
-/* ^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- visibility:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- voice-balance:;
-/* ^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- voice-duration:;
-/* ^^^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- voice-family:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- voice-pitch:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- voice-range:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- voice-rate:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- voice-stress:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- voice-volume:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- volume:;
-/* ^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- white-space:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- widows:;
-/* ^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- width:;
-/* ^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- will-change:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- word-break:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- word-spacing:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- word-wrap:;
-/* ^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- wrap-after:;
-/* ^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- wrap-before:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- wrap-flow:;
-/* ^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- wrap-inside:;
-/* ^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- wrap-through:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- writing-mode:;
-/* ^^^^^^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
- z-index:;
-/* ^^^^^^^ support.type.property-name.css */
-/* ^ punctuation.separator.key-value.css */
-/* ^ punctuation.terminator.css */
-}
diff --git a/tests/syntaxes/fjsx15/destructuring/syntax_test_array.js b/tests/syntaxes/fjsx15/destructuring/syntax_test_array.js
deleted file mode 100644
index 81e1aee8..00000000
--- a/tests/syntaxes/fjsx15/destructuring/syntax_test_array.js
+++ /dev/null
@@ -1,72 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.fjsx15.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
- let [a=0,...b=0] = [1,2,3];
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^ .meta.declaration.variable.js
-// ^^^^^^^^^^^^ .meta.binding.destructuring.sequence.js
-// ^^^^^^^ .meta.sequence.js
-// ^^^ .storage.type.js
-// ^ .punctuation.section.brackets.begin.js
-// ^ .variable.other.readwrite.js
-// ^ .keyword.operator.other.assignment.js
-// ^ .constant.numeric.decimal.js
-// ^ .punctuation.separator.comma.js
-// ^^^ .keyword.operator.rest.js
-// ^ .variable.other.readwrite.js
-// ^ .keyword.operator.other.assignment.js
-// ^ .constant.numeric.decimal.js
-// ^ .punctuation.section.brackets.end.js
-// ^ .keyword.operator.other.assignment.js
-// ^ .punctuation.section.brackets.begin.js
-// ^ .constant.numeric.decimal.js
-// ^ .punctuation.separator.comma.js
-// ^ .constant.numeric.decimal.js
-// ^ .punctuation.separator.comma.js
-// ^ .constant.numeric.decimal.js
-// ^ .punctuation.section.brackets.end.js
-// ^ .punctuation.terminator.js
- let [[a=0,...b=0],[a=0,...b=0]] = [1,2,3];
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .meta.declaration.variable.js
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^ .meta.binding.destructuring.sequence.js
-// ^^^ .storage.type.js
-// ^^ .punctuation.section.brackets.begin.js
-// ^ .variable.other.readwrite.js
-// ^ .keyword.operator.other.assignment.js
-// ^ .constant.numeric.decimal.js
-// ^ .punctuation.separator.comma.js
-// ^^^ .keyword.operator.rest.js
-// ^ .variable.other.readwrite.js
-// ^ .keyword.operator.other.assignment.js
-// ^ .constant.numeric.decimal.js
-// ^ .punctuation.section.brackets.end.js
-// ^ .punctuation.separator.comma.js
-// ^ .punctuation.section.brackets.begin.js
-// ^ .variable.other.readwrite.js
-// ^ .keyword.operator.other.assignment.js
-// ^ .constant.numeric.decimal.js
-// ^ .punctuation.separator.comma.js
-// ^^^ .keyword.operator.rest.js
-// ^ .variable.other.readwrite.js
-// ^ .keyword.operator.other.assignment.js
-// ^ .constant.numeric.decimal.js
-// ^^ .punctuation.section.brackets.end.js
-// ^ .keyword.operator.other.assignment.js
-// ^ .punctuation.section.brackets.begin.js
-// ^ .constant.numeric.decimal.js
-// ^ .punctuation.separator.comma.js
-// ^ .constant.numeric.decimal.js
-// ^ .punctuation.separator.comma.js
-// ^ .constant.numeric.decimal.js
-// ^ .punctuation.section.brackets.end.js
-// ^ .punctuation.terminator.js
diff --git a/tests/syntaxes/fjsx15/destructuring/syntax_test_object.js b/tests/syntaxes/fjsx15/destructuring/syntax_test_object.js
deleted file mode 100644
index 70623e88..00000000
--- a/tests/syntaxes/fjsx15/destructuring/syntax_test_object.js
+++ /dev/null
@@ -1,51 +0,0 @@
-// SYNTAX TEST "Packages/Naomi/syntaxes/naomi.fjsx15.sublime-syntax"
-
-// Licensed under the Apache License, Version 2.0 (the “License”); you may not
-// use this file except in compliance with the License. You may obtain a copy of
-// the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations under
-// the License.
-
- let {[a + b]:abc=0, abc:abc, ...abc=0} = {a:1};
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .meta.declaration.variable.js
-// ^ - .meta.declaration.variable.js
-// ^ .meta.binding.destructuring.mapping.js
-// ^^^^^^^ - .meta.binding.destructuring.mapping.js
-// ^^^^^^^ .meta.binding.destructuring.mapping.key.computed.js
-// ^^^ .meta.binding.destructuring.mapping.key.js
-// ^^^ .meta.object-literal.key.js
-// ^^^^^^^^^^^^^^ .meta.binding.destructuring.mapping.js
-// ^^^^^ .meta.object-literal.js
-// ^^^ .storage.type.js
-// ^ .punctuation.section.block.begin.js
-// ^ .punctuation.section.brackets.begin.js
-// ^ variable.other.readwrite.js
-// ^ keyword.operator.arithmetic.js
-// ^ variable.other.readwrite.js
-// ^ .punctuation.section.brackets.end.js
-// ^ .punctuation.binding.js
-// ^^^ variable.other.readwrite.js
-// ^ .keyword.operator.other.assignment.js
-// ^ .constant.numeric.decimal.js
-// ^ .punctuation.separator.comma.js
-// ^ .punctuation.binding.js
-// ^^^ variable.other.readwrite.js
-// ^ .punctuation.separator.comma.js
-// ^^^ .keyword.operator.rest.js
-// ^^^ variable.other.readwrite.js
-// ^ .keyword.operator.other.assignment.js
-// ^ .constant.numeric.decimal.js
-// ^ .punctuation.section.block.end.js
-// ^ .keyword.operator.other.assignment.js
-// ^ .punctuation.section.block.begin.js
-// ^ string.unquoted.js
-// ^ .punctuation.separator.key-value.js
-// ^ .constant.numeric.decimal.js
-// ^ .punctuation.section.block.end.js
-// ^ .punctuation.terminator.js
diff --git a/unittesting.json b/unittesting.json
new file mode 100644
index 00000000..6fa02e2b
--- /dev/null
+++ b/unittesting.json
@@ -0,0 +1,4 @@
+{
+ "pattern": "*test.py",
+ "tests_dir": "system"
+}
diff --git a/vendor/borela/AnyEventSubscription.py b/vendor/borela/AnyEventSubscription.py
new file mode 100644
index 00000000..bbe92ea8
--- /dev/null
+++ b/vendor/borela/AnyEventSubscription.py
@@ -0,0 +1,32 @@
+# Licensed under the Apache License, Version 2.0 (the “License”); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+from .EventSubscription import EventSubscription
+
+class AnyEventSubscription(EventSubscription):
+ def __init__(self, engine, subscriber):
+ super(AnyEventSubscription, self).__init__(
+ engine=engine,
+ event=None,
+ subscriber=subscriber,
+ )
+
+ def is_active(self):
+ return self._engine.is_subscribed(self._subscriber)
+
+ def subscribe(self):
+ if self.is_active():
+ return
+ return self._engine.on_any(self._subscriber)
+
+ def unsubscribe(self):
+ self._engine.unsubscribe(self._subscriber)
diff --git a/vendor/borela/EventEngine.py b/vendor/borela/EventEngine.py
new file mode 100644
index 00000000..ff58cde4
--- /dev/null
+++ b/vendor/borela/EventEngine.py
@@ -0,0 +1,94 @@
+# Licensed under the Apache License, Version 2.0 (the “License”); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+from collections import (
+ defaultdict,
+ OrderedDict,
+)
+
+from .AnyEventSubscription import AnyEventSubscription
+from .EventSubscription import EventSubscription
+
+class EventEngine:
+ __slots__ = [
+ '__events',
+ '__anySubscribers',
+ ]
+
+ def __init__(self):
+ self.__events = defaultdict(OrderedDict)
+ self.__anySubscribers = []
+
+ # Emits an event to the subscribers, it expects a dictionary containing the
+ # event type and the payload, for example:
+ #
+ # {
+ # 'type': 'Some Event',
+ # 'payload': {...}
+ # }
+ #
+ # @param data
+ # Any value that will be passed to the subscribers.
+ def emit(self, data):
+ for subscriber in self.__anySubscribers:
+ subscriber(data)
+
+ event = data['type']
+ for subscriber in self.__events[event].values():
+ subscriber(data)
+
+ def is_subscribed(self, subscriber, event):
+ if event is None:
+ return subscriber in self.__anySubscribers
+ return subscriber in self.__events[event]
+
+ def is_subscribed_to_anything(self, subscriber):
+ if subscriber in self.__anySubscribers:
+ return True
+ return any(
+ subscriber in subscribers
+ for subscribers in self.__events.values()
+ )
+
+ def on(self, event, subscriber=None):
+ if subscriber is not None:
+ return self.__on(event, subscriber)
+
+ def decorator(subscriber):
+ return self.__on(event, subscriber)
+
+ return decorator
+
+ def once(self, event, subscriber):
+ # TODO
+ pass
+
+ def on_any(self, subscriber):
+ self.__anySubscribers.append(subscriber)
+ return AnyEventSubscription(self, subscriber)
+
+ def once_any(self, subscriber):
+ # TODO
+ pass
+
+ def unsubscribe(self, subscriber, event):
+ if event is not None:
+ self.__events[event].pop(subscriber)
+ return
+
+ self.__anySubscribers.remove(subscriber)
+
+ def __on(self, event, subscriber):
+ if not callable(subscriber):
+ raise Exception('Subscriber is not callable.')
+ self.__events[event][subscriber] = subscriber
+ return EventSubscription(self, event, subscriber)
diff --git a/vendor/borela/EventSubscription.py b/vendor/borela/EventSubscription.py
new file mode 100644
index 00000000..f737ca16
--- /dev/null
+++ b/vendor/borela/EventSubscription.py
@@ -0,0 +1,43 @@
+# Licensed under the Apache License, Version 2.0 (the “License”); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+class EventSubscription:
+ __slots__ = [
+ '_engine',
+ '_event',
+ '_subscriber',
+ ]
+
+ def __init__(self, engine, event, subscriber):
+ self._engine = engine
+ self._event = event
+ self._subscriber = subscriber
+
+ def is_active(self):
+ return self._engine.is_subscribed(
+ self._subscriber,
+ self._event,
+ )
+
+ def subscribe(self):
+ if self.is_active():
+ return
+ return self.engine.on(
+ self._event,
+ self._subscriber,
+ )
+
+ def unsubscribe(self):
+ self._engine.unsubscribe(
+ self._subscriber,
+ self._event,
+ )
diff --git a/vendor/borela/Stack.py b/vendor/borela/Stack.py
new file mode 100644
index 00000000..ed8614d1
--- /dev/null
+++ b/vendor/borela/Stack.py
@@ -0,0 +1,43 @@
+# Licensed under the Apache License, Version 2.0 (the “License”); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+class Stack(list):
+ __slots__ = ['__i']
+
+ def __getitem__(self, index):
+ return list.__getitem__(self, len(self) - 1 - index)
+
+ def __iter__(self):
+ self.__i = -1
+ return self
+
+ def __next__(self):
+ self.__i += 1
+
+ if self.__i >= len(self):
+ raise StopIteration()
+
+ return self[self.__i]
+
+ def __repr__(self):
+ items = ''
+ for item in self:
+ if items:
+ items += ','
+ items += repr(item)
+ return '[%s]' % items
+
+ def push(self, value):
+ self.append(value)
+
+ def push_back(self, value):
+ self.insert(0, value)
diff --git a/vendor/borela/StateStore.py b/vendor/borela/StateStore.py
new file mode 100644
index 00000000..26707089
--- /dev/null
+++ b/vendor/borela/StateStore.py
@@ -0,0 +1,56 @@
+# Licensed under the Apache License, Version 2.0 (the “License”); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+from copy import deepcopy
+
+# Represents a container for the application’s state that can be changed by
+# applying events to it.
+class StateStore:
+ __slots__ = [
+ '__reducers',
+ '__state',
+ ]
+
+ def __init__(self, **reducers):
+ self.__state = {}
+ self.__reducers = reducers
+
+ # Initialize state.
+ for name, reducer in reducers.items():
+ self.__state[name] = reducer()
+
+ def __contains__(self, key):
+ return key in self.__state
+
+ def __getitem__(self, key):
+ return deepcopy(self.__state[key])
+
+ def __len__(self):
+ return len(self.__state)
+
+ def apply(self, event):
+ event_type = event.get('type', None)
+
+ if not isinstance(event_type, str):
+ raise ValueError('Invalid event type.')
+
+ for name, reducer in self.__reducers.items():
+ old_state = self.__state[name]
+ self.__state[name] = reducer(old_state, event)
+
+ @property
+ def state(self):
+ return deepcopy(self.__state)
+
+ @property
+ def reducers(self):
+ return deepcopy(self.__reducers)
diff --git a/vendor/borela/__init__.py b/vendor/borela/__init__.py
new file mode 100644
index 00000000..f5467bc1
--- /dev/null
+++ b/vendor/borela/__init__.py
@@ -0,0 +1,18 @@
+# Licensed under the Apache License, Version 2.0 (the “License”); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+from .EventEngine import * # noqa
+from .EventSubscription import * # noqa
+from .functions import * # noqa
+from .logging import * # noqa
+from .Stack import * # noqa
+from .StateStore import * # noqa
diff --git a/vendor/borela/functions/__init__.py b/vendor/borela/functions/__init__.py
new file mode 100644
index 00000000..5d1123f2
--- /dev/null
+++ b/vendor/borela/functions/__init__.py
@@ -0,0 +1,30 @@
+# Licensed under the Apache License, Version 2.0 (the “License”); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+from .delete_dir import * # noqa
+from .delete_dir_contents import * # noqa
+from .dict_to_yaml_string import * # noqa
+from .ensure_dir_exists import * # noqa
+from .indent_string import * # noqa
+from .iterable_repr import * # noqa
+from .list_files import * # noqa
+from .load_yaml import * # noqa
+from .make_words_regex import * # noqa
+from .modify_path import * # noqa
+from .read_text_file import * # noqa
+from .replace_path_base import * # noqa
+from .replace_path_ext import * # noqa
+from .to_json_string import * # noqa
+from .to_plist_string import * # noqa
+from .to_xml_string import * # noqa
+from .trim_whitespace import * # noqa
+from .write_text_file import * # noqa
diff --git a/vendor/borela/functions/delete_dir.py b/vendor/borela/functions/delete_dir.py
new file mode 100644
index 00000000..7203cea7
--- /dev/null
+++ b/vendor/borela/functions/delete_dir.py
@@ -0,0 +1,18 @@
+# Licensed under the Apache License, Version 2.0 (the “License”); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+from os.path import exists
+from shutil import rmtree
+
+def delete_dir(dir_path):
+ if exists(dir_path):
+ rmtree(dir_path)
diff --git a/vendor/borela/functions/delete_dir_contents.py b/vendor/borela/functions/delete_dir_contents.py
new file mode 100644
index 00000000..031463fd
--- /dev/null
+++ b/vendor/borela/functions/delete_dir_contents.py
@@ -0,0 +1,34 @@
+# Licensed under the Apache License, Version 2.0 (the “License”); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+from os import (
+ listdir,
+ remove,
+)
+
+from os.path import (
+ exists,
+ join,
+)
+
+from shutil import rmtree
+
+def delete_dir_contents(dir_path):
+ if not exists(dir_path):
+ return
+
+ for node in listdir(dir_path):
+ full_path = join(dir_path, node)
+ try:
+ rmtree(full_path)
+ except OSError:
+ remove(full_path)
diff --git a/vendor/borela/functions/dict_to_yaml_string.py b/vendor/borela/functions/dict_to_yaml_string.py
new file mode 100644
index 00000000..5f1c60a0
--- /dev/null
+++ b/vendor/borela/functions/dict_to_yaml_string.py
@@ -0,0 +1,33 @@
+# Licensed under the Apache License, Version 2.0 (the “License”); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+from collections import OrderedDict
+from io import StringIO
+from ruamel.yaml import YAML
+from ruamel.yaml.scalarstring import walk_tree
+
+def dict_to_yaml_string(target_dict):
+ string_buffer = StringIO()
+
+ walk_tree(target_dict)
+
+ yaml = YAML()
+ yaml.version = (1, 2)
+ yaml.indent(mapping=2, sequence=4, offset=2)
+
+ yaml.Representer.add_representer(
+ OrderedDict,
+ yaml.Representer.represent_dict,
+ )
+
+ yaml.dump(target_dict, string_buffer)
+ return string_buffer.getvalue()
diff --git a/vendor/borela/functions/ensure_dir_exists.py b/vendor/borela/functions/ensure_dir_exists.py
new file mode 100644
index 00000000..2ee0585f
--- /dev/null
+++ b/vendor/borela/functions/ensure_dir_exists.py
@@ -0,0 +1,18 @@
+# Licensed under the Apache License, Version 2.0 (the “License”); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+from os import makedirs
+from os.path import exists
+
+def ensure_dir_exists(dir_path):
+ if not exists(dir_path):
+ makedirs(dir_path)
diff --git a/vendor/borela/functions/indent_string.py b/vendor/borela/functions/indent_string.py
new file mode 100644
index 00000000..dd245f22
--- /dev/null
+++ b/vendor/borela/functions/indent_string.py
@@ -0,0 +1,28 @@
+# Licensed under the Apache License, Version 2.0 (the “License”); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+from re import split
+
+def indent_string(
+ text,
+ amount=4,
+ spacer=' ',
+):
+ result = ''
+ spacer = spacer * amount
+
+ for line in split(r'\r?\n', text):
+ if result != '':
+ result += '\n'
+ result += '%s%s' % (spacer, line)
+
+ return result
diff --git a/vendor/borela/functions/iterable_repr.py b/vendor/borela/functions/iterable_repr.py
new file mode 100644
index 00000000..c90aab67
--- /dev/null
+++ b/vendor/borela/functions/iterable_repr.py
@@ -0,0 +1,20 @@
+# Licensed under the Apache License, Version 2.0 (the “License”); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+def iterable_repr(data):
+ result = ''
+ for item in data:
+ if result:
+ result += '\n'
+ result += repr(item)
+ return result
+
diff --git a/vendor/borela/functions/list_files.py b/vendor/borela/functions/list_files.py
new file mode 100644
index 00000000..2f0a5598
--- /dev/null
+++ b/vendor/borela/functions/list_files.py
@@ -0,0 +1,25 @@
+# Licensed under the Apache License, Version 2.0 (the “License”); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+from os import walk
+from os.path import join
+
+def list_files(dir_path, recursive=True):
+ if not recursive:
+ path, _, files = next(walk(dir_path))
+ for file in files:
+ yield join(path, file), path, file
+ return
+
+ for path, _, files in walk(dir_path):
+ for file in files:
+ yield join(path, file), path, file
diff --git a/vendor/borela/functions/load_yaml.py b/vendor/borela/functions/load_yaml.py
new file mode 100644
index 00000000..3f523d1f
--- /dev/null
+++ b/vendor/borela/functions/load_yaml.py
@@ -0,0 +1,62 @@
+# Licensed under the Apache License, Version 2.0 (the “License”); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+from ruamel.yaml import (
+ scalarstring,
+ YAML,
+)
+
+from ruamel.yaml.comments import LineCol
+from ruamel.yaml.constructor import RoundTripConstructor
+
+class DoubleQuotedScalarString(scalarstring.DoubleQuotedScalarString):
+ __slots__ = 'lc'
+
+class FoldedScalarString(scalarstring.FoldedScalarString):
+ __slots__ = 'lc'
+
+class LiteralScalarString(scalarstring.LiteralScalarString):
+ __slots__ = 'lc'
+
+class ScalarString(scalarstring.ScalarString):
+ __slots__ = 'lc'
+
+class SingleQuotedScalarString(scalarstring.SingleQuotedScalarString):
+ __slots__ = 'lc'
+
+class YamlConstructor(RoundTripConstructor):
+ def construct_scalar(self, node):
+ result = None
+
+ if node.style == '|':
+ result = LiteralScalarString(node.value)
+ elif node.style == '>':
+ result = FoldedScalarString(node.value.replace('\a', ''))
+ elif self._preserve_quotes:
+ if node.style == "'":
+ result = SingleQuotedScalarString(node.value)
+ elif node.style == '"':
+ result = DoubleQuotedScalarString(node.value)
+ else:
+ result = ScalarString(node.value)
+
+ result.lc = LineCol()
+ result.lc.line = node.start_mark.line
+ result.lc.col = node.start_mark.column
+
+ return result
+
+def load_yaml(file_path):
+ with open(file_path, 'r', encoding='utf-8') as file:
+ parser = YAML()
+ parser.Constructor = YamlConstructor
+ return parser.load(file)
diff --git a/vendor/borela/functions/make_words_regex.py b/vendor/borela/functions/make_words_regex.py
new file mode 100644
index 00000000..6b355a1f
--- /dev/null
+++ b/vendor/borela/functions/make_words_regex.py
@@ -0,0 +1,159 @@
+# Licensed under the Apache License, Version 2.0 (the “License”); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+from .indent_string import indent_string
+
+class Node:
+ __slots__ = [
+ # Character that this node represents. An empty string means that it
+ # is an optional group and “None” means the root node.
+ 'char',
+ 'children',
+ ]
+
+ def __init__(self, char=None):
+ self.char = char
+ self.children = []
+
+ def __repr__(self):
+ node_id = self.char
+
+ if self.char is None:
+ node_id = '[Root]'
+
+ if self.char == '':
+ node_id = '[Optional]'
+
+ if len(self.children) < 1:
+ return node_id
+
+ children_string = ''
+ for child in self.children:
+ children_string += '\n>> ' + repr(child)
+
+ return '%s%s' % (
+ node_id,
+ indent_string(children_string),
+ )
+
+def generate_pattern(node):
+ children_string = ''
+
+ for child in node.children:
+ if children_string:
+ children_string += '|'
+ children_string += generate_pattern(child)
+
+ if len(node.children) > 1:
+ children_string = '(?>%s)' % children_string
+
+ if node.char is None:
+ return r'\b%s\b' % children_string
+
+ if node.char == '':
+ if children_string.startswith('('):
+ return children_string + '?'
+ else:
+ return '(?:%s)?' % children_string
+
+ return node.char + children_string
+
+# Groups a list of words by their first character and remove it from the them.
+# This is used to construct the tree.
+def group_words(words):
+ if not words:
+ return words
+
+ if len(words) < 2 and not words[0]:
+ return []
+
+ # Optional group.
+ if words[0] == '':
+ node = Node('')
+ node.children = words[1:]
+ return [node]
+
+ char = None
+ node = None
+ result = []
+
+ for word in words:
+ if char is None or not word.startswith(char):
+ char = word[:1]
+ node = Node(char)
+ result.append(node)
+
+ word = word[1:]
+
+ if word == '' and node.children:
+ if node.children[0] == '':
+ # The only sittuation we will get here is if there are
+ # duplicated words.
+ continue
+
+ node.children.append(word)
+
+ return result
+
+# Transforms a list of words into an optimized regex, for example:
+#
+# foo
+# bar
+# baz
+# foobar
+# foobaz
+#
+# becomes:
+#
+# \b(?>ba(?>r|z)|foo(?:ba(?>r|z))?)\b
+def make_words_regex(words):
+ words.sort()
+ # This will turn the words into a tree grouping their parts by the left
+ # most character until each node is a single character.
+ tree = words_to_tree(words)
+ # Build the optimized regex.
+ return generate_pattern(tree)
+
+# Transforms the words into a tree:
+#
+# foo
+# bar
+# baz
+# foobar
+# foobaz
+#
+# becomes:
+#
+# [Root]
+# >> b
+# >> a
+# >> r
+# >> z
+# >> f
+# >> o
+# >> o
+# >> [Optional]
+# >> b
+# >> a
+# >> r
+# >> z
+def words_to_tree(words):
+ root = Node()
+ root.children = words
+
+ def group_children(node):
+ node.children = group_words(node.children)
+ for node in node.children:
+ group_children(node)
+
+ group_children(root)
+ return root
diff --git a/vendor/borela/functions/modify_path.py b/vendor/borela/functions/modify_path.py
new file mode 100644
index 00000000..4b0ffa4f
--- /dev/null
+++ b/vendor/borela/functions/modify_path.py
@@ -0,0 +1,27 @@
+# Licensed under the Apache License, Version 2.0 (the “License”); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+from .replace_path_base import replace_path_base
+from .replace_path_ext import replace_path_ext
+
+def modify_path(
+ path,
+ old_base,
+ new_base,
+ new_extension=None,
+):
+ path = replace_path_base(path, old_base, new_base)
+
+ if new_extension is not None:
+ path = replace_path_ext(path, new_extension)
+
+ return path
diff --git a/vendor/borela/functions/read_text_file.py b/vendor/borela/functions/read_text_file.py
new file mode 100644
index 00000000..4ca8034e
--- /dev/null
+++ b/vendor/borela/functions/read_text_file.py
@@ -0,0 +1,15 @@
+# Licensed under the Apache License, Version 2.0 (the “License”); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+def read_text_file(file_path, encoding='utf-8'):
+ with open(file_path, 'r', encoding=encoding) as file:
+ return file.read()
diff --git a/vendor/borela/functions/replace_path_base.py b/vendor/borela/functions/replace_path_base.py
new file mode 100644
index 00000000..4ebb1e3c
--- /dev/null
+++ b/vendor/borela/functions/replace_path_base.py
@@ -0,0 +1,20 @@
+# Licensed under the Apache License, Version 2.0 (the “License”); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+from os.path import (
+ join,
+ relpath,
+)
+
+def replace_path_base(path, old_base, new_base):
+ relative = relpath(path, old_base)
+ return join(new_base, relative)
diff --git a/vendor/borela/functions/replace_path_ext.py b/vendor/borela/functions/replace_path_ext.py
new file mode 100644
index 00000000..af2c27fc
--- /dev/null
+++ b/vendor/borela/functions/replace_path_ext.py
@@ -0,0 +1,17 @@
+# Licensed under the Apache License, Version 2.0 (the “License”); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+from os.path import splitext
+
+def replace_path_ext(path, new_extension):
+ base = splitext(path)[0]
+ return base + '.' + new_extension
diff --git a/vendor/borela/functions/to_json_string.py b/vendor/borela/functions/to_json_string.py
new file mode 100644
index 00000000..4d52120b
--- /dev/null
+++ b/vendor/borela/functions/to_json_string.py
@@ -0,0 +1,23 @@
+# Licensed under the Apache License, Version 2.0 (the “License”); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+from json import dumps
+
+# Convert a dictionary to a JSON string.
+def to_json_string(data, indent=False):
+ if indent:
+ return dumps(
+ data,
+ indent=2,
+ separators=(',', ': '),
+ )
+ return dumps(data)
diff --git a/vendor/borela/functions/to_plist_string.py b/vendor/borela/functions/to_plist_string.py
new file mode 100644
index 00000000..fac43fae
--- /dev/null
+++ b/vendor/borela/functions/to_plist_string.py
@@ -0,0 +1,120 @@
+# Licensed under the Apache License, Version 2.0 (the “License”); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+from lxml.etree import (
+ Element,
+ SubElement,
+)
+
+from ..Stack import Stack
+from .to_xml_string import to_xml_string
+from collections import OrderedDict
+
+# Prepare a common dictionary into a structure that represents a plist and is
+# simpler to convert to a XML tree:
+#
+# {
+# 'foo': true,
+# 'bar': 'baz'
+# }
+#
+# becomes:
+#
+# [
+# ('key', 'foo'),
+# ('bool', 'true'),
+# ('key', 'bar'),
+# ('string', 'baz'),
+# ]
+#
+# The result is an array of the key value pairs.
+def dict_to_plist_array(target_dict):
+ if not isinstance(target_dict, OrderedDict):
+ raise ValueError('Dictionary must be an OrderedDict.')
+
+ plist = []
+
+ # Queue containing a tupple: plist index, key, dictionary.
+ dict_queue = Stack()
+ dict_queue.push((0, None, target_dict))
+
+ i = -1
+ while len(dict_queue):
+ temp_list = []
+ j, dict_key, target_dict = dict_queue.pop()
+
+ for key, value in target_dict.items():
+ i += 1
+
+ # Defer dictionaries to the next “while” loop.
+ if isinstance(value, dict):
+ dict_queue.push((i, key, value))
+ continue
+
+ # Simple key value pairs.
+ if isinstance(value, bool):
+ temp_list.append(('key', key))
+ temp_list.append(('bool', value))
+ elif isinstance(value, int):
+ temp_list.append(('key', key))
+ temp_list.append(('integer', value))
+ elif isinstance(value, str):
+ temp_list.append(('key', key))
+ temp_list.append(('string', value))
+ else:
+ raise ValueError('Unexpected type “%s”.' % type(value))
+
+ if dict_key:
+ temp_list = [
+ ('key', dict_key),
+ ('dict', temp_list),
+ ]
+
+ plist[i:i] = temp_list
+
+ return plist
+
+# Convert a plist array to a XML tree that represents the plist.
+def plist_array_to_xml(nodes):
+ plist = Element('plist')
+ plist.attrib['version'] = '1.0'
+
+ nodes_queue = Stack()
+ nodes_queue.push((
+ SubElement(plist, 'dict'),
+ nodes
+ ))
+
+ while len(nodes_queue):
+ parent, nodes = nodes_queue.pop()
+
+ for node in nodes:
+ tag, value = node
+ node = SubElement(parent, tag)
+
+ if tag == 'dict':
+ nodes_queue.push((node, value))
+ continue
+
+ # Simple key value pairs.
+ node.text = str(value)
+
+ return plist
+
+# Convert a simple dictionary into a XML plist string.
+def to_plist_string(target_dict):
+ plist_array = dict_to_plist_array(target_dict)
+ xml = plist_array_to_xml(plist_array)
+ return to_xml_string(
+ xml,
+ indent=True,
+ )
diff --git a/vendor/borela/functions/to_xml_string.py b/vendor/borela/functions/to_xml_string.py
new file mode 100644
index 00000000..c667c7b2
--- /dev/null
+++ b/vendor/borela/functions/to_xml_string.py
@@ -0,0 +1,23 @@
+# Licensed under the Apache License, Version 2.0 (the “License”); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+from lxml.etree import tostring
+
+def to_xml_string(value, indent=False):
+ # Convert to a binary string.
+ result = tostring(
+ value,
+ encoding='utf-8',
+ pretty_print=indent,
+ )
+ # Convert to a normal string.
+ return result.decode('utf-8')
diff --git a/vendor/borela/functions/trim_whitespace.py b/vendor/borela/functions/trim_whitespace.py
new file mode 100644
index 00000000..5d292b04
--- /dev/null
+++ b/vendor/borela/functions/trim_whitespace.py
@@ -0,0 +1,18 @@
+# Licensed under the Apache License, Version 2.0 (the “License”); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+import re
+
+WHITESPACE = re.compile(r'\s')
+
+def trim_whitespace(text):
+ return WHITESPACE.sub('', text)
diff --git a/vendor/borela/functions/write_text_file.py b/vendor/borela/functions/write_text_file.py
new file mode 100644
index 00000000..6b9d2e88
--- /dev/null
+++ b/vendor/borela/functions/write_text_file.py
@@ -0,0 +1,27 @@
+# Licensed under the Apache License, Version 2.0 (the “License”); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+from . import ensure_dir_exists
+from os.path import dirname
+
+def write_text_file(
+ file_path,
+ data,
+ encoding='utf-8',
+ newline='\n',
+ create_dirs=True,
+):
+ if create_dirs:
+ ensure_dir_exists(dirname(file_path))
+
+ with open(file_path, 'w', encoding=encoding, newline=newline) as file:
+ return file.write(data)
diff --git a/vendor/borela/logging.py b/vendor/borela/logging.py
new file mode 100644
index 00000000..f8016e18
--- /dev/null
+++ b/vendor/borela/logging.py
@@ -0,0 +1,71 @@
+# Licensed under the Apache License, Version 2.0 (the “License”); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+import logging
+from datetime import datetime, timedelta
+
+global_level = 'DEBUG'
+time_start = datetime.now()
+time_end = time_start
+time_diff = timedelta()
+
+def get_log_level():
+ global global_level
+ return global_level
+
+def set_log_level(new_level):
+ global global_level
+ global_level = new_level
+
+def print_log_message(group, level, message):
+ global global_level, time_start, time_end, time_diff
+
+ # Get the log level as a number to make the comparison easier.
+ message_level = getattr(logging, level)
+ current_level = getattr(logging, global_level)
+
+ # If multiple messages are sent at the same second, we need to see the
+ # millisecond difference between them to enable easier profiling.
+ time_end = datetime.now()
+ time_diff = time_end - time_start
+
+ if time_diff > timedelta(seconds=1):
+ time_diff = timedelta()
+
+ if message_level >= current_level:
+ print('%s [%s:%s] +%ims: %s' % (
+ datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
+ group,
+ level,
+ time_diff.microseconds / 1000,
+ message,
+ ))
+
+ time_start = time_end
+
+def log(group, level, message):
+ print_log_message(group, level, message)
+
+def log_critical(message):
+ log('CRITICAL', message)
+
+def log_debug(message):
+ log('DEBUG', message)
+
+def log_error(message):
+ log('ERROR', message)
+
+def log_info(message):
+ log('INFO', message)
+
+def log_warning(message):
+ log('WARNING', message)
diff --git a/watch_settings.py b/watch_settings.py
new file mode 100644
index 00000000..c0053c5b
--- /dev/null
+++ b/watch_settings.py
@@ -0,0 +1,38 @@
+# Licensed under the Apache License, Version 2.0 (the “License”); you may not
+# use this file except in compliance with the License. You may obtain a copy of
+# the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an “AS IS” BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations under
+# the License.
+
+from Naomi.system.events import (
+ settings_loaded,
+ settings_updated,
+)
+
+from Naomi.system import (
+ EVENT_BUS,
+ log_info,
+)
+
+from sublime import load_settings
+
+def plugin_loaded():
+ SETTINGS = load_settings('Naomi.sublime-settings')
+ SETTINGS.add_on_change('naomi-settings-state', update_settings)
+ EVENT_BUS.emit(settings_loaded(SETTINGS))
+ log_info('Settings loaded.')
+
+def plugin_unloaded():
+ SETTINGS = load_settings('Naomi.sublime-settings')
+ SETTINGS.clear_on_change('naomi-settings-state')
+
+def update_settings():
+ SETTINGS = load_settings('Naomi.sublime-settings')
+ EVENT_BUS.emit(settings_updated(SETTINGS))
+ log_info('Settings updated.')